/* ===== app.wxss（全局）===== */
/* app.wxss */
/* app.wxss - 全局样式与设计变量 */
.mp-page {
  --gf-fs: 1;
  background: #f5f6f7;
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1));
  color: #1a1a1a;
  font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica Neue', sans-serif;
}

/* 主色：设计稿中的绿（确认按钮/选中态） */
.card { background: #fff; border-radius: calc(20 * var(--rpx)); overflow: hidden; }
.rating { color: #21a45d; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); }

/* 价格（橙） */
.price { font-weight: 700; color: #ff6b2b; }
.price .rmb { font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 500; }
.price .num { font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); }

/* 通用按钮 */
.btn-primary {
  background: #21a45d; color: #fff; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  border-radius: calc(44 * var(--rpx)); height: calc(84 * var(--rpx)); line-height: calc(84 * var(--rpx)); padding: 0;
}
.btn-warn {
  background: #fa5151; color: #fff; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  border-radius: calc(44 * var(--rpx)); height: calc(84 * var(--rpx)); line-height: calc(84 * var(--rpx)); padding: 0;
}
.btn-yellow {
  background: #ffd200; color: #333; font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  border-radius: calc(44 * var(--rpx)); height: calc(92 * var(--rpx)); line-height: calc(92 * var(--rpx)); padding: 0;
}
.btn-ghost {
  background: #fff; color: #666; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); border: calc(2 * var(--rpx)) solid #ddd;
  border-radius: calc(44 * var(--rpx)); height: calc(72 * var(--rpx)); line-height: calc(68 * var(--rpx)); padding: 0 calc(30 * var(--rpx));
}
.btn-mini {
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); padding: 0 calc(26 * var(--rpx)); height: calc(56 * var(--rpx)); line-height: calc(56 * var(--rpx));
  border-radius: calc(30 * var(--rpx)); display: inline-block; text-align: center;
}
.btn-mini.primary { background: #21a45d; color: #fff; }
.btn-mini.plain { border: calc(2 * var(--rpx)) solid #21a45d; color: #21a45d; }
.btn-mini.warn { border: calc(2 * var(--rpx)) solid #fa5151; color: #fa5151; }
.btn-mini.gray { border: calc(2 * var(--rpx)) solid #ddd; color: #666; }

/* 区块 */
.sec-head { display: flex; justify-content: space-between; align-items: baseline; margin: calc(36 * var(--rpx)) calc(4 * var(--rpx)) calc(20 * var(--rpx)); }
.sec-title { font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; }
.sec-more { font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }

/* 空状态 */
.empty { text-align: center; padding: calc(140 * var(--rpx)) 0; }
.empty .icon { font-size: calc(calc(80 * var(--rpx)) * var(--gf-fs, 1)); }
.empty .txt { color: #999; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); margin-top: calc(20 * var(--rpx)); }

/* 标签 */
.tag { font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; background: #e8f6ee; border-radius: calc(6 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(12 * var(--rpx)); margin-right: calc(10 * var(--rpx)); }
.tag.gold { color: #b8860b; background: #fdf3d7; }


/* ===== pages/home/home.wxss ===== */
.mp-page[data-route="pages/home/home"] /* pages/home/home.wxss */
/* 自定义导航栏：完全透明，标题与右侧胶囊按钮中线齐平 */
.nav-bar{
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  /* 纯透明占位层：放行触摸，避免盖住下方幻灯片导致顶部区域点击无反应 */
  pointer-events: none;
}
.mp-page[data-route="pages/home/home"] .nav-title{
  font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 800;
  color: #111;
  letter-spacing: calc(2 * var(--rpx));
  margin-top: calc(-6 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] /* ===== 主题变量 =====
   --gf-primary 是「选中态主色」：页签下划线、查询按钮、以及下方内容区的
   定位文字 / 开球日期 / 定位图标统一用它，保证「选中的标签」与「它下面的内容」
   是同一套视觉语言（用户 2026-10-07 反馈：选中标签是红的，下面的内容也应跟着红）。
   注意：必须写兜底值 var(--gf-primary,.mp-page[data-route="pages/home/home"] #fa5151) —— 变量未定义时颜色会失效。 */
.page{
  /* 选中态主色（页签下划线 / 查询按钮） */
  --gf-primary: #fa5151;
  /* 选中态白：页签选中底色与其下内容区背景共用。
     ⚠️ 必须是**不透明白**：.search-card 本身是半透明白(0.82)，
     若这里也用半透明，两层叠出的合成色与旁边未选中区不同，
     会在关键字行下方显出一条横向色阶线（用户 2026-10-07 反馈）。 */
  --gf-tab-active: #ffffff;
  padding: 0 calc(24 * var(--rpx)) calc(40 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] /* Hero 破框全宽，沉浸式顶图 */
.hero{ margin: 0 calc(-24 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] /* ===== 沉浸式 Hero：背景轮播 + 悬浮搜索卡 ===== */
/* 🔴 #645（2026-10-18 晚）用户改版：
     ① 幻灯片只占顶部、16:9（calc(750 * var(--rpx)) 宽 → calc(421 * var(--rpx)) 高），不再撑满整块 Hero；
     ② 搜索卡顶部只「盖过幻灯片一点」（calc(20 * var(--rpx))），原先被搜索模块盖住的幻灯片区域
        留白即可（Hero 背景 = 页面底色）；
     ③ 整个搜索模块（页签/行距/按钮区）高度压缩，视觉更紧凑。 */
.hero{
  position: relative;
  height: calc(860 * var(--rpx));
  border-radius: 0 0 calc(28 * var(--rpx)) calc(28 * var(--rpx));
  overflow: hidden;
}
.mp-page[data-route="pages/home/home"] .hero-swiper{
  position: absolute;
  left: 0; top: 0; right: 0;
  width: 100%;
  /* 16:9：750 × 9/16 ≈ calc(421 * var(--rpx))，只占顶部 */
  height: calc(421 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] .hero-slide{ width: 100%; height: 100%; }
.mp-page[data-route="pages/home/home"] .hero-dim{
  position: absolute;
  left: 0; top: 0; right: 0;
  height: calc(421 * var(--rpx));
  background: linear-gradient(180deg, rgba(0,0,0,0.18) 0%, rgba(0,0,0,0.06) 50%, rgba(0,0,0,0.28) 100%);
  pointer-events: none;
}
.mp-page[data-route="pages/home/home"] /* 搜索卡（白色半透明，悬浮在 Hero 底部；顶部只盖过幻灯片 calc(20 * var(--rpx))） */
.search-card{
  position: absolute;
  left: calc(24 * var(--rpx)); right: calc(24 * var(--rpx));
  top: calc(401 * var(--rpx));   /* = 幻灯片底 calc(421 * var(--rpx)) - calc(20 * var(--rpx)) 重叠 */
  bottom: calc(24 * var(--rpx));
  background: rgba(255, 255, 255, 0.82);
  -webkit-backdrop-filter: blur(calc(10 * var(--rpx)));
  backdrop-filter: blur(calc(10 * var(--rpx)));
  border-radius: calc(20 * var(--rpx));
  overflow: hidden;
  box-shadow: 0 calc(10 * var(--rpx)) calc(40 * var(--rpx)) rgba(0, 0, 0, 0.18);
}
.mp-page[data-route="pages/home/home"] /* 页签行：底部灰条，选中白底红字红下划线；4 等分 */
/* 页签行：浅灰底槽，选中项是「顶部圆角」的白色块（弧形卡片），
   并与其下方的白色内容区连成一整块 —— 参考设计稿的钟点房样式。
   圆角只做上方两角，下方与内容区贴合，才不会出现"白块浮在灰槽上"的割裂感。 */
.tabs{
  display: flex;
  background: rgba(226, 227, 229, 0.55);
  /* #645：页签行 115 → calc(96 * var(--rpx))，整个搜索模块更紧凑 */
  height: calc(96 * var(--rpx));
  /* ⚠️ ① 不要加左右 padding —— 会让首个页签不贴卡片左边缘，
        在左上角露出一条灰色残块（用户 2026-10-07 反馈）。
     ⚠️ ② 不要用 align-items:flex-end —— 那会让【所有】页签（含未选中）都贴底、
        文字明显偏下。未选中项要正常垂直居中，
        只有选中项用 .tab.on 的 align-self 单独贴底即可。 */
  align-items: stretch;
}
.mp-page[data-route="pages/home/home"] .tab{
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  color: #333;
  position: relative;
  /* 与 .tabs 等高 → align-items:center 才能真正垂直居中（未选中项不受弧形影响） */
  height: calc(96 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] .tab.on{
  /* 与下方 .tab-body 同一变量：选中标签与其下内容连成一整块白 */
  background: var(--gf-tab-active, #ffffff);
  color: #111;
  font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 700;
  /* 弧形：顶部两角圆角（calc(28 * var(--rpx))），形成"卡片翘起"的层次。
     下方两角必须是 0，否则与下方白色内容区之间会出现缺口。 */
  border-radius: calc(28 * var(--rpx)) calc(28 * var(--rpx)) 0 0;
  height: calc(96 * var(--rpx));
  align-self: flex-end;
}
.mp-page[data-route="pages/home/home"] .tab.on::after{
  content: '';
  position: absolute;
  bottom: calc(14 * var(--rpx));
  left: 50%;
  transform: translateX(-50%);
  width: calc(56 * var(--rpx));
  height: calc(6 * var(--rpx));
  border-radius: calc(3 * var(--rpx));
  background: var(--gf-primary, #fa5151);
}
.mp-page[data-route="pages/home/home"] /* 通用行 */
/* #645：行距 28 → calc(22 * var(--rpx))，模块更紧凑 */
.row{
  display: flex;
  align-items: center;
  margin: 0 calc(32 * var(--rpx));
  padding: calc(22 * var(--rpx)) 0;
  border-bottom: calc(1 * var(--rpx)) solid rgba(238, 238, 238, 0.6);
}
.mp-page[data-route="pages/home/home"] /* 定位行 */
/* 内容区（定位 / 日期 / 关键字）
   背景色必须与 .tab.on 的白底**完全一致**（同一个 rgba 值），
   否则选中标签与它下面的内容之间会出现一道色差接缝，看着像两块。
   --gf-tab-active 就是这个"选中态白"的单一真源，改一处即可全局同步。 */
/* 白色内容区：页签选中的白底一直延伸到查询按钮，形成完整一整块白。
   查询按钮嵌在这个白底里（见 wxml 的 .tab-foot），所以视觉上不是悬空的。 */
.tab-body{
  background: var(--gf-tab-active, #ffffff);
}
.mp-page[data-route="pages/home/home"] /* 按钮所在的白色区。与上方 .tab-body 同色同源，中间不留空隙 ——
   历史上 .row-kw（关键字行）的下外边距 + .query-btn 的上外边距会露出下层半透明底色，
   在内容区下方形成一条横贯整卡的色块（用户 2026-10-07 反馈）。
   2026-10-10 关键字行已删除，这组负 margin 净位移为 0（-16 上移背景 + 16 上内边距），
   保留是为了继续兜住查询按钮上边距万一被改动的情况。 */
.tab-foot{
  background: var(--gf-tab-active, #ffffff);
  margin-top: calc(-16 * var(--rpx));
  padding-top: calc(16 * var(--rpx));
  /* 左右 calc(35 * var(--rpx))：按钮 width:100% 撑满「卡片宽 - calc(70 * var(--rpx))」，占卡片约 90%
     （用户 2026-10-07 实测读数 card=calc(704 * var(--rpx))，要求 93% 太满、收到 90%）。
     宽度靠这里内缩 + 按钮 width:100%，不靠按钮自身 margin。*/
  padding-left: calc(35 * var(--rpx));
  padding-right: calc(35 * var(--rpx));
  /* #645：24 → calc(20 * var(--rpx))，模块更紧凑 */
  padding-bottom: calc(20 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] /* ===== 定位行（2026-10-10 用户改版）=====
   由「整行城市长文案 + 右侧竖排定位按钮」改为「左标签 + 右搜索框」：
     左：.loc-tag（.loc-ico 定位图标 在上，.loc-city 城市名 在下）
     右：.kw-box（放大镜 + 关键字/位置/球场名）
   ⚠️ 原「关键字行」整行已删除，搜索框并入本行。 */
.row-loc{ padding: calc(22 * var(--rpx)) 0; }
.mp-page[data-route="pages/home/home"] .loc-tag{
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  /* 城市名短的（深圳）不占多余宽度，把余量全让给右侧搜索框 */
  flex-shrink: 0;
}
.mp-page[data-route="pages/home/home"] .loc-ico{
  /* 触控热区（2026-10-12 二次放大，用户要求「要点整个 icon+位置标签」）：
     图形仍是 calc(42 * var(--rpx)) 居中，热区远大于图形 —— 图标视觉大小完全不变。
     为什么必须放大：原来热区是 calc(56 * var(--rpx))（≈28pt）的小方块，低于 44pt 的可用下限，
     手指稍偏就落到下面 .loc-city 上（打开城市选择页），用户看到的就是「点定位没反应」。
       ① align-self: stretch → 横向铺满 .loc-tag 整列（宽度跟随城市名，海外可达 calc(200 * var(--rpx))）；
       ② min-width: calc(88 * var(--rpx))  → 城市名很短（「深圳」只 calc(56 * var(--rpx)) 宽）时也保证 ≥44pt 的横向热区；
       ③ height 56 → calc(72 * var(--rpx))（28 → 36pt），纵向也够点。
     整列剩余空白由 .loc-tag 自己的 catchtap 承接（见 wxml 注释）。 */
  align-self: stretch;
  min-width: calc(88 * var(--rpx));
  height: calc(72 * var(--rpx));
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%233a7afe%22%20stroke-width%3D%222.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M21%2010c0%207-9%2013-9%2013S3%2017%203%2010a9%209%200%201%201%2018%200z%22/%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2210%22%20r%3D%223.2%22/%3E%3C/svg%3E");
  background-size: calc(42 * var(--rpx)) calc(42 * var(--rpx));
  background-repeat: no-repeat;
  background-position: center;
}
.mp-page[data-route="pages/home/home"] .loc-city{
  margin-top: calc(2 * var(--rpx));
  /* 热区同样铺满整列宽（文字仍居中）—— 与上面的图标热区拼成「上=定位 / 下=换城市」
     两段完整覆盖，不留空档：否则点在城市名左右那 calc(16 * var(--rpx)) 空白会冒泡到 .loc-tag。 */
  align-self: stretch;
  /* 2026-10-12 海外目的地名拆两行后字号放大：24→calc(28 * var(--rpx))；宽度放宽让「九州（樱花季）」一行放得下 */
  max-width: calc(200 * var(--rpx));
  /* 国内=城市名（深圳，1 行）；海外=国家+目的地两行（JS 已把「·」换成 \n，<text> 渲染为换行） */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  word-break: break-all;
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 700;
  line-height: 1.3;
  color: #3a7afe;
  text-align: center;
}
.mp-page[data-route="pages/home/home"] .loc-city.ph{ color: #b0b3b8; font-weight: 500; }
.mp-page[data-route="pages/home/home"] /* 搜索框：样式与球场列表页的搜索条一致（同一个视觉语言，不另造一套） */
.kw-box{
  flex: 1;
  /* flex 子项默认 min-width:auto，长 placeholder 会把盒子撑破 → 必须显式归零 */
  min-width: 0;
  display: flex;
  align-items: center;
  box-sizing: border-box;
  height: calc(80 * var(--rpx));
  margin-left: calc(20 * var(--rpx));
  padding: 0 calc(26 * var(--rpx));
  background: #f2f3f5;
  border-radius: calc(40 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] /* 放大镜：纯 CSS 画（圆 + 45° 手柄），不依赖任何图片文件 ——
   后台/子路径下的相对路径图会 404，这个坑踩过。 */
.kw-ico{
  width: calc(26 * var(--rpx)); height: calc(26 * var(--rpx));
  border: calc(3 * var(--rpx)) solid #9aa0a6;
  border-radius: 50%;
  position: relative;
  margin-right: calc(14 * var(--rpx));
  flex-shrink: 0;
}
.mp-page[data-route="pages/home/home"] .kw-ico::after{
  content: '';
  position: absolute;
  right: calc(-9 * var(--rpx)); bottom: calc(-6 * var(--rpx));
  width: calc(14 * var(--rpx)); height: calc(3 * var(--rpx));
  background: #9aa0a6;
  border-radius: calc(2 * var(--rpx));
  transform: rotate(45deg);
}
.mp-page[data-route="pages/home/home"] /* 日期行 —— 关键字行删除后它是卡片内容的**最后一行**，
   必须去掉 .row 自带的底部分隔线，否则查询按钮上方会多一条横线。 */
.row-date{ padding: calc(22 * var(--rpx)) 0; border-bottom: 0; }
.mp-page[data-route="pages/home/home"] /* 🔴 #645：日历图标（纯 CSS 内联 SVG，与 .loc-ico/.kw-ico 同一套做法，不依赖图片文件）。
   替代原文字标签「开球日期/出行日期」——图标无语义切换成本，页签切换视觉不变。
   🔴 #646：margin-left calc(24 * var(--rpx)) —— 与上方定位图标中心线对齐（.loc-ico 列 min-width calc(88 * var(--rpx))
   且图形居中：列中心=calc(32 * var(--rpx))页边距+calc(44 * var(--rpx))；日历 calc(40 * var(--rpx)) 宽 → 左缘=32+44-20=calc(56 * var(--rpx))，
   即页边距内再缩 (88-40)/2=calc(24 * var(--rpx))）。城市名比 calc(88 * var(--rpx)) 宽时按列中心浮动，此为常态对齐。 */
.date-ico{
  width: calc(40 * var(--rpx));
  height: calc(40 * var(--rpx));
  margin-left: calc(24 * var(--rpx));
  margin-right: calc(20 * var(--rpx));
  flex-shrink: 0;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23111%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%224.5%22%20width%3D%2218%22%20height%3D%2216%22%20rx%3D%222.5%22/%3E%3Cpath%20d%3D%22M3%209.5h18%22/%3E%3Cpath%20d%3D%22M8%202.5v4M16%202.5v4%22/%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}
.mp-page[data-route="pages/home/home"] .date-value{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); color: #222; font-weight: 500; }
.mp-page[data-route="pages/home/home"] /* 关键字输入框：已并入定位行右侧的 .kw-box（不再单独占一行） */
.kw-input{
  flex: 1;
  /* 同上：input 默认 min-width:auto，长 placeholder 会顶破搜索框 */
  min-width: 0;
  height: calc(80 * var(--rpx));
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1));
  color: #222;
  /* 小程序原生 input 自带一条灰下划线，这里显式去掉 —— 它不随父级样式走，
     不写这两行就会在搜索框里留下一条横线。 */
  border-bottom: 0;
  background: transparent;
}
.mp-page[data-route="pages/home/home"] .kw-input::after{ border: none; }
.mp-page[data-route="pages/home/home"] .kw-ph{ color: #b0b3b8; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/home/home"] /* 查询按钮 */
/* 查询按钮：撑满白色内容区，方便单手拇指点击（用户 2026-10-07）。
   宽度链：.page 750-48=702 → .hero 破框 → .search-card left/right calc(24 * var(--rpx))=702
        → .tab-foot padding calc(24 * var(--rpx)) → 可用 calc(654 * var(--rpx)) → 按钮 width:100% = calc(654 * var(--rpx))（占卡片 93%）。
   高度/ 圆角 / 字号 / 右侧装饰均按设计稿保持不变。 */
.query-btn{
  position: relative;
  display: block;
  /* ⚠️ 关键：wxml 里已从 <button> 改成 <view class="query-btn">。
     原生 button 内置 margin-left/right:auto + padding-left/right:14px，
     会让 width:100% 算出的实际宽度比预期窄很多（真机实测按钮只占卡片 52%，
     左右各空 calc(150 * var(--rpx))+）。<view> 无这些默认样式，宽度完全由下面四行决定。 */
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  height: calc(90 * var(--rpx));
  background: var(--gf-primary, #fa5151);
  color: #fff;
  /* 从 <button> 改成 <view> 后不再自带 text-align:center，必须显式写，
     否则「查 询」会靠左、离居中很远。 */
  text-align: center;
  font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600;
  line-height: calc(90 * var(--rpx));
  letter-spacing: calc(6 * var(--rpx));
  /* 胶囊：高度 calc(90 * var(--rpx))，圆角取一半 = calc(45 * var(--rpx)) */
  border-radius: calc(45 * var(--rpx));
  /* 裁掉贴边装饰，使其贴合按钮圆角 */
  overflow: hidden;
}
.mp-page[data-route="pages/home/home"] /* 文字层：压在装饰之上，保证「查 询」始终清晰居中 */
.query-btn-text{
  position: relative;
  z-index: 2;
  display: inline-block;
}
.mp-page[data-route="pages/home/home"] /* 右侧装饰簇：三个错落的半透明浅色圆，贴按钮右缘 */
.qb-art{
  position: absolute;
  right: 0; bottom: 0;
  width: calc(88 * var(--rpx)); height: calc(90 * var(--rpx));
  z-index: 1;
  pointer-events: none;
}
.mp-page[data-route="pages/home/home"] .qb-art .qb-c{
  position: absolute;
  display: block;
  border-radius: 50%;
  background: rgba(255, 255, 255, .30);
}
.mp-page[data-route="pages/home/home"] /* 大圆：贴右下角 */
.qb-art .qb-c:nth-child(1){ right: calc(-16 * var(--rpx)); bottom: calc(-22 * var(--rpx)); width: calc(72 * var(--rpx)); height: calc(72 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] /* 中圆：偏右上 */
.qb-art .qb-c:nth-child(2){ right: calc(22 * var(--rpx)); bottom: calc(6 * var(--rpx)); width: calc(52 * var(--rpx)); height: calc(52 * var(--rpx)); background: rgba(255,255,255,.36); }
.mp-page[data-route="pages/home/home"] /* 小圆：偏左，与大圆叠出层次 */
.qb-art .qb-c:nth-child(3){ right: calc(2 * var(--rpx)); bottom: calc(26 * var(--rpx)); width: calc(34 * var(--rpx)); height: calc(34 * var(--rpx)); background: rgba(255,255,255,.26); }
.mp-page[data-route="pages/home/home"] /* ===== Banner 轮播 ===== */
.banner{
  margin-top: calc(28 * var(--rpx));
  height: calc(400 * var(--rpx));
  border-radius: calc(20 * var(--rpx));
  overflow: hidden;
}
.mp-page[data-route="pages/home/home"] .banner-img{ width: 100%; height: 100%; }
.mp-page[data-route="pages/home/home"] .per{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/home/home"] /* ===== 附近推荐：大图压字卡 ===== */
.sec-head{ display: flex; justify-content: space-between; align-items: baseline; margin: calc(40 * var(--rpx)) calc(4 * var(--rpx)) calc(20 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .sec-title{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; }
.mp-page[data-route="pages/home/home"] .sec-more{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/home/home"] .near-card{
  position: relative;
  border-radius: calc(20 * var(--rpx));
  overflow: hidden;
  margin-bottom: calc(22 * var(--rpx));
  height: calc(280 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] .near-img{ width: 100%; height: 100%; }
.mp-page[data-route="pages/home/home"] .near-mask{
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 25%, rgba(0,0,0,0.62) 100%);
}
.mp-page[data-route="pages/home/home"] .near-body{ position: absolute; left: calc(26 * var(--rpx)); right: calc(26 * var(--rpx)); bottom: calc(20 * var(--rpx)); color: #fff; }
.mp-page[data-route="pages/home/home"] /* 🔴 2026-10-27 用户定案：附近推荐卡片标题**只占一行**，超出用省略号。
   原来限 2 行，长名（如「东莞大卫利百特球场-东莞观澜湖高尔夫度假村」）会换行压到下方简介上（用户截图）。 */
.near-name{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; text-shadow: 0 calc(2 * var(--rpx)) calc(8 * var(--rpx)) rgba(0,0,0,0.4); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-page[data-route="pages/home/home"] .near-intro{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); opacity: 0.92; margin-top: calc(8 * var(--rpx));
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden;
}
.mp-page[data-route="pages/home/home"] .near-meta{ display: flex; gap: calc(28 * var(--rpx)); margin-top: calc(10 * var(--rpx)); font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); opacity: 0.95; }
.mp-page[data-route="pages/home/home"] /* ===== 最近热门：两列，价在上名在下（百分比+space-between，兼容各机型） ===== */
.hot-grid{ display: flex; flex-wrap: wrap; justify-content: space-between; }
.mp-page[data-route="pages/home/home"] .hot-item{ width: 48.6%; box-sizing: border-box; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] /* 图片 + 推荐理由角标（2026-10-08：改顶部对齐裁切，保护图上「必打榜」圆形标识）
   ⚠️ 不要改回 aspectFill —— 部分球场实拍图右上角烧录了圆形榜单标识，
   而那些图是 1:1 正方形、卡片容器是横向 1.52，aspectFill 上下居中裁切会把顶部标识切掉一半。
   现在 widthFix（原始比例、顶部对齐）+ 容器 overflow:hidden，裁切只发生在底部。 */
.hot-imgwrap{
  position: relative;
  width: 100%; height: calc(220 * var(--rpx));
  overflow: hidden;
  /* 极端宽图（比例 > 1.52）用 widthFix 底部会露白，铺一个中性底色兜住，不留突兀空隙 */
  background: #eef1ef;
}
.mp-page[data-route="pages/home/home"] .hot-img{ display: block; width: 100%; }
.mp-page[data-route="pages/home/home"] /* 角标压在图左上角，模仿小红书/大众点评的「榜单认证」标签 */
.hot-tag{
  position: absolute; left: 0; top: 0;
  padding: calc(4 * var(--rpx)) calc(12 * var(--rpx)) calc(6 * var(--rpx));
  font-size: calc(calc(19 * var(--rpx)) * var(--gf-fs, 1));
  color: #fff; background: rgba(255, 107, 43, 0.92);
  border-bottom-right-radius: calc(12 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] .hot-body{ padding: calc(14 * var(--rpx)) calc(18 * var(--rpx)) calc(18 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .hot-body .price{ margin-bottom: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .hot-body .rmb{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #ff6b2b; font-weight: 600; }
.mp-page[data-route="pages/home/home"] .hot-body .num{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); color: #ff6b2b; font-weight: 700; }
.mp-page[data-route="pages/home/home"] /* 嘉宾价划线对照（2026-10-08：嘉宾价 + 会员价对所有人显示） */
.hot-body .guest-price{
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #b8bcc2;
  text-decoration: line-through; margin: calc(-2 * var(--rpx)) 0 calc(6 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] .hot-name{
  font-size: calc(calc(25 * var(--rpx)) * var(--gf-fs, 1)); color: #555;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mp-page[data-route="pages/home/home"] /* 城市/国家副标题（2026-10-08 新增）：帮用户判断「推荐的是不是我能去的地方」 */
.hot-city{
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #b8bcc2; margin-top: calc(4 * var(--rpx));
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mp-page[data-route="pages/home/home"] /* 推荐结果为空时的兜底（正常不会发生：引擎有降级排序） */
.hot-empty{ padding: calc(60 * var(--rpx)) calc(30 * var(--rpx)); text-align: center; }
.mp-page[data-route="pages/home/home"] .hot-empty-t{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/home/home"] /* ===== 发现精彩：双列瀑布流（图上文下） ===== */
.falls{ display: flex; justify-content: space-between; }
.mp-page[data-route="pages/home/home"] .falls-col{ width: 48.6%; }
.mp-page[data-route="pages/home/home"] .pick-card{
  border-radius: calc(16 * var(--rpx));
  overflow: hidden;
  margin-bottom: calc(20 * var(--rpx));
  background: #fff;
  box-shadow: 0 calc(4 * var(--rpx)) calc(20 * var(--rpx)) rgba(0,0,0,0.06);
}
.mp-page[data-route="pages/home/home"] /* 错落高度：h1 矮 / h2 中 / h3 高 */
.pick-img{ width: 100%; display: block; }
.mp-page[data-route="pages/home/home"] .pick-img.h1{ height: calc(320 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .pick-img.h2{ height: calc(400 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .pick-img.h3{ height: calc(470 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .pick-text{
  padding: calc(18 * var(--rpx)) calc(20 * var(--rpx)) calc(4 * var(--rpx));
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #444; line-height: 1.55;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;
}
.mp-page[data-route="pages/home/home"] .pick-foot{
  display: flex; align-items: center;
  padding: calc(14 * var(--rpx)) calc(20 * var(--rpx)) calc(20 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] .pick-avatar{ width: calc(44 * var(--rpx)); height: calc(44 * var(--rpx)); border-radius: 50%; flex-shrink: 0; }
.mp-page[data-route="pages/home/home"] .pick-user{
  flex: 1; min-width: 0; margin-left: calc(12 * var(--rpx));
  font-size: calc(calc(23 * var(--rpx)) * var(--gf-fs, 1)); color: #999;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mp-page[data-route="pages/home/home"] .pick-likes{ font-size: calc(calc(23 * var(--rpx)) * var(--gf-fs, 1)); color: #b8bcc2; flex-shrink: 0; }
.mp-page[data-route="pages/home/home"] .per{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/home/home"] /* ---- 套票页签：附近热门套票卡 ---- */
.hpkg-card{
  margin: 0 calc(30 * var(--rpx)) calc(28 * var(--rpx));
  background: #fff; border-radius: calc(18 * var(--rpx)); overflow: hidden;
  box-shadow: 0 calc(4 * var(--rpx)) calc(18 * var(--rpx)) rgba(0,0,0,0.05);
}
.mp-page[data-route="pages/home/home"] .hpkg-img{ width: 100%; height: calc(260 * var(--rpx)); display: block; }
.mp-page[data-route="pages/home/home"] .hpkg-body{ padding: calc(20 * var(--rpx)) calc(24 * var(--rpx)) calc(24 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .hpkg-name{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/home/home"] .hpkg-quote{
  /* ⚠️ 原来写成 `var(--gf-fs, 1)` 少了第二个右括号 → calc 整体失效，
     这行字号不跟随微信系统字号缩放。已修正。 */
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #888; margin-top: calc(10 * var(--rpx));
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mp-page[data-route="pages/home/home"] /* 定位标签（2026-10-07）：取套餐所含球场的城市 + 距离 */
.hpkg-meta{
  display: flex; align-items: baseline; gap: calc(12 * var(--rpx)); margin-top: calc(8 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] .hpkg-place{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mp-page[data-route="pages/home/home"] .hpkg-dist{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; flex-shrink: 0;
}
.mp-page[data-route="pages/home/home"] .hpkg-price{ display: flex; align-items: baseline; justify-content: flex-end; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .hpkg-tag{
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: #ff4d4f;
  border-radius: calc(6 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(10 * var(--rpx)); margin-right: calc(12 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] .hpkg-rmb{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #ff4d4f; font-weight: 600; }
.mp-page[data-route="pages/home/home"] .hpkg-num{ font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); color: #ff4d4f; font-weight: 700; }
.mp-page[data-route="pages/home/home"] .hpkg-qi{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-left: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] /* 缺价套餐/球场（inquiry_only）：只显示「电询」，不露 ¥0（2026-10-08） */
.hpkg-inquiry{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #7a8b85; font-weight: 600; letter-spacing: calc(2 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] /* 嘉宾价划线对照（2026-10-08：嘉宾价 + 会员价对所有人显示） */
.hpkg-guest{
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb;
  text-decoration: line-through; margin-left: calc(10 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] /* ===== 底部品牌 SLOGAN ===== */
.slogan{
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: calc(44 * var(--rpx)) 0 calc(12 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] .sl-en{
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 700;
  letter-spacing: calc(6 * var(--rpx));
  color: #1f7a4d;
}
.mp-page[data-route="pages/home/home"] .sl-cn{
  margin-top: calc(10 * var(--rpx));
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  letter-spacing: calc(3 * var(--rpx));
  color: #8a9099;
}
.mp-page[data-route="pages/home/home"] /* 附近推荐 / 邻国热门 空状态 */
.near-empty{
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: calc(56 * var(--rpx)) calc(40 * var(--rpx)); margin: 0 calc(24 * var(--rpx)); background: #fff; border-radius: calc(20 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] .near-empty-ico{ font-size: calc(calc(64 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1; margin-bottom: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .near-empty-txt{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #8a9099; text-align: center; line-height: 1.6; }
.mp-page[data-route="pages/home/home"] .near-empty-btn{
  margin-top: calc(24 * var(--rpx)); padding: calc(14 * var(--rpx)) calc(40 * var(--rpx)); border-radius: calc(40 * var(--rpx));
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; border: calc(2 * var(--rpx)) solid #21a45d;
}
.mp-page[data-route="pages/home/home"] /* ===== 套票推荐：单列 → 双列并排（2026-10-07 用户要求）=====
   原来每张卡占满宽度（图 calc(260 * var(--rpx)) 高），一屏只能看到 1 张。
   改为 flex 两列：图缩到 calc(200 * var(--rpx))、信息区压缩，两列并排一屏看 4 张。
   🔴 2026-10-09 用户反馈：原来 grid 自带 padding 0 calc(30 * var(--rpx))，叠加 .page 的 calc(24 * var(--rpx))
   后两侧各 calc(54 * var(--rpx))，而中缝仅 calc(16 * var(--rpx)) → 视觉「外宽中窄」且与上下区块不齐。
   现去掉自带 padding（回归 .page 统一 calc(24 * var(--rpx))），中缝改 calc(24 * var(--rpx))：
   左 24 / 中 24 / 右 24 完全统一，与「最近热门」双列（外 24 / 缝约 20）一致。 */
.hpkg-grid{
  display: flex;
  flex-wrap: wrap;
}
.mp-page[data-route="pages/home/home"] .hpkg-grid .hpkg-card{
  /* width:100% 是 flex 下撑满一行的写法；改成 calc 让两列各占一半 */
  width: calc(50% - calc(12 * var(--rpx)));  /* 每列占 50% 减去一半缝宽(calc(24 * var(--rpx))) */
  margin: 0 0 calc(16 * var(--rpx));
  border-radius: calc(14 * var(--rpx));
  box-shadow: 0 calc(3 * var(--rpx)) calc(12 * var(--rpx)) rgba(0, 0, 0, 0.05);
}
.mp-page[data-route="pages/home/home"] /* 奇数列贴左（自己带右边距 calc(24 * var(--rpx)) 形成中缝），偶数列靠右不留 */
.hpkg-grid .hpkg-card:nth-child(odd){ margin-right: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .hpkg-grid .hpkg-card:nth-child(even){ margin-right: 0; }
.mp-page[data-route="pages/home/home"] .hpkg-grid .hpkg-img{ height: calc(200 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .hpkg-grid .hpkg-body{ padding: calc(14 * var(--rpx)) calc(16 * var(--rpx)) calc(18 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] /* 双列后标题空间变窄，最多两行，超出省略（单行会显得很挤且信息不全） */
.hpkg-grid .hpkg-name{
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
  line-height: 1.4;
  min-height: calc(calc(72 * var(--rpx)) * var(--gf-fs, 1));
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
.mp-page[data-route="pages/home/home"] .hpkg-grid .hpkg-quote{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1));
  margin-top: calc(6 * var(--rpx));
}
.mp-page[data-route="pages/home/home"] .hpkg-grid .hpkg-price{
  margin-top: calc(8 * var(--rpx));
  /* 双列时「套票价」标签 + 价格横排放不下，改为只留价格靠左对齐 */
  justify-content: flex-start;
  flex-wrap: wrap;
}
.mp-page[data-route="pages/home/home"] /* 双列下「套票价」标签缩小但保留 —— 直接隐藏会丢失「这个价格是套票价」的语义 */
.hpkg-grid .hpkg-tag{ font-size: calc(calc(18 * var(--rpx)) * var(--gf-fs, 1)); padding: calc(2 * var(--rpx)) calc(6 * var(--rpx)); margin-right: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/home/home"] .hpkg-grid .hpkg-num{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); }

/* ===== pages/profile/profile.wxss ===== */
.mp-page[data-route="pages/profile/profile"] /* pages/profile/profile.wxss */
/* pages/profile/profile.wxss —— 「我」页（按设计稿） */
.page{ padding-bottom: calc(40 * var(--rpx)); background: #f5f6f7; min-height: 100dvh; }
.mp-page[data-route="pages/profile/profile"] /* ---- 头图 banner ---- */
.hero{ position: relative; height: calc(430 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .hero-bg{ width: 100%; height: 100%; }
.mp-page[data-route="pages/profile/profile"] .hero-mask{ position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0.08), rgba(0,0,0,0.45)); }
.mp-page[data-route="pages/profile/profile"] /* 🔴 2026-10-11：左上角「回首页」按钮（.home-btn / .home-ico）已删除 ——
   「我的」是 tabBar 页，底部 tab「果夫」即首页，该按钮冗余。
   随之删掉的是它唯一依赖的 `--nav-top`（定位依据）。 */
.hero-body{ position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.mp-page[data-route="pages/profile/profile"] .hero-t{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #fff; text-shadow: 0 calc(2 * var(--rpx)) calc(12 * var(--rpx)) rgba(0,0,0,0.4); }
.mp-page[data-route="pages/profile/profile"] .hero-btns{ display: flex; gap: calc(24 * var(--rpx)); margin-top: calc(30 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .hb{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); border-radius: calc(36 * var(--rpx)); height: calc(68 * var(--rpx)); line-height: calc(68 * var(--rpx)); padding: 0 calc(40 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pages/profile/profile"] .hb.yellow{ background: #ffd200; color: #333; font-weight: 600; }
.mp-page[data-route="pages/profile/profile"] .hb.outline{ border: calc(2 * var(--rpx)) solid rgba(255,255,255,0.9); color: #fff; }
.mp-page[data-route="pages/profile/profile"] /* 已登录态 */
.avatar{ width: calc(130 * var(--rpx)); height: calc(130 * var(--rpx)); border-radius: 50%; border: calc(4 * var(--rpx)) solid rgba(255,255,255,0.7); }
.mp-page[data-route="pages/profile/profile"] .nick{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #fff; margin-top: calc(18 * var(--rpx)); text-shadow: 0 calc(2 * var(--rpx)) calc(10 * var(--rpx)) rgba(0,0,0,0.4); }
.mp-page[data-route="pages/profile/profile"] .phone{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: rgba(255,255,255,0.9); margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .bind-btn{
  margin-top: calc(22 * var(--rpx)); height: calc(64 * var(--rpx)); line-height: calc(64 * var(--rpx)); padding: 0 calc(36 * var(--rpx));
  background: rgba(255,255,255,0.92); color: #b8860b; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  border-radius: calc(32 * var(--rpx));
}
.mp-page[data-route="pages/profile/profile"] .bind-btn::after{ border: none; }
.mp-page[data-route="pages/profile/profile"] /* ---- 宫格 ---- */
.block{ margin: calc(24 * var(--rpx)); padding: calc(24 * var(--rpx)) calc(12 * var(--rpx)); background: #fff; border-radius: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .grid4{ display: flex; flex-wrap: wrap; }
.mp-page[data-route="pages/profile/profile"] .gitem{ width: 25%; text-align: center; padding: calc(22 * var(--rpx)) 0; }
.mp-page[data-route="pages/profile/profile"] .gicon-img{ width: calc(52 * var(--rpx)); height: calc(52 * var(--rpx)); margin: 0 auto; background-size: contain; background-repeat: no-repeat; background-position: center; }
.mp-page[data-route="pages/profile/profile"] .glabel{ font-size: calc(calc(23 * var(--rpx)) * var(--gf-fs, 1)); color: #555; margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] /* ---- 品牌卡 ---- */
.brand{ margin: calc(24 * var(--rpx)); padding: calc(44 * var(--rpx)) calc(28 * var(--rpx)) calc(36 * var(--rpx)); text-align: center; background: #fff; border-radius: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .brand-t{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #666; }
.mp-page[data-route="pages/profile/profile"] .brand-s{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .brand-icons{ display: flex; justify-content: center; gap: calc(40 * var(--rpx)); margin-top: calc(34 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .bi{ display: flex; flex-direction: column; align-items: center; }
.mp-page[data-route="pages/profile/profile"] .bi-ico{ width: calc(46 * var(--rpx)); height: calc(46 * var(--rpx)); background-size: contain; background-repeat: no-repeat; background-position: center; }
.mp-page[data-route="pages/profile/profile"] .bi-label{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #888; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .brand-link{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #aaa; margin-top: calc(34 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] /* ---- 金色会员卡 ---- */
.vcard{
  margin: calc(-40 * var(--rpx)) calc(24 * var(--rpx)) calc(20 * var(--rpx)); position: relative; z-index: 3;
  background: linear-gradient(135deg, #f0d89b 0%, #d8b96a 55%, #c9a452 100%);
  border-radius: calc(20 * var(--rpx)); padding: calc(26 * var(--rpx)) calc(30 * var(--rpx)) calc(22 * var(--rpx));
  box-shadow: 0 calc(10 * var(--rpx)) calc(30 * var(--rpx)) rgba(201,164,82,0.35);
}
.mp-page[data-route="pages/profile/profile"] .vc-top{ display: flex; justify-content: space-between; align-items: center; }
.mp-page[data-route="pages/profile/profile"] .vc-member{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #5a4517; letter-spacing: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .vc-qr{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #5a4517; background: rgba(255,255,255,0.45);
  border-radius: calc(999 * var(--rpx)); padding: calc(8 * var(--rpx)) calc(20 * var(--rpx));
}
.mp-page[data-route="pages/profile/profile"] .vc-row{ display: flex; align-items: flex-end; justify-content: space-between; margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .vc-level{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #3f3010; }
.mp-page[data-route="pages/profile/profile"] .vc-badge{
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: #21a45d;
  border-radius: calc(999 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(12 * var(--rpx)); margin-left: calc(12 * var(--rpx)); font-weight: 400;
}
.mp-page[data-route="pages/profile/profile"] .vc-no{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #7a5f26; margin-top: calc(8 * var(--rpx)); letter-spacing: calc(2 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .vc-bei{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #3f3010; }
.mp-page[data-route="pages/profile/profile"] .vc-bei-t{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 400; color: #7a5f26; }
.mp-page[data-route="pages/profile/profile"] .vc-foot{ display: flex; justify-content: space-between; margin-top: calc(18 * var(--rpx)); padding-top: calc(16 * var(--rpx)); border-top: calc(2 * var(--rpx)) dashed rgba(90,69,23,0.35); }
.mp-page[data-route="pages/profile/profile"] .vc-perk{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #5a4517; }
.mp-page[data-route="pages/profile/profile"] .vc-more{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #5a4517; font-weight: 600; }
.mp-page[data-route="pages/profile/profile"] /* ---- 统计行 ---- */
.stats{ display: flex; }
.mp-page[data-route="pages/profile/profile"] .stat{ flex: 1; text-align: center; padding: calc(10 * var(--rpx)) 0; }
.mp-page[data-route="pages/profile/profile"] .stat-n{ display: block; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/profile/profile"] .stat-t{ display: block; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] /* ---- 高球足迹 + 高球英雄榜（双栏搭配入口，2026-10-10） ----
   ⚠️ 与 .card 同用时靠「定义顺序在后」覆盖 padding（两个都是单类选择器，同权重）。
   左右两栏共用 .duo-i 的 flex:1 + min-width:0，副文案才敢用 nowrap + 省略号。 */
.duo{ display: flex; align-items: stretch; padding: calc(30 * var(--rpx)) 0 calc(26 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .duo-i{
  flex: 1; min-width: 0; overflow: hidden;
  display: flex; flex-direction: column; align-items: center; text-align: center;
  padding: 0 calc(14 * var(--rpx)); box-sizing: border-box;
}
.mp-page[data-route="pages/profile/profile"] .duo-line{ width: calc(2 * var(--rpx)); background: #eef0f2; margin: calc(10 * var(--rpx)) 0; flex-shrink: 0; }
.mp-page[data-route="pages/profile/profile"] .duo-ico{
  width: calc(92 * var(--rpx)); height: calc(92 * var(--rpx)); border-radius: calc(26 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(48 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/profile/profile"] /* 左：亮绿（球场 / 打卡）｜右：深绿（荣誉 / 排名）—— 同尺寸色块，成对搭配 */
.ico-fp{ background: linear-gradient(135deg, #2fb96b, #0f6b3f); box-shadow: 0 calc(8 * var(--rpx)) calc(18 * var(--rpx)) rgba(33,164,93,.28); }
.mp-page[data-route="pages/profile/profile"] .ico-rk{ background: linear-gradient(135deg, #21a45d, #0f2a1c); box-shadow: 0 calc(8 * var(--rpx)) calc(18 * var(--rpx)) rgba(33,164,93,.28); }
.mp-page[data-route="pages/profile/profile"] .duo-t{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222; margin-top: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .duo-s{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(8 * var(--rpx));
  max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mp-page[data-route="pages/profile/profile"] /* 登录简化后：头像昵称区可点击进资料页补填（2026-10-07） */
.hero-body .user-brief{
  display: flex;
  flex-direction: column;
  align-items: center;
  cursor: pointer;
}
.mp-page[data-route="pages/profile/profile"] /* ---- 版本号小字（页面最底部，2026-10-14）----
   🔴 唯一目的：自证「开发者工具/真机预览跑的是不是最新修复包」。
   所以它必须**真的看得见**：
     · custom-tab-bar 是 position:fixed（不占布局，高约 calc(94 * var(--rpx)) + 底部安全区），
       这里主动让出这段高度 —— 否则文字正好压在 tabBar 底下，「有这行但看不见」等于没加。
       两行 padding-bottom 是有意的：第一条给不支持 env() 的基础库兜底，第二条才是正确值。
     · 底部用 env(safe-area-inset-bottom) 是允许的（铁律里的禁令只针对**顶部**，
       见 utils/navbar.js）。custom-tab-bar 自己也用同一个变量，两侧留白才对得上。
     · 字号一律 calc(NRrpx * var(--gf-fs,.mp-page[data-route="pages/profile/profile"] 1))，颜色取最浅一档，不抢内容。 */
.verline{
  margin: calc(4 * var(--rpx)) calc(24 * var(--rpx)) 0;
  padding-bottom: calc(96 * var(--rpx));
  padding-bottom: calc(calc(96 * var(--rpx)) + env(safe-area-inset-bottom));
  text-align: center;
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1));
  color: #c4c8cc;
  letter-spacing: calc(1 * var(--rpx));
}
.mp-page[data-route="pages/profile/profile"] /* ⛳ 球会服务入口（㊿+49）：整行卡片，icon + 文案 + 箭头 */
.clubsvc{ display: flex; align-items: center; padding: calc(28 * var(--rpx)) calc(30 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .clubsvc-ico{ width: calc(84 * var(--rpx)); height: calc(84 * var(--rpx)); border-radius: calc(22 * var(--rpx)); background: #e3f3ea; font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.mp-page[data-route="pages/profile/profile"] .clubsvc-mid{ flex: 1; min-width: 0; margin-left: calc(22 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .clubsvc-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222; }
.mp-page[data-route="pages/profile/profile"] .clubsvc-s{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #8b968f; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/profile/profile"] .clubsvc-arrow{ color: #c4c8cc; font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); margin-left: calc(16 * var(--rpx)); }

/* ===== pages/courses/courses.wxss ===== */
.mp-page[data-route="pages/courses/courses"] /* pages/courses/courses.wxss */
.page{ min-height: 100dvh; width: 100%; box-sizing: border-box; overflow-x: hidden; background: #f5f6f7; padding-bottom: calc(40 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] /* 吸顶头部：三联选择器 + 搜索 + 排序 + 标签上滑后固定顶部
   🔴 通栏全白（2026-10-12 用户反馈）：搜索区左右不留灰边，与排序行连成一体 */
.sticky-header{
  position: sticky;
  top: 0;
  z-index: 100;
  background: #fff;
}
.mp-page[data-route="pages/courses/courses"] /* ===== 搜索条：OTA 横向一体化搜索条（通栏全白、零圆角零投影） ===== */
.search-card{
  margin: 0;
  max-width: 100%;
  overflow: hidden;
  background: #fff;
}
.mp-page[data-route="pages/courses/courses"] /* 单排：位置/日期 · 搜索框 · 地图入口；上方留白收窄（2026-10-12 用户反馈） */
.search-top{
  display: flex;
  align-items: center;
  padding: calc(10 * var(--rpx)) calc(24 * var(--rpx)) calc(12 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] /* 左侧信息区：位置 / 日期 / 时间 */
.info-group{
  display: flex;
  align-items: center;
  min-width: 0;
  max-width: 56%;
  flex-shrink: 1;
}
.mp-page[data-route="pages/courses/courses"] .info-col{
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0 calc(18 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] .info-label{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1));
  color: #999;
  margin-bottom: calc(8 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] .info-val{
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  color: #111;
  font-weight: 600;
  white-space: nowrap;
  max-width: calc(180 * var(--rpx));
  overflow: hidden;
  text-overflow: ellipsis;
}
.mp-page[data-route="pages/courses/courses"] .info-row{
  display: flex;
  align-items: center;
  height: calc(36 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] .info-row-val{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1));
  color: #111;
  font-weight: 600;
  white-space: nowrap;
}
.mp-page[data-route="pages/courses/courses"] .info-row-val.week{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  color: #999;
  font-weight: 400;
}
.mp-page[data-route="pages/courses/courses"] .info-divider{
  width: calc(1 * var(--rpx));
  height: calc(70 * var(--rpx));
  background: #eee;
}
.mp-page[data-route="pages/courses/courses"] /* 搜索框：与位置/日期同行，占据中间弹性空间 */
.search-box{
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  background: #f2f3f5;
  border-radius: calc(40 * var(--rpx));
  padding: calc(14 * var(--rpx)) calc(22 * var(--rpx));
  margin: 0 calc(12 * var(--rpx)) 0 calc(16 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] .s-ico{
  width: calc(26 * var(--rpx)); height: calc(26 * var(--rpx));
  border: calc(3 * var(--rpx)) solid #b9bdc4;
  border-radius: 50%;
  position: relative;
  margin-right: calc(14 * var(--rpx));
  flex-shrink: 0;
}
.mp-page[data-route="pages/courses/courses"] .s-ico::after{
  content: '';
  position: absolute;
  right: calc(-9 * var(--rpx)); bottom: calc(-6 * var(--rpx));
  width: calc(14 * var(--rpx)); height: calc(3 * var(--rpx));
  background: #b9bdc4;
  transform: rotate(45deg);
  border-radius: calc(2 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] .s-input{ flex: 1; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/courses/courses"] .s-ph{ color: #b9bdc4; }
.mp-page[data-route="pages/courses/courses"] /* 右侧地图入口 */
.map-entry{ margin-left: calc(4 * var(--rpx)); text-align: center; width: calc(76 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/courses/courses"] .map-ico{
  width: calc(40 * var(--rpx)); height: calc(40 * var(--rpx));
  margin: 0 auto;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23555555%22%20stroke-width%3D%222.4%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M21%2010c0%207-9%2013-9%2013S3%2017%203%2010a9%209%200%201%201%2018%200z%22/%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2210%22%20r%3D%223%22/%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}
.mp-page[data-route="pages/courses/courses"] .map-txt{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #555; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] /* ===== 排序行 ===== */
.sortbar{
  display: flex; align-items: center;
  background: #fff;
  padding: calc(20 * var(--rpx)) calc(24 * var(--rpx)) calc(6 * var(--rpx));
  border-bottom: calc(1 * var(--rpx)) solid #f5f5f5;
}
.mp-page[data-route="pages/courses/courses"] .sort-item{
  flex: 1;
  justify-content: center;
  margin-right: 0;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  color: #333;
  display: flex; align-items: center;
  position: relative;
}
.mp-page[data-route="pages/courses/courses"] .sort-item.on{ color: #111; font-weight: 700; }
.mp-page[data-route="pages/courses/courses"] .caret-s{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-left: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .badge{
  margin-left: calc(8 * var(--rpx));
  min-width: calc(30 * var(--rpx)); height: calc(30 * var(--rpx));
  line-height: calc(30 * var(--rpx));
  background: #fa5151;
  color: #fff;
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1));
  border-radius: calc(15 * var(--rpx));
  text-align: center;
  padding: 0 calc(6 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] /* 服务标签横滑样式已于 2026-10-12 随整块 UI 删除 */

/* ===== 球场卡片 ===== */
.list{ padding: calc(20 * var(--rpx)) calc(20 * var(--rpx)) 0; }
.mp-page[data-route="pages/courses/courses"] .course-card{
  display: flex;
  background: #fff;
  border-radius: calc(16 * var(--rpx));
  overflow: hidden;
  margin-bottom: calc(20 * var(--rpx));
  box-shadow: 0 calc(4 * var(--rpx)) calc(16 * var(--rpx)) rgba(0,0,0,0.04);
}
.mp-page[data-route="pages/courses/courses"] .cc-img{ width: calc(216 * var(--rpx)); height: calc(262 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/courses/courses"] /* 🔴 2026-10-27：左上角标元素常驻 WXML（H5 宽屏 4 列时压在图左上角），
   小程序竖屏是「左图右文」的窄条，橙色角标压在 calc(216 * var(--rpx)) 的方图上会盖住主体，
   故默认隐藏；H5 宽屏由 build.js 里的 #mp-app.mp-wide-app 规则重新打开。 */
.cc-badge{ display: none; }
.mp-page[data-route="pages/courses/courses"] .cc-body{ flex: 1; min-width: 0; padding: calc(20 * var(--rpx)) calc(22 * var(--rpx)) calc(18 * var(--rpx)); display: flex; flex-direction: column; }
.mp-page[data-route="pages/courses/courses"] .cc-name{
  font-size: calc(calc(31 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mp-page[data-route="pages/courses/courses"] .cc-en{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #b0b3b8; margin-top: calc(4 * var(--rpx)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-page[data-route="pages/courses/courses"] /* 星级：绿色高尔夫球（full/half/empty） */
.cc-stars{ display: flex; align-items: center; gap: calc(8 * var(--rpx)); margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .star{
  width: calc(30 * var(--rpx)); height: calc(30 * var(--rpx));
  border-radius: 50%;
  position: relative;
}
.mp-page[data-route="pages/courses/courses"] .star.f{ background: #21a45d; }
.mp-page[data-route="pages/courses/courses"] .star.h{ background: linear-gradient(90deg, #21a45d 50%, #e2e4e6 50%); }
.mp-page[data-route="pages/courses/courses"] .star.e{ background: #e2e4e6; }
.mp-page[data-route="pages/courses/courses"] .star.f::after,.mp-page[data-route="pages/courses/courses"] .star.h::after{
  content: '';
  position: absolute;
  left: calc(7 * var(--rpx)); top: calc(8 * var(--rpx));
  width: calc(5 * var(--rpx)); height: calc(5 * var(--rpx));
  border-radius: 50%;
  box-shadow: calc(8 * var(--rpx)) calc(-2 * var(--rpx)) 0 #ffffffcc, calc(-1 * var(--rpx)) calc(7 * var(--rpx)) 0 #ffffffcc, calc(9 * var(--rpx)) calc(8 * var(--rpx)) 0 #ffffffcc;
  background: transparent;
}
.mp-page[data-route="pages/courses/courses"] .cc-rating{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-left: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .cc-mid{ flex: 1; display: flex; align-items: flex-end; justify-content: space-between; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .cc-quote{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  max-width: calc(240 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] /* 报价包含项：彩色 emoji 小图标（果岭费/球童费/球车费/更衣室…，与详情页一致） */
.cc-facs{ display: flex; gap: calc(10 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/courses/courses"] .qie{
  width: calc(44 * var(--rpx)); height: calc(40 * var(--rpx));
  border: calc(2 * var(--rpx)) solid #e3e5e8;
  border-radius: calc(8 * var(--rpx));
  background: #fafbfc;
  display: flex; align-items: center; justify-content: center;
}
.mp-page[data-route="pages/courses/courses"] .qie-emo{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1; }
.mp-page[data-route="pages/courses/courses"] /* 定制图片图标（球童费）：与 calc(28 * var(--rpx)) emoji 同尺寸，圆角贴合图标底图 */
/* #646（2026-10-18 晚）：球童定制图 calc(38 * var(--rpx))（30→44 真机偏大回调，用户确认口径），
   比同行 emoji（calc(28 * var(--rpx))）略大，人物图标作为定制图更醒目但不撑行 */
.qie-img{ width: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); height: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); border-radius: calc(8 * var(--rpx)); display: block; }
.mp-page[data-route="pages/courses/courses"] /* 🔴 2026-10-26（用户定案）：**距离/车程与价格同一行** ——
   左「➤ 离市区 xx / 🚗 车程」，右价格竖排两行（¥xxx 起 → 下面「会员价」小字）。
   比再占一行矮一行，卡片更紧凑；baseline 对齐让左侧文字与价格数字同基，视觉不歪。 */
.cc-price{
  display: flex; align-items: baseline; justify-content: space-between;
  margin-top: calc(8 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] .cc-price-l{ display: flex; align-items: baseline; min-width: 0; overflow: hidden; white-space: nowrap; }
.mp-page[data-route="pages/courses/courses"] .cc-dist,.mp-page[data-route="pages/courses/courses"] .cc-drive{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-right: calc(22 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .cc-dist{ flex-shrink: 0; }
.mp-page[data-route="pages/courses/courses"] .cc-drive{ margin-right: 0; flex-shrink: 0; }
.mp-page[data-route="pages/courses/courses"] /* 右侧价格列：价格在上、「会员价」说明在下，整体右对齐且不压缩 */
.cc-price-r{ display: flex; flex-direction: column; align-items: flex-end; flex-shrink: 0; margin-left: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .cc-pnum{ display: flex; align-items: baseline; white-space: nowrap; }
.mp-page[data-route="pages/courses/courses"] /* 「会员价」说明：金色小字，弱化不抢主价格（去掉边框角标，
   边框挤在数字旁边在窄屏最容易顶到卡片边缘）。 */
.cc-ptag{
  font-size: calc(calc(18 * var(--rpx)) * var(--gf-fs, 1));
  color: #b8944a;
  line-height: 1.2;
  margin-top: calc(2 * var(--rpx));
  white-space: nowrap;
}
.mp-page[data-route="pages/courses/courses"] /* 🔴 2026-10-26：列表卡不再展示划线嘉宾价（用户定案只显示会员价），
   样式随之删除，避免留下无引用的死样式。 */
.cc-price .rmb{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #ff6b2b; font-weight: 600; }
.mp-page[data-route="pages/courses/courses"] .cc-price .num{ font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); color: #ff6b2b; font-weight: 700; }
.mp-page[data-route="pages/courses/courses"] .cc-price .qi{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/courses/courses"] /* ===== 排序下拉面板 ===== */
.sort-wrap{ position: relative; z-index: 30; background: #fff; }
.mp-page[data-route="pages/courses/courses"] .caret-s.up{ transform: rotate(180deg); }
.mp-page[data-route="pages/courses/courses"] .sort-item.open{ color: #3b7bff; font-weight: 700; }
.mp-page[data-route="pages/courses/courses"] .sort-item.open .caret-s{ color: #3b7bff; }
.mp-page[data-route="pages/courses/courses"] .dd-mask{
  position: absolute; left: 0; right: 0; top: 100%; height: 200dvh;
  background: rgba(0, 0, 0, 0.32);
  z-index: 20;
}
.mp-page[data-route="pages/courses/courses"] .dd{
  position: absolute; left: 0; right: 0; top: 100%;
  background: #fff;
  border-radius: 0 0 calc(20 * var(--rpx)) calc(20 * var(--rpx));
  box-shadow: 0 calc(12 * var(--rpx)) calc(28 * var(--rpx)) rgba(0, 0, 0, 0.1);
  padding: calc(6 * var(--rpx)) 0 calc(10 * var(--rpx));
  z-index: 40;
  animation: ddIn 0.18s ease-out;
}

@keyframes ddIn { from { opacity: 0; transform: translateY(calc(-10 * var(--rpx))); } to { opacity: 1; transform: none; } }
.mp-page[data-route="pages/courses/courses"] .dd-row{
  text-align: center;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  color: #333;
  padding: calc(26 * var(--rpx)) 0;
  border-bottom: calc(1 * var(--rpx)) solid #f2f3f5;
}
.mp-page[data-route="pages/courses/courses"] .dd-row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/courses/courses"] .dd-row.on{ color: #3b7bff; font-weight: 700; }
.mp-page[data-route="pages/courses/courses"] /* 筛选下拉（与排序下拉一致） */
.dd-filter{ padding: calc(20 * var(--rpx)) calc(24 * var(--rpx)) calc(16 * var(--rpx)); max-height: 66dvh; overflow-y: auto; }
.mp-page[data-route="pages/courses/courses"] .dd-grp{ margin-bottom: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .dd-grp-name{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin: calc(8 * var(--rpx)) 0 calc(14 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .dd-chips{ display: flex; flex-wrap: wrap; gap: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .dd-chip{
  padding: calc(14 * var(--rpx)) calc(28 * var(--rpx)); border-radius: calc(10 * var(--rpx)); background: #f4f5f6; color: #333;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/courses/courses"] .dd-chip.on{ background: #21a45d; color: #fff; font-weight: 600; }
.mp-page[data-route="pages/courses/courses"] .dd-actions{ display: flex; gap: calc(24 * var(--rpx)); margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .dd-btn{ flex: 1; height: calc(84 * var(--rpx)); line-height: calc(84 * var(--rpx)); text-align: center; border-radius: calc(12 * var(--rpx)); font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; }
.mp-page[data-route="pages/courses/courses"] .dd-btn.reset{ background: #fff; color: #333; border: calc(1 * var(--rpx)) solid #ddd; }
.mp-page[data-route="pages/courses/courses"] .dd-btn.ok{ background: #21a45d; color: #fff; }
.mp-page[data-route="pages/courses/courses"] /* 星级面板 */
.dd-star{ padding: calc(28 * var(--rpx)) calc(24 * var(--rpx)) calc(24 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .star-chips{ display: flex; flex-wrap: wrap; gap: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .star-chip{
  padding: calc(14 * var(--rpx)) calc(30 * var(--rpx));
  border-radius: calc(10 * var(--rpx));
  background: #f4f5f6;
  color: #333;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/courses/courses"] .star-chip.on{ background: #21a45d; color: #fff; font-weight: 600; }
.mp-page[data-route="pages/courses/courses"] .star-tip{
  text-align: right;
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  color: #3b7bff;
  margin-top: calc(26 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] .star-btns{ display: flex; gap: calc(24 * var(--rpx)); margin-top: calc(26 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] .star-btn{
  flex: 1;
  height: calc(84 * var(--rpx));
  line-height: calc(84 * var(--rpx));
  text-align: center;
  border-radius: calc(12 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600;
}
.mp-page[data-route="pages/courses/courses"] .star-btn.reset{ background: #fff; color: #333; border: calc(1 * var(--rpx)) solid #ddd; }
.mp-page[data-route="pages/courses/courses"] .star-btn.ok{ background: #21a45d; color: #fff; }
.mp-page[data-route="pages/courses/courses"] /* 空态 */
.empty{ text-align: center; padding: calc(120 * var(--rpx)) 0; }
.mp-page[data-route="pages/courses/courses"] .empty-golf{ font-size: calc(calc(80 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/courses/courses"] .empty-txt{ color: #999; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/courses/courses"] /* 云端同步状态提示 */
.sync-tip{
  margin: calc(16 * var(--rpx)) calc(20 * var(--rpx)) calc(4 * var(--rpx));
  padding: calc(16 * var(--rpx)) calc(22 * var(--rpx));
  border-radius: calc(10 * var(--rpx));
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  line-height: 1.5;
}
.mp-page[data-route="pages/courses/courses"] .sync-tip.ok{ background: #f2fbf6; color: #1a8a4f; border: calc(1 * var(--rpx)) solid #d6efe0; }
.mp-page[data-route="pages/courses/courses"] .sync-tip.err{ background: #fff5f5; color: #d94343; border: calc(1 * var(--rpx)) solid #f3d4d4; }
.mp-page[data-route="pages/courses/courses"] /* ===== 搜索历史（#647，一行即可）=====
   关键字为空时出现在搜索卡下方：横向滚动的词卡行，右侧 × 清空。
   词卡热区纵向 ≥calc(44 * var(--rpx))，避免点不中。 */
.sh-row{
  white-space: nowrap;
  margin: calc(14 * var(--rpx)) calc(20 * var(--rpx)) 0;
  padding: 0 calc(2 * var(--rpx));
  box-sizing: border-box;
}
.mp-page[data-route="pages/courses/courses"] .sh-chip{
  display: inline-flex;
  align-items: center;
  height: calc(56 * var(--rpx));
  padding: 0 calc(26 * var(--rpx));
  margin-right: calc(16 * var(--rpx));
  background: #f2f3f5;
  border-radius: calc(28 * var(--rpx));
  vertical-align: middle;
}
.mp-page[data-route="pages/courses/courses"] .sh-txt{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  color: #444;
  max-width: calc(240 * var(--rpx));
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mp-page[data-route="pages/courses/courses"] .sh-clear{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: calc(56 * var(--rpx));
  height: calc(56 * var(--rpx));
  border-radius: 50%;
  background: #eceef0;
  color: #999;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  vertical-align: middle;
}
.mp-page[data-route="pages/courses/courses"] /* 加载更多（15k+ 家分段渲染） */
.loadmore{
  text-align: center; padding: calc(28 * var(--rpx)) 0; margin: calc(16 * var(--rpx)) calc(24 * var(--rpx)) calc(40 * var(--rpx));
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d;
  background: #f2fbf6; border: calc(1 * var(--rpx)) solid #d6efe0; border-radius: calc(12 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] .loadmore.done{ color: #999; background: #f7f7f7; border-color: #eee; }
.mp-page[data-route="pages/courses/courses"] /* 纯会员制球场：列表卡价格位显示「电询」而不是 ¥0（2026-10-07） */
.cc-price .cc-inquiry{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1));
  color: #d97706;
  font-weight: 600;
  border: calc(2 * var(--rpx)) solid #fde3b8;
  background: #fff7ed;
  border-radius: calc(24 * var(--rpx));
  padding: calc(2 * var(--rpx)) calc(16 * var(--rpx));
}
.mp-page[data-route="pages/courses/courses"] /* 会员价提示条 .mp-tip 及子样式（.mp-tip / .mp-tip-lv / .mp-tip-tx / .mp-tip-go /
   .mp-note-lv / .mp-tip.plain 变体）已于 2026-10-08 随横幅整块删除 —— wxml 里已无引用。
   若日后要恢复，规则见 git 历史或本目录备份；重建时注意别把「基础价」写进用户可见文案
   （术语守卫 tools/check_price_terms.py）。 */
/* 🔴 2026-10-26 列表卡价格占位（目录报价未就绪）：灰字，不露兜底价 */
.cc-wait{ color: #d3d8d5; }

/* ===== pages/calendar/calendar.wxss ===== */
.mp-page[data-route="pages/calendar/calendar"] /* pages/calendar/calendar.wxss */
.page{ padding-bottom: calc(200 * var(--rpx)); }
.mp-page[data-route="pages/calendar/calendar"] .week-head{ display: flex; background: #fff; padding: calc(20 * var(--rpx)) 0; position: sticky; top: 0; z-index: 2; }
.mp-page[data-route="pages/calendar/calendar"] .wh-item{ flex: 1; text-align: center; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/calendar/calendar"] .month{ background: #fff; margin-top: calc(16 * var(--rpx)); padding: calc(20 * var(--rpx)) calc(12 * var(--rpx)) calc(28 * var(--rpx)); }
.mp-page[data-route="pages/calendar/calendar"] .month-title{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; padding: 0 calc(16 * var(--rpx)) calc(16 * var(--rpx)); }
.mp-page[data-route="pages/calendar/calendar"] .grid{ display: flex; flex-wrap: wrap; }
.mp-page[data-route="pages/calendar/calendar"] .cell{
  width: 14.28%; min-height: calc(108 * var(--rpx)); display: flex; flex-direction: column;
  align-items: center; justify-content: center; position: relative;
}
.mp-page[data-route="pages/calendar/calendar"] .cell.empty{ pointer-events: none; }
.mp-page[data-route="pages/calendar/calendar"] .d{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; }
.mp-page[data-route="pages/calendar/calendar"] .p{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #ff6b2b; }
.mp-page[data-route="pages/calendar/calendar"] .p .rmb{ font-size: calc(calc(16 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/calendar/calendar"] .cell.weekend .d{ color: #3b6d11; }
.mp-page[data-route="pages/calendar/calendar"] .cell.in-range{ background: #eef4e6; }
.mp-page[data-route="pages/calendar/calendar"] .cell.start,.mp-page[data-route="pages/calendar/calendar"] .cell.end{ background: #3b6d11; border-radius: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/calendar/calendar"] .cell.start .d,.mp-page[data-route="pages/calendar/calendar"] .cell.end .d,.mp-page[data-route="pages/calendar/calendar"] .cell.start .p,.mp-page[data-route="pages/calendar/calendar"] .cell.end .p{ color: #fff; }
.mp-page[data-route="pages/calendar/calendar"] .cell.start{ border-radius: calc(12 * var(--rpx)) 0 0 calc(12 * var(--rpx)); }
.mp-page[data-route="pages/calendar/calendar"] .cell.end{ border-radius: 0 calc(12 * var(--rpx)) calc(12 * var(--rpx)) 0; }
.mp-page[data-route="pages/calendar/calendar"] .cell.start.end{ border-radius: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/calendar/calendar"] .cell.disabled{ opacity: 0.3; pointer-events: none; }
.mp-page[data-route="pages/calendar/calendar"] .footer{
  position: fixed; left: 0; right: 0; bottom: 0; background: #fff;
  padding: calc(20 * var(--rpx)) calc(24 * var(--rpx)) calc(calc(20 * var(--rpx)) + env(safe-area-inset-bottom));
  box-shadow: 0 calc(-4 * var(--rpx)) calc(20 * var(--rpx)) rgba(0,0,0,0.06);
  display: flex; align-items: center;
}
.mp-page[data-route="pages/calendar/calendar"] .tip{ flex: 1; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/calendar/calendar"] .footer-btns{ display: flex; }
.mp-page[data-route="pages/calendar/calendar"] .btn-clear{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); background: #f2f2f2; color: #666; border-radius: calc(36 * var(--rpx)) 0 0 calc(36 * var(--rpx)); padding: 0 calc(32 * var(--rpx)); height: calc(76 * var(--rpx)); line-height: calc(76 * var(--rpx)); }
.mp-page[data-route="pages/calendar/calendar"] .btn-ok{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); background: #3b6d11; color: #fff; border-radius: 0 calc(36 * var(--rpx)) calc(36 * var(--rpx)) 0; padding: 0 calc(44 * var(--rpx)); height: calc(76 * var(--rpx)); line-height: calc(76 * var(--rpx)); }
.mp-page[data-route="pages/calendar/calendar"] .btn-ok[disabled]{ background: #c3d4ab; color: #fff; }

/* ===== pages/filter/filter.wxss ===== */
.mp-page[data-route="pages/filter/filter"] /* pages/filter/filter.wxss */
/* 筛选页：左侧导航 + 右侧分组 */
.mp-page{ background: #fff; }
.mp-page[data-route="pages/filter/filter"] .page{ display: flex; height: 100dvh; background: #fff; }
.mp-page[data-route="pages/filter/filter"] /* 左侧分类导航 */
.side{
  width: calc(176 * var(--rpx));
  flex-shrink: 0;
  background: #f4f5f6;
  height: 100%;
}
.mp-page[data-route="pages/filter/filter"] .side-item{
  height: calc(100 * var(--rpx));
  line-height: calc(100 * var(--rpx));
  text-align: center;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
  color: #555;
  position: relative;
}
.mp-page[data-route="pages/filter/filter"] .side-item.on{
  background: #fff;
  color: #111;
  font-weight: 700;
}
.mp-page[data-route="pages/filter/filter"] .side-item.on::before{
  content: '';
  position: absolute;
  left: 0; top: calc(26 * var(--rpx)); bottom: calc(26 * var(--rpx));
  width: calc(6 * var(--rpx));
  border-radius: calc(3 * var(--rpx));
  background: #21a45d;
}
.mp-page[data-route="pages/filter/filter"] /* 右侧分组 */
.main{
  flex: 1;
  min-width: 0;
  height: 100%;
  background: #fff;
}
.mp-page[data-route="pages/filter/filter"] .grp{ padding: calc(8 * var(--rpx)) calc(24 * var(--rpx)) 0 calc(32 * var(--rpx)); }
.mp-page[data-route="pages/filter/filter"] .grp-head{
  display: flex;
  align-items: center;
  padding: calc(28 * var(--rpx)) 0 calc(18 * var(--rpx));
}
.mp-page[data-route="pages/filter/filter"] .grp-title{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #111; }
.mp-page[data-route="pages/filter/filter"] .grp-toggle{ margin-left: auto; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #3b7bff; }
.mp-page[data-route="pages/filter/filter"] .opts{ display: flex; flex-wrap: wrap; gap: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/filter/filter"] .opt{
  width: calc((100% - calc(36 * var(--rpx))) / 3);
  box-sizing: border-box;
  min-height: calc(76 * var(--rpx));
  padding: calc(10 * var(--rpx)) calc(8 * var(--rpx));
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  background: #f4f5f6;
  border-radius: calc(8 * var(--rpx));
  font-size: calc(calc(25 * var(--rpx)) * var(--gf-fs, 1));
  color: #333;
  line-height: 1.3;
  word-break: break-all;
}
.mp-page[data-route="pages/filter/filter"] .opt.on{ background: #21a45d; color: #fff; font-weight: 600; }
.mp-page[data-route="pages/filter/filter"] .opt.hide{ display: none; }
.mp-page[data-route="pages/filter/filter"] .pad-bottom{ height: calc(160 * var(--rpx)); }
.mp-page[data-route="pages/filter/filter"] /* 底部 重置/确认 */
.footbar{
  position: fixed;
  left: 0; right: 0; bottom: 0;
  display: flex;
  gap: calc(24 * var(--rpx));
  padding: calc(16 * var(--rpx)) calc(24 * var(--rpx)) calc(calc(16 * var(--rpx)) + env(safe-area-inset-bottom));
  background: #fff;
  border-top: calc(1 * var(--rpx)) solid #f0f0f0;
  z-index: 10;
}
.mp-page[data-route="pages/filter/filter"] .fbtn{
  flex: 1;
  height: calc(84 * var(--rpx));
  line-height: calc(84 * var(--rpx));
  text-align: center;
  border-radius: calc(12 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600;
}
.mp-page[data-route="pages/filter/filter"] .fbtn.reset{ background: #fff; color: #333; border: calc(1 * var(--rpx)) solid #ddd; }
.mp-page[data-route="pages/filter/filter"] .fbtn.ok{ background: #21a45d; color: #fff; }

/* ===== pages/agreement/service.wxss ===== */
.mp-page[data-route="pages/agreement/service"] /* pages/agreement/service.wxss */
/* pages/agreement/service.wxss */
.doc{ height: 100dvh; box-sizing: border-box; padding: calc(40 * var(--rpx)) calc(44 * var(--rpx)) calc(120 * var(--rpx)); background: #fff; }
.mp-page[data-route="pages/agreement/service"] .doc-title{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #111; text-align: center; margin-bottom: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/agreement/service"] .doc-update{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; text-align: center; margin-bottom: calc(36 * var(--rpx)); }
.mp-page[data-route="pages/agreement/service"] .sec{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #111; margin: calc(30 * var(--rpx)) 0 calc(14 * var(--rpx)); }
.mp-page[data-route="pages/agreement/service"] .p{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #444; line-height: 1.7; margin-bottom: calc(14 * var(--rpx)); text-align: justify; }
.mp-page[data-route="pages/agreement/service"] .end{ text-align: center; color: #bbb; margin-top: calc(40 * var(--rpx)); }

/* ===== pages/agreement/privacy.wxss ===== */
.mp-page[data-route="pages/agreement/privacy"] /* pages/agreement/privacy.wxss */
/* pages/agreement/privacy.wxss */
.doc{ height: 100dvh; box-sizing: border-box; padding: calc(40 * var(--rpx)) calc(44 * var(--rpx)) calc(120 * var(--rpx)); background: #fff; }
.mp-page[data-route="pages/agreement/privacy"] .doc-title{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #111; text-align: center; margin-bottom: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/agreement/privacy"] .doc-update{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; text-align: center; margin-bottom: calc(36 * var(--rpx)); }
.mp-page[data-route="pages/agreement/privacy"] .sec{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #111; margin: calc(30 * var(--rpx)) 0 calc(14 * var(--rpx)); }
.mp-page[data-route="pages/agreement/privacy"] .p{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #444; line-height: 1.7; margin-bottom: calc(14 * var(--rpx)); text-align: justify; }
.mp-page[data-route="pages/agreement/privacy"] .end{ text-align: center; color: #bbb; margin-top: calc(40 * var(--rpx)); }
.mp-page[data-route="pages/agreement/privacy"] .link{ color: #21a45d; font-weight: 600; }

/* ===== pages/agreement/disclaimer/disclaimer.wxss ===== */
.mp-page[data-route="pages/agreement/disclaimer/disclaimer"] /* pages/agreement/disclaimer/disclaimer.wxss */
/* pages/agreement/service.wxss */
.doc{ height: 100dvh; box-sizing: border-box; padding: calc(40 * var(--rpx)) calc(44 * var(--rpx)) calc(120 * var(--rpx)); background: #fff; }
.mp-page[data-route="pages/agreement/disclaimer/disclaimer"] .doc-title{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #111; text-align: center; margin-bottom: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/agreement/disclaimer/disclaimer"] .doc-update{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; text-align: center; margin-bottom: calc(36 * var(--rpx)); }
.mp-page[data-route="pages/agreement/disclaimer/disclaimer"] .sec{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #111; margin: calc(30 * var(--rpx)) 0 calc(14 * var(--rpx)); }
.mp-page[data-route="pages/agreement/disclaimer/disclaimer"] .p{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #444; line-height: 1.7; margin-bottom: calc(14 * var(--rpx)); text-align: justify; }
.mp-page[data-route="pages/agreement/disclaimer/disclaimer"] .end{ text-align: center; color: #bbb; margin-top: calc(40 * var(--rpx)); }
.mp-page[data-route="pages/agreement/disclaimer/disclaimer"] .link{ color: #21a45d; font-weight: 600; }

/* ===== pages/agreement/license/license.wxss ===== */
.mp-page[data-route="pages/agreement/license/license"] /* pages/agreement/license/license.wxss */
/* pages/agreement/service.wxss */
.doc{ height: 100dvh; box-sizing: border-box; padding: calc(40 * var(--rpx)) calc(44 * var(--rpx)) calc(120 * var(--rpx)); background: #fff; }
.mp-page[data-route="pages/agreement/license/license"] .doc-title{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #111; text-align: center; margin-bottom: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/agreement/license/license"] .doc-update{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; text-align: center; margin-bottom: calc(36 * var(--rpx)); }
.mp-page[data-route="pages/agreement/license/license"] .sec{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #111; margin: calc(30 * var(--rpx)) 0 calc(14 * var(--rpx)); }
.mp-page[data-route="pages/agreement/license/license"] .p{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #444; line-height: 1.7; margin-bottom: calc(14 * var(--rpx)); text-align: justify; }
.mp-page[data-route="pages/agreement/license/license"] .end{ text-align: center; color: #bbb; margin-top: calc(40 * var(--rpx)); }
.mp-page[data-route="pages/agreement/license/license"] .link{ color: #21a45d; font-weight: 600; }

/* ===== pages/agreement/bizlicense/bizlicense.wxss ===== */
.mp-page[data-route="pages/agreement/bizlicense/bizlicense"] /* pages/agreement/bizlicense/bizlicense.wxss */
/* pages/agreement/bizlicense/bizlicense.wxss */
.page{ min-height: 100dvh; background: #f5f6f7; padding: calc(24 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pages/agreement/bizlicense/bizlicense"] .card{ background: #fff; border-radius: calc(20 * var(--rpx)); padding: calc(32 * var(--rpx)) calc(28 * var(--rpx)); }
.mp-page[data-route="pages/agreement/bizlicense/bizlicense"] .t{ font-size: calc(calc(34 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; }
.mp-page[data-route="pages/agreement/bizlicense/bizlicense"] .s{ font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; line-height: 1.7; margin: calc(10 * var(--rpx)) 0 calc(20 * var(--rpx)); }
.mp-page[data-route="pages/agreement/bizlicense/bizlicense"] .lic{ width: 100%; border-radius: calc(12 * var(--rpx)); border: calc(2 * var(--rpx)) solid #eee; box-sizing: border-box; background: #fafafa; }
.mp-page[data-route="pages/agreement/bizlicense/bizlicense"] .errbox{ text-align: center; padding: calc(80 * var(--rpx)) 0; }
.mp-page[data-route="pages/agreement/bizlicense/bizlicense"] .err-t{ font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; color: #5a6b62; }
.mp-page[data-route="pages/agreement/bizlicense/bizlicense"] .err-s{ font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #9aa49e; margin: calc(10 * var(--rpx)) 0 calc(24 * var(--rpx)); }
.mp-page[data-route="pages/agreement/bizlicense/bizlicense"] .err-btn{ display: inline-block; background: #21a45d; color: #fff; font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; padding: calc(16 * var(--rpx)) calc(56 * var(--rpx)); border-radius: calc(999 * var(--rpx)); }
.mp-page[data-route="pages/agreement/bizlicense/bizlicense"] .wm-tip{ font-size: calc(calc(22 * var(--rpx))*var(--gf-fs,1)); color: #b3bcb6; margin-top: calc(16 * var(--rpx)); line-height: 1.6; }

/* ===== pages/notfound/notfound.wxss ===== */
.mp-page[data-route="pages/notfound/notfound"] /* pages/notfound/notfound.wxss */
/* pages/notfound/notfound.wxss 友好 404 */
.page{ min-height: 100dvh; background: #f5f6f7; padding: calc(48 * var(--rpx)) calc(24 * var(--rpx)); box-sizing: border-box; display: flex; flex-direction: column; }
.mp-page[data-route="pages/notfound/notfound"] .card{ background: #fff; border-radius: calc(20 * var(--rpx)); padding: calc(64 * var(--rpx)) calc(32 * var(--rpx)) calc(48 * var(--rpx)); text-align: center; }
.mp-page[data-route="pages/notfound/notfound"] .emoji{ font-size: calc(96 * var(--rpx)); line-height: 1.2; }
.mp-page[data-route="pages/notfound/notfound"] .t{ font-size: calc(calc(36 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/notfound/notfound"] .s{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; line-height: 1.8; margin: calc(20 * var(--rpx)) 0 calc(40 * var(--rpx)); }
.mp-page[data-route="pages/notfound/notfound"] .btn-primary{ display: flex; align-items: center; justify-content: center; background: #21a45d; color: #fff; font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; padding: calc(24 * var(--rpx)) 0; border-radius: calc(999 * var(--rpx)); margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/notfound/notfound"] .btn-ghost{ display: flex; align-items: center; justify-content: center; background: #f6faf8; color: #21a45d; font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; padding: calc(22 * var(--rpx)) 0; border-radius: calc(999 * var(--rpx)); border: calc(2 * var(--rpx)) solid #cfe8da; }
.mp-page[data-route="pages/notfound/notfound"] .brand{ margin-top: auto; text-align: center; padding: calc(48 * var(--rpx)) 0 calc(32 * var(--rpx)); font-size: calc(calc(22 * var(--rpx))*var(--gf-fs,1)); color: #b3bcb6; }

/* ===== pages/agreement/ip/ip.wxss ===== */
.mp-page[data-route="pages/agreement/ip/ip"] /* pages/agreement/ip/ip.wxss */
/* pages/agreement/service.wxss */
.doc{ height: 100dvh; box-sizing: border-box; padding: calc(40 * var(--rpx)) calc(44 * var(--rpx)) calc(120 * var(--rpx)); background: #fff; }
.mp-page[data-route="pages/agreement/ip/ip"] .doc-title{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #111; text-align: center; margin-bottom: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/agreement/ip/ip"] .doc-update{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; text-align: center; margin-bottom: calc(36 * var(--rpx)); }
.mp-page[data-route="pages/agreement/ip/ip"] .sec{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #111; margin: calc(30 * var(--rpx)) 0 calc(14 * var(--rpx)); }
.mp-page[data-route="pages/agreement/ip/ip"] .p{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #444; line-height: 1.7; margin-bottom: calc(14 * var(--rpx)); text-align: justify; }
.mp-page[data-route="pages/agreement/ip/ip"] .end{ text-align: center; color: #bbb; margin-top: calc(40 * var(--rpx)); }
.mp-page[data-route="pages/agreement/ip/ip"] .link{ color: #21a45d; font-weight: 600; }

/* ===== pages/about/about.wxss ===== */
.mp-page[data-route="pages/about/about"] /* pages/about/about.wxss */
/* pages/about/about.wxss —— 关于果夫
   口径：品牌绿 #21a45d、深墨 #1f2733、次要灰 #8b95a2；
   全文用 px 会破坏 --gf-fs 字号缩放，一律 rpx + calc(Nrpx * var(--gf-fs,.mp-page[data-route="pages/about/about"] 1))。 */
.mp-page{ background: #f6f8f7; }
.mp-page[data-route="pages/about/about"] .page{
  min-height: 100dvh;
  background: #f6f8f7;
  padding-bottom: calc(calc(40 * var(--rpx)) + env(safe-area-inset-bottom));
}
.mp-page[data-route="pages/about/about"] /* ===== 品牌区 ===== */
.hero{
  padding: calc(72 * var(--rpx)) calc(40 * var(--rpx)) calc(56 * var(--rpx));
  background: linear-gradient(180deg, #eaf7f0 0%, #f4faf6 62%, #f6f8f7 100%);
  display: flex;
  flex-direction: column;
  align-items: center;
}
.mp-page[data-route="pages/about/about"] .hero-logo{
  width: calc(132 * var(--rpx)); height: calc(132 * var(--rpx)); border-radius: calc(30 * var(--rpx));
  background: #fff;
  box-shadow: 0 calc(12 * var(--rpx)) calc(32 * var(--rpx)) rgba(33, 164, 93, 0.14);
}
.mp-page[data-route="pages/about/about"] .hero-cn{
  margin-top: calc(26 * var(--rpx));
  font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600; color: #16241c; letter-spacing: calc(4 * var(--rpx));
}
.mp-page[data-route="pages/about/about"] .hero-en{
  margin-top: calc(6 * var(--rpx));
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  color: #21a45d; letter-spacing: calc(3 * var(--rpx)); font-weight: 600;
}
.mp-page[data-route="pages/about/about"] .hero-slogan{
  margin-top: calc(20 * var(--rpx));
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
  color: #6b7a70;
}
.mp-page[data-route="pages/about/about"] /* ===== 数字名片 ===== */
.stats{
  display: flex; align-items: center; justify-content: space-between;
  margin: calc(-20 * var(--rpx)) calc(32 * var(--rpx)) 0;
  padding: calc(28 * var(--rpx)) calc(12 * var(--rpx));
  background: #fff; border-radius: calc(20 * var(--rpx));
  box-shadow: 0 calc(8 * var(--rpx)) calc(28 * var(--rpx)) rgba(22, 36, 28, 0.06);
}
.mp-page[data-route="pages/about/about"] .stat{ flex: 1; display: flex; flex-direction: column; align-items: center; }
.mp-page[data-route="pages/about/about"] .stat-num{ display: flex; align-items: baseline; }
.mp-page[data-route="pages/about/about"] .stat-num .num{
  font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 700; color: #16241c; letter-spacing: calc(-0.5 * var(--rpx));
}
.mp-page[data-route="pages/about/about"] .stat-num .unit{
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 700; color: #21a45d; margin-left: calc(2 * var(--rpx));
}
.mp-page[data-route="pages/about/about"] .stat-lbl{
  margin-top: calc(8 * var(--rpx));
  font-size: calc(calc(21 * var(--rpx)) * var(--gf-fs, 1));
  color: #8b95a2;
}
.mp-page[data-route="pages/about/about"] .stat-div{ width: calc(1 * var(--rpx)); height: calc(56 * var(--rpx)); background: #eef1ef; }
.mp-page[data-route="pages/about/about"] /* ===== 正文分节 ===== */
.sec{
  margin: calc(28 * var(--rpx)) calc(32 * var(--rpx)) 0;
  padding: calc(30 * var(--rpx)) calc(28 * var(--rpx)) calc(34 * var(--rpx));
  background: #fff; border-radius: calc(20 * var(--rpx));
  box-shadow: 0 calc(6 * var(--rpx)) calc(22 * var(--rpx)) rgba(22, 36, 28, 0.05);
}
.mp-page[data-route="pages/about/about"] .sec-h{
  display: flex; align-items: center;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600; color: #16241c;
  margin-bottom: calc(22 * var(--rpx));
}
.mp-page[data-route="pages/about/about"] .sec-h .bar{
  width: calc(6 * var(--rpx)); height: calc(28 * var(--rpx)); border-radius: calc(3 * var(--rpx));
  background: #21a45d; margin-right: calc(14 * var(--rpx));
}
.mp-page[data-route="pages/about/about"] .p{
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
  color: #4a5560; line-height: 1.86;
  margin-bottom: calc(16 * var(--rpx));
}
.mp-page[data-route="pages/about/about"] .p:last-child{ margin-bottom: 0; }
.mp-page[data-route="pages/about/about"] /* 条目：圆点 + 标题 + 说明 */
.item{ display: flex; align-items: flex-start; margin-bottom: calc(26 * var(--rpx)); }
.mp-page[data-route="pages/about/about"] .item:last-child{ margin-bottom: 0; }
.mp-page[data-route="pages/about/about"] .dot{
  width: calc(10 * var(--rpx)); height: calc(10 * var(--rpx)); border-radius: 50%;
  background: #21a45d; margin: calc(14 * var(--rpx)) calc(16 * var(--rpx)) 0 0; flex: 0 0 auto;
}
.mp-page[data-route="pages/about/about"] .item-b{ flex: 1; display: flex; flex-direction: column; }
.mp-page[data-route="pages/about/about"] .item-t{
  font-size: calc(calc(27 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600; color: #23302a; margin-bottom: calc(6 * var(--rpx));
}
.mp-page[data-route="pages/about/about"] .item-d{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  color: #7b8794; line-height: 1.72;
}
.mp-page[data-route="pages/about/about"] /* ===== 联系方式行 ===== */
.rows{ border-top: calc(1 * var(--rpx)) solid #f0f2f1; }
.mp-page[data-route="pages/about/about"] .row{
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(26 * var(--rpx)) 0;
  border-bottom: calc(1 * var(--rpx)) solid #f0f2f1;
}
.mp-page[data-route="pages/about/about"] .row:last-child{ border-bottom: 0; padding-bottom: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/about/about"] .k{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #4a5560; }
.mp-page[data-route="pages/about/about"] .r{ display: flex; align-items: center; }
.mp-page[data-route="pages/about/about"] .v{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #16241c; }
.mp-page[data-route="pages/about/about"] .v.green{ color: #21a45d; }
.mp-page[data-route="pages/about/about"] .arr{ color: #c2c9cf; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); margin-left: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/about/about"] /* ===== 行动按钮 ===== */
.cta{
  margin: calc(32 * var(--rpx));
  height: calc(92 * var(--rpx)); line-height: calc(92 * var(--rpx));
  border-radius: calc(46 * var(--rpx));
  background: #21a45d; color: #fff;
  text-align: center;
  font-size: calc(calc(29 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600;
  box-shadow: 0 calc(12 * var(--rpx)) calc(28 * var(--rpx)) rgba(33, 164, 93, 0.22);
}
.mp-page[data-route="pages/about/about"] /* ===== 页脚 ===== */
.foot{
  padding: calc(10 * var(--rpx)) calc(32 * var(--rpx)) calc(20 * var(--rpx));
  display: flex; flex-direction: column; align-items: center;
}
.mp-page[data-route="pages/about/about"] .foot-links{ display: flex; align-items: center; margin-bottom: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/about/about"] .foot-a{ font-size: calc(calc(23 * var(--rpx)) * var(--gf-fs, 1)); color: #7b8794; }
.mp-page[data-route="pages/about/about"] .foot-sep{ color: #cfd6d2; margin: 0 calc(12 * var(--rpx)); font-size: calc(calc(23 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/about/about"] .foot-line{
  font-size: calc(calc(21 * var(--rpx)) * var(--gf-fs, 1));
  color: #99a3ad; line-height: 1.9;
}
.mp-page[data-route="pages/about/about"] .foot-line.dim{ color: #b6bfc7; margin-top: calc(6 * var(--rpx)); }

/* ===== pages/map/map.wxss ===== */
.mp-page[data-route="pages/map/map"] /* pages/map/map.wxss */
.mp-page{ height: 100%; }
.mp-page[data-route="pages/map/map"] .page{ position: relative; height: 100dvh; }
.mp-page[data-route="pages/map/map"] .themap{ width: 100%; height: 100%; }
.mp-page[data-route="pages/map/map"] /* 左上角位置信息标签（点击进城市选择页） */
.pos-bar{
  position: absolute; top: calc(20 * var(--rpx)); left: calc(24 * var(--rpx)); z-index: 8;
  display: flex; align-items: center; max-width: calc(320 * var(--rpx));
  background: #fff; border-radius: calc(32 * var(--rpx)); padding: calc(14 * var(--rpx)) calc(24 * var(--rpx));
  box-shadow: 0 calc(4 * var(--rpx)) calc(16 * var(--rpx)) rgba(0,0,0,0.1);
}
.mp-page[data-route="pages/map/map"] .pos-ico{
  width: calc(30 * var(--rpx)); height: calc(30 * var(--rpx)); margin-right: calc(10 * var(--rpx)); flex-shrink: 0;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%2321a45d%22%20stroke-width%3D%222.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M21%2010c0%207-9%2013-9%2013S3%2017%203%2010a9%209%200%201%201%2018%200z%22/%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2210%22%20r%3D%223.2%22/%3E%3C/svg%3E");
  background-size: contain; background-repeat: no-repeat; background-position: center;
}
.mp-page[data-route="pages/map/map"] .pos-txt{
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.mp-page[data-route="pages/map/map"] .pos-caret{ margin-left: calc(8 * var(--rpx)); font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/map/map"] /* 排序/筛选：在位置标签右侧 */
.topchips{
  position: absolute; top: calc(20 * var(--rpx)); left: calc(360 * var(--rpx)); right: calc(24 * var(--rpx));
  display: flex; gap: calc(16 * var(--rpx)); z-index: 5; justify-content: flex-end;
}
.mp-page[data-route="pages/map/map"] .chip{
  background: #fff; border-radius: calc(10 * var(--rpx)); padding: calc(14 * var(--rpx)) calc(24 * var(--rpx));
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #444; box-shadow: 0 calc(4 * var(--rpx)) calc(16 * var(--rpx)) rgba(0,0,0,0.08);
}
.mp-page[data-route="pages/map/map"] .chip.on{ color: #21a45d; font-weight: 700; }
.mp-page[data-route="pages/map/map"] /* 筛选面板 */
.filter-mask{
  position: absolute; left: 0; right: 0; top: 0; bottom: 0;
  background: rgba(0,0,0,0.32); z-index: 5;
}
.mp-page[data-route="pages/map/map"] .filter-mask.hide{ display: none; }
.mp-page[data-route="pages/map/map"] .filter-panel{
  position: absolute; top: calc(100 * var(--rpx)); left: calc(24 * var(--rpx)); right: calc(24 * var(--rpx)); z-index: 6;
  background: #fff; border-radius: calc(16 * var(--rpx)); padding: calc(28 * var(--rpx));
  box-shadow: 0 calc(10 * var(--rpx)) calc(40 * var(--rpx)) rgba(0,0,0,0.12);
}
.mp-page[data-route="pages/map/map"] .filter-panel.hide{ display: none; }
.mp-page[data-route="pages/map/map"] .fg{ margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/map/map"] .fg-name{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-bottom: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/map/map"] .fg-chips{ display: flex; flex-wrap: wrap; gap: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/map/map"] .fchip{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #555; background: #f4f5f4;
  padding: calc(12 * var(--rpx)) calc(26 * var(--rpx)); border-radius: calc(10 * var(--rpx)); border: calc(2 * var(--rpx)) solid #f4f5f4;
}
.mp-page[data-route="pages/map/map"] .fchip.on{ color: #fff; background: #21a45d; border-color: #21a45d; }
.mp-page[data-route="pages/map/map"] .fg-btns{ display: flex; gap: calc(24 * var(--rpx)); margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/map/map"] .fg-btn{
  flex: 1; height: calc(76 * var(--rpx)); line-height: calc(76 * var(--rpx)); text-align: center;
  border-radius: calc(12 * var(--rpx)); font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
}
.mp-page[data-route="pages/map/map"] .fg-btn.reset{ background: #fff; color: #333; border: calc(1 * var(--rpx)) solid #ddd; }
.mp-page[data-route="pages/map/map"] .fg-btn.ok{ background: #21a45d; color: #fff; }
.mp-page[data-route="pages/map/map"] .near{
  position: absolute; left: 0; right: 0; bottom: calc(30 * var(--rpx)); height: calc(260 * var(--rpx)); z-index: 5;
}
.mp-page[data-route="pages/map/map"] .near-card{ display: flex; padding: calc(20 * var(--rpx)); margin: 0 calc(10 * var(--rpx)); }
.mp-page[data-route="pages/map/map"] .near-img{ width: calc(200 * var(--rpx)); height: calc(220 * var(--rpx)); border-radius: calc(12 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/map/map"] .near-body{ flex: 1; min-width: 0; margin-left: calc(20 * var(--rpx)); display: flex; flex-direction: column; }
.mp-page[data-route="pages/map/map"] /* 🔴 同 home：中英对照名变长，swiper 卡片高 calc(260 * var(--rpx)) 固定，限 2 行防溢出 */
.near-name{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.mp-page[data-route="pages/map/map"] .near-meta{ display: flex; justify-content: space-between; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/map/map"] .near-dist{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/map/map"] .near-bottom{ margin-top: auto; display: flex; justify-content: space-between; align-items: center; }
.mp-page[data-route="pages/map/map"] .near-acts{ display: flex; align-items: center; }
.mp-page[data-route="pages/map/map"] .near-acts .btn-mini{ margin-left: calc(12 * var(--rpx)); padding: 0 calc(20 * var(--rpx)); }
.mp-page[data-route="pages/map/map"] .per{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/map/map"] /* ===== PC 宽屏右侧球场列表（携程式布局）=====
   移动端一律隐藏：手机上走底部 mp-swiper 卡片（微信地图的手感）。
   H5 宽屏由 build.js 的 #mp-app.mp-wide-app 规则打开，并同步隐藏 mp-swiper。
   桌面端没有「捏合/滑动查看下一张」的习惯，纵向列表 + 地图联动更符合鼠标操作。 */
.near-side{ display: none; }
.mp-page[data-route="pages/map/map"] /* ===== 地图上方搜索框 =====
   手机竖屏顶部已被「位置胶囊 + 筛选」占满，再塞搜索框会把地图压得更矮，
   故默认隐藏；H5 宽屏由 build.js 打开（PC 上才是刚需）。 */
.map-search{ display: none; }
.mp-page[data-route="pages/map/map"] /* 列表收起/展开按钮：移动端无右侧列表，恒隐藏；H5 宽屏由 build.js 打开 */
.side-toggle{ display: none; }

/* ===== pages/package/detail.wxss ===== */
.mp-page[data-route="pages/package/detail"] /* pages/package/detail.wxss */
/* pages/package/detail.wxss —— 套餐详情页（按设计稿三联截图） */
.page{ background: #f5f6f7; padding-bottom: calc(180 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .card{ background: #fff; border-radius: calc(16 * var(--rpx)); margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0; padding: calc(26 * var(--rpx)) calc(28 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pages/package/detail"] .sec-t{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .sec-row{ display: flex; align-items: baseline; justify-content: space-between; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .sec-row .sec-t{ margin-bottom: 0; }
.mp-page[data-route="pages/package/detail"] .sec-more{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; }
.mp-page[data-route="pages/package/detail"] .sec-p{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; line-height: 1.7; margin-bottom: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .nav-back{
  position: fixed; left: calc(30 * var(--rpx)); z-index: 30;
  /* 🔴 2026-10-10 修「点击无法返回」：top 由 utils/navbar.js 按胶囊按钮算出（px）。
     原来 JS 传 `calc(env(safe-area-inset-top) + calc(20 * var(--rpx)))`，安卓上 env 恒为 0 →
     按钮落进系统状态栏，触摸被系统接管。兜底值 calc(88 * var(--rpx)) 保证不会再压到状态栏。 */
  top: var(--nav-top, calc(env(safe-area-inset-top) + calc(88 * var(--rpx))));
  width: calc(60 * var(--rpx)); height: calc(60 * var(--rpx)); line-height: calc(56 * var(--rpx)); text-align: center;
  color: #fff; font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  background: rgba(0,0,0,0.25); border-radius: 50%;
}
.mp-page[data-route="pages/package/detail"] /* 触摸热区：向下/左右扩到 ≈44px，不向状态栏扩 */
.nav-back::after{
  content: '';
  position: absolute;
  left: calc(-12 * var(--rpx)); right: calc(-12 * var(--rpx)); top: 0; bottom: calc(-12 * var(--rpx));
  border-radius: 50%;
}
.mp-page[data-route="pages/package/detail"] /* ① 图集 */
.gallery{ position: relative; }
.mp-page[data-route="pages/package/detail"] .g-swiper{ height: calc(480 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .g-img{ width: 100%; height: calc(480 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .g-play{
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: calc(96 * var(--rpx)); height: calc(96 * var(--rpx)); border-radius: 50%;
  background: rgba(0,0,0,0.35); border: calc(2 * var(--rpx)) solid rgba(255,255,255,0.8);
  color: #fff; font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); display: flex; align-items: center; justify-content: center;
  box-sizing: border-box; padding-left: calc(8 * var(--rpx));
}
.mp-page[data-route="pages/package/detail"] .g-count{
  position: absolute; right: calc(24 * var(--rpx)); bottom: calc(20 * var(--rpx));
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: rgba(0,0,0,0.4);
  border-radius: calc(24 * var(--rpx)); padding: calc(6 * var(--rpx)) calc(20 * var(--rpx));
}
.mp-page[data-route="pages/package/detail"] /* ② 公告条 */
.notice{
  display: flex; align-items: center;
  background: #e8f7ef; padding: calc(14 * var(--rpx)) calc(24 * var(--rpx));
}
.mp-page[data-route="pages/package/detail"] /* ③-⑤ 价格/标题/标签 */
.head-name{ font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; line-height: 1.4; margin-top: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .head-desc{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; line-height: 1.6; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .price-row{ display: flex; align-items: baseline; }
.mp-page[data-route="pages/package/detail"] .price{ display: flex; align-items: baseline; color: #ff4d4f; flex: 1; }
.mp-page[data-route="pages/package/detail"] .rmb{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; }
.mp-page[data-route="pages/package/detail"] .num{ font-size: calc(calc(48 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; }
.mp-page[data-route="pages/package/detail"] .qi{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/package/detail"] .origin{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #b8bcc2; text-decoration: line-through; margin-left: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .share-btn{
  width: calc(48 * var(--rpx)); height: calc(48 * var(--rpx)); border-radius: 50%;
  background: #ff4d4f; color: #fff; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1));
  display: flex; align-items: center; justify-content: center; align-self: center;
}
.mp-page[data-route="pages/package/detail"] .h-chips{ display: flex; flex-wrap: wrap; gap: calc(14 * var(--rpx)); margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .h-chip{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9; background: #eef5fd;
  border: calc(2 * var(--rpx)) solid #cfe3f8; border-radius: calc(8 * var(--rpx)); padding: calc(8 * var(--rpx)) calc(18 * var(--rpx)); box-sizing: border-box;
}
.mp-page[data-route="pages/package/detail"] .g-chips{ display: flex; flex-wrap: wrap; gap: calc(14 * var(--rpx)); margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .g-chip{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; background: #f5f6f7; border-radius: calc(8 * var(--rpx)); padding: calc(8 * var(--rpx)) calc(18 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] /* ⑥ 出发日历条 */
.dstrip{ white-space: nowrap; }
.mp-page[data-route="pages/package/detail"] .d-cell{
  display: inline-block; width: calc(150 * var(--rpx)); text-align: center;
  border: calc(2 * var(--rpx)) solid #eef0f2; border-radius: calc(12 * var(--rpx));
  padding: calc(16 * var(--rpx)) 0; margin-right: calc(14 * var(--rpx)); box-sizing: border-box; vertical-align: top;
}
.mp-page[data-route="pages/package/detail"] .d-cell.on{ border-color: #ff4d4f; background: #fff5f5; }
.mp-page[data-route="pages/package/detail"] .d-cell.we .d-p{ color: #ff7a45; }
.mp-page[data-route="pages/package/detail"] .d-d{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/package/detail"] .d-w{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .d-wt{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .d-p{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #ff4d4f; font-weight: 600; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] /* ⑦ 概要 */
.kv{ display: flex; padding: calc(12 * var(--rpx)) 0; }
.mp-page[data-route="pages/package/detail"] .kv-k{ width: calc(100 * var(--rpx)); font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; flex-shrink: 0; }
.mp-page[data-route="pages/package/detail"] .kv-v{ flex: 1; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; line-height: 1.5; }
.mp-page[data-route="pages/package/detail"] .kv-note{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #ff4d4f; margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] /* ⑩ 行程线路 */
.day{ margin-bottom: calc(28 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .day:last-child{ margin-bottom: 0; }
.mp-page[data-route="pages/package/detail"] .day-head{ display: flex; align-items: center; margin-bottom: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .day-badge{
  background: #ff4d4f; color: #fff; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700;
  border-radius: calc(8 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(12 * var(--rpx)); margin-right: calc(14 * var(--rpx)); flex-shrink: 0;
}
.mp-page[data-route="pages/package/detail"] .day-title{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/package/detail"] .day-item{ display: flex; align-items: center; padding: calc(8 * var(--rpx)) 0 calc(8 * var(--rpx)) calc(12 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .di-line{ width: calc(16 * var(--rpx)); height: calc(2 * var(--rpx)); background: #d5d8dd; margin-right: calc(14 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/package/detail"] .di-txt{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #555; }
.mp-page[data-route="pages/package/detail"] .di-txt.link{ color: #21a45d; }
.mp-page[data-route="pages/package/detail"] .d-course{
  display: flex; background: #f8f9fa; border-radius: calc(12 * var(--rpx));
  padding: calc(16 * var(--rpx)); margin: calc(14 * var(--rpx)) 0 0 calc(30 * var(--rpx));
}
.mp-page[data-route="pages/package/detail"] .dc-img{ width: calc(160 * var(--rpx)); height: calc(120 * var(--rpx)); border-radius: calc(10 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/package/detail"] .dc-body{ flex: 1; min-width: 0; margin-left: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .dc-name{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.mp-page[data-route="pages/package/detail"] .dc-meta{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #888; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] /* ⑪⑫ 费用 */
.fee-line{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #555; line-height: 1.7; }
.mp-page[data-route="pages/package/detail"] /* ⑬ 折叠卡 */
.acc{ padding: 0 calc(28 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .acc-head{ display: flex; align-items: center; justify-content: space-between; padding: calc(28 * var(--rpx)) 0; }
.mp-page[data-route="pages/package/detail"] .acc-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #333; }
.mp-page[data-route="pages/package/detail"] .acc-arrow{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); color: #b8bcc2; transition: transform 0.2s; display: block; }
.mp-page[data-route="pages/package/detail"] .acc-arrow.open{ transform: rotate(90deg); }
.mp-page[data-route="pages/package/detail"] .acc-body{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; line-height: 1.7; padding-bottom: calc(26 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] /* ⑭ 温馨提示 */
.warn{ background: #f0f1f3; box-shadow: none; }
.mp-page[data-route="pages/package/detail"] .warn-t{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #555; margin-bottom: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .warn-p{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; line-height: 1.7; }
.mp-page[data-route="pages/package/detail"] .rel{ background: #fff; border-radius: calc(16 * var(--rpx)); overflow: hidden; margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0; }
.mp-page[data-route="pages/package/detail"] /* ⑰ 品牌尾 */
.brand{ text-align: center; padding: calc(60 * var(--rpx)) calc(30 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .brand-t{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #666; }
.mp-page[data-route="pages/package/detail"] .brand-s{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .brand-icons{ display: flex; justify-content: center; gap: calc(44 * var(--rpx)); margin-top: calc(34 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .bi{ display: flex; flex-direction: column; align-items: center; }
.mp-page[data-route="pages/package/detail"] .bi-ico{ width: calc(46 * var(--rpx)); height: calc(46 * var(--rpx)); background-size: contain; background-repeat: no-repeat; background-position: center; }
.mp-page[data-route="pages/package/detail"] .bi-label{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #888; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] /* ⑱ 底部栏 */
.footer{
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 20;
  background: #fff; display: flex; align-items: center;
  padding: calc(14 * var(--rpx)) calc(30 * var(--rpx)) calc(calc(14 * var(--rpx)) + env(safe-area-inset-bottom));
  box-shadow: 0 calc(-4 * var(--rpx)) calc(20 * var(--rpx)) rgba(0,0,0,0.06);
}
.mp-page[data-route="pages/package/detail"] .f-icon{ display: flex; flex-direction: column; align-items: center; margin-right: calc(34 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .f-ico{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1.2; }
.mp-page[data-route="pages/package/detail"] .f-txt{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .f-btn{
  flex: 1; height: calc(88 * var(--rpx)); line-height: calc(88 * var(--rpx));
  background: #e64340; color: #fff; font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  border-radius: calc(44 * var(--rpx)); padding: 0; margin: 0;
}
.mp-page[data-route="pages/package/detail"] .f-btn::after{ border: none; }
.mp-page[data-route="pages/package/detail"] /* ---- ⑲ 预订弹层 ---- */
.bk-mask{ position: fixed; inset: 0; z-index: 30; background: rgba(0,0,0,0.55); }
.mp-page[data-route="pages/package/detail"] .bk-sheet{
  position: absolute; left: 0; right: 0; bottom: 0;
  background: #fff; border-radius: calc(28 * var(--rpx)) calc(28 * var(--rpx)) 0 0;
  padding-bottom: calc(calc(16 * var(--rpx)) + env(safe-area-inset-bottom));
  display: flex; flex-direction: column;
  /* 🔴 2026-10-09：原来只有 max-height:86dvh。
     日历滑不动的第二个原因：flex 子项（.bk-calwrap → 组件内 .dp-body scroll-view）
     需要父容器有**确定高度**才能算出可滚动高度，只有 max-height 时高度由内容撑开、
     scroll-view 拿到的是内容全高 → 看起来「滑不动」。
     改成确定高度 86dvh，并给不滚动的 chrome 加 flex-shrink:0。 */
  height: 86dvh;
  /* 兜底：任何内容（如超长月份列表）都不许顶破弹层边界 */
  overflow: hidden;
}
.mp-page[data-route="pages/package/detail"] /* 不参与滚动的头部/提示/底部：必须禁止压缩，否则高度被日历挤掉 */
.bk-tip{ flex-shrink: 0; }
.mp-page[data-route="pages/package/detail"] .bk-head{ flex-shrink: 0; display: flex; align-items: center; justify-content: space-between; padding: calc(28 * var(--rpx)) calc(32 * var(--rpx)) calc(12 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .bk-t{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/package/detail"] .bk-x{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); color: #999; padding: 0 calc(10 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .bk-rooms{ white-space: nowrap; padding: calc(12 * var(--rpx)) calc(24 * var(--rpx)) calc(8 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/package/detail"] .bk-room{
  display: inline-block; padding: calc(12 * var(--rpx)) calc(24 * var(--rpx)); margin: 0 calc(12 * var(--rpx));
  border: calc(2 * var(--rpx)) solid #e5e6e8; border-radius: calc(10 * var(--rpx)); box-sizing: border-box;
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #555; background: #f7f8f9;
}
.mp-page[data-route="pages/package/detail"] .bk-room.on{ background: #21a45d; border-color: #21a45d; color: #fff; }
.mp-page[data-route="pages/package/detail"] /* 2026-10-09：日历换用 date-picker 组件（嵌入模式）。
   容器只负责把高度让给组件内部的滚动区；旧 bm-* 单月日历样式已删。 */
.bk-calwrap{
  flex: 1; min-height: 0;
  display: flex; flex-direction: column;
  padding: 0 calc(24 * var(--rpx));
}
.mp-page[data-route="pages/package/detail"] /* 🔴🔴 2026-10-09 关键修复（本轮真机两次反馈都指向这里）：
   .bk-calwrap 的 flex 子项是 **<date-picker> 组件标签本身**，
   不是组件内部的 .dp-sheet。给内部元素写 flex:1 是无效的 ——
   组件标签默认 display:block、高度由内容撑开，
   于是组件越撑越高、日历把弹层顶穿（真机截图：11月内容溢出屏幕、提示文字压在日期上），
   而 mp-scroll-view 拿到的是「内容全高」→ 没有可滚行程，表现为「滑不动」。
   ✅ 正确做法：直接给组件标签本身设样式，让它参与 flex 布局并可收缩：
      display:flex + flex:1 + min-height:0（小程序支持对组件标签写样式）。 */
date-picker{
  display: flex;
  flex: 1;
  min-height: 0;
  /* 组件标签默认 overflow:visible，不加会被超长内容顶破 */
  overflow: hidden;
}
.mp-page[data-route="pages/package/detail"] .bk-tip{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; padding: calc(16 * var(--rpx)) calc(8 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .bk-foot{ flex-shrink: 0; display: flex; align-items: center; padding: calc(16 * var(--rpx)) calc(32 * var(--rpx)) calc(8 * var(--rpx)); gap: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .bk-hint{ flex: 1; font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; line-height: 1.5; }
.mp-page[data-route="pages/package/detail"] /* 🔴 2026-10-09：「下一步」按钮已删（点日期即自动跳转），样式一并移除避免留死代码。 */

/* ===== 多球场行程区块（2026-10-07 新西兰行程引入）=====
   球场清单 / 参考航班 / 费用不含 / 行程亮点逐条。 */
.sec-sub{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1));
  color: #999;
  font-weight: 400;
  margin-left: calc(10 * var(--rpx));
}
.mp-page[data-route="pages/package/detail"] .hl-item{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  color: #555;
  line-height: 1.8;
  margin-bottom: calc(6 * var(--rpx));
}
.mp-page[data-route="pages/package/detail"] /* 球场清单行：序号 + 图 + 名称 + 位置 */
.cl-item{
  display: flex; align-items: center; gap: calc(16 * var(--rpx));
  padding: calc(16 * var(--rpx)) 0;
  border-bottom: calc(2 * var(--rpx)) solid #f5f5f5;
}
.mp-page[data-route="pages/package/detail"] .cl-item:last-child{ border-bottom: none; }
.mp-page[data-route="pages/package/detail"] .cl-no{
  flex: none; width: calc(40 * var(--rpx)); height: calc(40 * var(--rpx)); line-height: calc(40 * var(--rpx));
  text-align: center; border-radius: 50%;
  background: #1d3c2a; color: #fff;
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700;
}
.mp-page[data-route="pages/package/detail"] .cl-img{ flex: none; width: calc(110 * var(--rpx)); height: calc(82 * var(--rpx)); border-radius: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .cl-body{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/package/detail"] .cl-name{
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600; color: #333;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mp-page[data-route="pages/package/detail"] .cl-meta{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #888; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .cl-go{ flex: none; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #ccc; }
.mp-page[data-route="pages/package/detail"] /* 参考航班行 */
.fl-item{
  display: flex; align-items: baseline; flex-wrap: wrap; gap: calc(14 * var(--rpx));
  padding: calc(12 * var(--rpx)) 0;
  border-bottom: calc(2 * var(--rpx)) solid #f5f5f5;
}
.mp-page[data-route="pages/package/detail"] .fl-item:last-child{ border-bottom: none; }
.mp-page[data-route="pages/package/detail"] .fl-route{
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600; color: #333; min-width: calc(260 * var(--rpx));
}
.mp-page[data-route="pages/package/detail"] .fl-no{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; }
.mp-page[data-route="pages/package/detail"] .fl-time{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #888; }
.mp-page[data-route="pages/package/detail"] .sec-note{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1));
  color: #b98d4f; margin-top: calc(12 * var(--rpx)); line-height: 1.7;
}
.mp-page[data-route="pages/package/detail"] /* ===== 加载态 / 空态（2026-10-07 修白屏）=====
   原来整页被 wx:if="{{pkg}}" 包住，数据没到时是纯白屏，
   用户既看不到任何反馈，也分不清是「加载中」还是「套餐没了」。 */
.state-wrap{
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 0 calc(60 * var(--rpx)) calc(calc(80 * var(--rpx)) + env(safe-area-inset-bottom));
  box-sizing: border-box;
  background: #f7f9f8;
}
.mp-page[data-route="pages/package/detail"] .state-spinner{
  width: calc(64 * var(--rpx)); height: calc(64 * var(--rpx));
  border: calc(5 * var(--rpx)) solid #dfe8e2;
  border-top-color: #21a45d;
  border-radius: 50%;
  animation: gf-spin 0.9s linear infinite;
}

@keyframes gf-spin { to { transform: rotate(360deg); } }
.mp-page[data-route="pages/package/detail"] .state-ico{
  width: calc(88 * var(--rpx)); height: calc(88 * var(--rpx)); line-height: calc(88 * var(--rpx));
  text-align: center; border-radius: 50%;
  background: #fdf0ee; color: #d9483b;
  font-size: calc(calc(48 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700;
}
.mp-page[data-route="pages/package/detail"] .state-t{
  margin-top: calc(28 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  color: #333; font-weight: 600;
}
.mp-page[data-route="pages/package/detail"] .state-s{
  margin-top: calc(12 * var(--rpx));
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  color: #999; text-align: center; line-height: 1.6;
}
.mp-page[data-route="pages/package/detail"] .state-btns{ margin-top: calc(44 * var(--rpx)); display: flex; gap: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/package/detail"] .state-btn{
  padding: calc(18 * var(--rpx)) calc(44 * var(--rpx)); border-radius: calc(999 * var(--rpx));
  background: #21a45d; color: #fff;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/package/detail"] .state-btn.plain{ background: #fff; color: #21a45d; border: calc(1 * var(--rpx)) solid #21a45d; }
.mp-page[data-route="pages/package/detail"] .state-back{
  margin-top: calc(48 * var(--rpx));
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999;
}
.mp-page[data-route="pages/package/detail"] /* 加载失败时的原因文字（2026-10-07） */
.state-s.err{
  max-width: calc(460 * var(--rpx));
  color: #d9483b;
  word-break: break-all;
}

/* ===== pages/travel/travel.wxss ===== */
.mp-page[data-route="pages/travel/travel"] /* pages/travel/travel.wxss */
/* pages/travel/travel.wxss —— 套餐旅游搜索页 */
.page{ background: #f5f6f7; min-height: 100dvh; padding-bottom: calc(40 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] /* 头图 + 搜索 */
.hero{ position: relative; height: calc(420 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .hero-swiper{ position: absolute; left: 0; top: 0; right: 0; bottom: 0; width: 100%; height: 100%; }
.mp-page[data-route="pages/travel/travel"] .hero-slide{ width: 100%; height: 100%; }
.mp-page[data-route="pages/travel/travel"] .hero-mask{ position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0.02), rgba(0,0,0,0.28)); }
.mp-page[data-route="pages/travel/travel"] /* 搜索框吸顶（2026-10-11）：与 pages/courses 的 .sticky-header 同一套做法 ——
   🔴 用 sticky 而不是 fixed：fixed 会脱离文档流，吸顶瞬间整页内容上跳一屏。 */
.search-sticky{
  position: sticky; top: 0; z-index: 90;
  /* 🔴 负边距 = 自身高度（.search-box 84 + 纵向 padding 15×2 = calc(114 * var(--rpx))）
     → 对文档流**零贡献**，位置正好落回头图内的设计位（420 − 114 = calc(306 * var(--rpx))）。
     改这三个数（.hero height / 这里的 margin-top / padding）必须同步
     travel.js 的 HERO_H_RPX / SEARCH_MT_RPX，否则下方内容会整体上移压住头图下沿；
     守 tools/verify_travel_sticky_layout.js 会把两边数值对起来。 */
  margin-top: calc(-114 * var(--rpx));
  padding: calc(15 * var(--rpx)) calc(30 * var(--rpx));
  box-sizing: border-box;
}
.mp-page[data-route="pages/travel/travel"] /* 吸顶后才加：不透明底色 + 投影（页面同色 #f5f6f7）——
   否则滚上来的标签/卡片会从搜索框两侧 calc(30 * var(--rpx)) 的缝隙里透出来叠字。 */
.search-sticky.stuck{ background: #f5f6f7; box-shadow: 0 calc(4 * var(--rpx)) calc(16 * var(--rpx)) rgba(0,0,0,0.06); }
.mp-page[data-route="pages/travel/travel"] .search-box{
  height: calc(84 * var(--rpx)); background: rgba(255,255,255,0.96); border-radius: calc(42 * var(--rpx));
  display: flex; align-items: center; padding: 0 calc(30 * var(--rpx)); box-sizing: border-box;
}
.mp-page[data-route="pages/travel/travel"] .s-ico{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); margin-right: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .s-input{ flex: 1; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/travel/travel"] .s-ph{ color: #b8bcc2; }
.mp-page[data-route="pages/travel/travel"] /* 定位行 */
.loc-row{
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(24 * var(--rpx)) calc(30 * var(--rpx)) calc(6 * var(--rpx));
}
.mp-page[data-route="pages/travel/travel"] .loc-text{ flex: 1; min-width: 0; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-page[data-route="pages/travel/travel"] .loc-btn{
  flex-shrink: 0; margin-left: calc(20 * var(--rpx));
  display: flex; align-items: center; gap: calc(6 * var(--rpx));
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9;
}
.mp-page[data-route="pages/travel/travel"] .loc-ico{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/travel/travel"] /* 目的地推荐 */
.dest-head{ display: flex; align-items: baseline; justify-content: space-between; padding: calc(24 * var(--rpx)) calc(30 * var(--rpx)) calc(16 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .dest-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/travel/travel"] .dest-all{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9; }
.mp-page[data-route="pages/travel/travel"] .chips{ display: flex; flex-wrap: wrap; gap: calc(18 * var(--rpx)); padding: 0 calc(30 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .chip{
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #555; background: #fff;
  border-radius: calc(10 * var(--rpx)); padding: calc(14 * var(--rpx)) calc(34 * var(--rpx));
}
.mp-page[data-route="pages/travel/travel"] .chip.on{ background: #c9cdd4; color: #333; font-weight: 600; }
.mp-page[data-route="pages/travel/travel"] /* 套餐大图卡（2026-10-07 调整：标题移到图下白区，副标题图上单行）
   结构：.pkg-imgwrap（图片 + 渐变遮罩 + 图上副标题）→ .pkg-foot（白底：左标题 / 右价格） */
.pkg-card{
  position: relative; margin: calc(28 * var(--rpx)) calc(30 * var(--rpx)) 0; border-radius: calc(18 * var(--rpx)); overflow: hidden;
  background: #fff; box-shadow: 0 calc(4 * var(--rpx)) calc(18 * var(--rpx)) rgba(0,0,0,0.06);
}
.mp-page[data-route="pages/travel/travel"] .pkg-imgwrap{ position: relative; width: 100%; height: calc(340 * var(--rpx)); overflow: hidden; background: #eef1ef; }
.mp-page[data-route="pages/travel/travel"] /* 🔴 顶部对齐裁切：套票封面用的是关联球场的实拍图，其中部分右上角烧录了「必打榜」圆形标识。
   容器 690×340（比例 2.03）比图片宽得多，aspectFill 会上下各裁掉约 1/3，标识必被切。
   widthFix（原始比例、顶部对齐）+ 容器裁切 → 只裁底部，标识完整。 */
.pkg-img{ width: 100%; display: block; }
.mp-page[data-route="pages/travel/travel"] /* 遮罩高度跟随 .pkg-imgwrap（单卡片 calc(340 * var(--rpx)) / 双卡片 calc(220 * var(--rpx))），不再写死 —— 写死会在
   双卡片模式下多出 calc(120 * var(--rpx)) 的深色渐变，把下面的白色标题区糊上一层灰。 */
.pkg-mask{ position: absolute; left: 0; right: 0; top: 0; bottom: 0; background: linear-gradient(180deg, rgba(0,0,0,0.02), rgba(0,0,0,0.55)); }
.mp-page[data-route="pages/travel/travel"] /* 副标题：留在图上、只显示 1 行（-webkit-line-clamp:1），压在图片底部 */
.pkg-desc{
  position: absolute; left: calc(28 * var(--rpx)); right: calc(28 * var(--rpx)); bottom: calc(20 * var(--rpx));
  font-size: calc(calc(23 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; text-shadow: 0 calc(2 * var(--rpx)) calc(8 * var(--rpx)) rgba(0,0,0,0.55);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mp-page[data-route="pages/travel/travel"] /* 图下白区：左标题、右价格，同一行 */
.pkg-foot{
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(22 * var(--rpx)) calc(24 * var(--rpx)); background: #fff;
}
.mp-page[data-route="pages/travel/travel"] .pkg-name{
  flex: 1; min-width: 0;
  font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-right: calc(20 * var(--rpx));
}
.mp-page[data-route="pages/travel/travel"] .pkg-price{
  flex-shrink: 0;
  display: flex; align-items: baseline;
}
.mp-page[data-route="pages/travel/travel"] .pkg-tag{
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: #ff4d4f;
  border-radius: calc(6 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(10 * var(--rpx)); margin-right: calc(12 * var(--rpx));
}
.mp-page[data-route="pages/travel/travel"] .pkg-rmb{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); color: #ff4d4f; font-weight: 700; }
.mp-page[data-route="pages/travel/travel"] /* 嘉宾价划线对照（2026-10-08）：会员看到会员价做主数字后，给一个「原价」参照 */
.pkg-guest{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #b0b0b0;
  text-decoration: line-through; margin-left: calc(10 * var(--rpx));
}
.mp-page[data-route="pages/travel/travel"] .pkg-qi{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/travel/travel"] /* ===== 列表工具条 + 布局切换（2026-10-11：用户可选单卡片 / 双卡片）===== */
.list-bar{
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(28 * var(--rpx)) calc(30 * var(--rpx)) 0;
}
.mp-page[data-route="pages/travel/travel"] .lb-t{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/travel/travel"] .lb-switch{
  display: flex; align-items: center;
  background: #eceef1; border-radius: calc(999 * var(--rpx)); padding: calc(4 * var(--rpx));
}
.mp-page[data-route="pages/travel/travel"] .lb-btn{
  display: flex; align-items: center; gap: calc(8 * var(--rpx));
  padding: calc(8 * var(--rpx)) calc(22 * var(--rpx)); border-radius: calc(999 * var(--rpx));
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #6b7075;
}
.mp-page[data-route="pages/travel/travel"] .lb-btn.on{ background: #fff; color: #21a45d; font-weight: 600; box-shadow: 0 calc(2 * var(--rpx)) calc(8 * var(--rpx)) rgba(0,0,0,0.08); }
.mp-page[data-route="pages/travel/travel"] .lb-tx{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/travel/travel"] /* 图标：两个色块表达「一列 / 两列」，色块继承 .lb-btn 的 color（选中变绿） */
.lb-ico{ display: flex; gap: calc(4 * var(--rpx)); width: calc(26 * var(--rpx)); height: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .lb-b{ flex: 1; background: currentColor; border-radius: calc(3 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] /* ===== 双卡片并排（layout === 'two'）=====
   🔴 卡片结构只有一份，这里只改宽高与内部排版。
   卡片自身的左右 margin 必须清零、改由容器 padding 统一控制，
   否则会与容器 padding 叠加成双重缩进（本项目在 .page 上踩过同类坑）。 */
.pkg-list.two{ display: flex; flex-wrap: wrap; gap: calc(20 * var(--rpx)); padding: 0 calc(30 * var(--rpx)); margin-top: calc(28 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .pkg-list.two .pkg-card{ width: calc(50% - calc(10 * var(--rpx))); margin: 0; }
.mp-page[data-route="pages/travel/travel"] /* 图高固定 calc(220 * var(--rpx))：配合 wxml 里切成 aspectFill，一行两张图等高，行底不会成锯齿 */
.pkg-list.two .pkg-imgwrap{ height: calc(220 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .pkg-list.two .pkg-desc{ left: calc(18 * var(--rpx)); right: calc(18 * var(--rpx)); bottom: calc(14 * var(--rpx)); font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/travel/travel"] /* 半宽卡片放不下「左标题 / 右价格」→ 改为上下两行，标题最多 2 行 */
.pkg-list.two .pkg-foot{ flex-direction: column; align-items: flex-start; padding: calc(16 * var(--rpx)) calc(18 * var(--rpx)) calc(18 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .pkg-list.two .pkg-name{
  width: 100%; margin-right: 0;
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1.35;
  white-space: normal; display: -webkit-box; -webkit-box-orient: vertical;
  -webkit-line-clamp: 2; overflow: hidden;
}
.mp-page[data-route="pages/travel/travel"] .pkg-list.two .pkg-price{ margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .pkg-list.two .pkg-tag{ font-size: calc(calc(18 * var(--rpx)) * var(--gf-fs, 1)); padding: calc(3 * var(--rpx)) calc(8 * var(--rpx)); margin-right: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .pkg-list.two .pkg-rmb{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/travel/travel"] .pkg-list.two .pkg-guest{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); margin-left: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] /* 空态 */
.empty{ text-align: center; padding: calc(90 * var(--rpx)) calc(30 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .empty-ico{ font-size: calc(calc(80 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/travel/travel"] .empty-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; margin-top: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .empty-s{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] /* 发现精彩瀑布流（与首页同款） */
.sec-head{ display: flex; align-items: baseline; justify-content: space-between; padding: calc(40 * var(--rpx)) calc(30 * var(--rpx)) calc(20 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .sec-title{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/travel/travel"] .falls{ display: flex; gap: calc(20 * var(--rpx)); padding: 0 calc(30 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .falls-col{ flex: 1; }
.mp-page[data-route="pages/travel/travel"] .pick-card{
  background: #fff; border-radius: calc(14 * var(--rpx)); overflow: hidden; margin-bottom: calc(20 * var(--rpx));
  box-shadow: 0 calc(3 * var(--rpx)) calc(12 * var(--rpx)) rgba(0,0,0,0.04);
}
.mp-page[data-route="pages/travel/travel"] .pick-img{ width: 100%; display: block; }
.mp-page[data-route="pages/travel/travel"] .pick-img.h1{ height: calc(300 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .pick-img.h2{ height: calc(360 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .pick-img.h3{ height: calc(420 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .pick-text{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #333; padding: calc(16 * var(--rpx)) calc(20 * var(--rpx)) 0; line-height: 1.5;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;
}
.mp-page[data-route="pages/travel/travel"] .pick-foot{ display: flex; align-items: center; padding: calc(14 * var(--rpx)) calc(20 * var(--rpx)) calc(20 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .pick-avatar{ width: calc(44 * var(--rpx)); height: calc(44 * var(--rpx)); border-radius: 50%; flex-shrink: 0; }
.mp-page[data-route="pages/travel/travel"] .pick-user{ flex: 1; min-width: 0; margin-left: calc(12 * var(--rpx)); font-size: calc(calc(23 * var(--rpx)) * var(--gf-fs, 1)); color: #999; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-page[data-route="pages/travel/travel"] .pick-likes{ font-size: calc(calc(23 * var(--rpx)) * var(--gf-fs, 1)); color: #b8bcc2; flex-shrink: 0; }
.mp-page[data-route="pages/travel/travel"] /* 套票加载中的转圈（2026-10-07：区分「加载中」与「真的没货」） */
.empty-spinner{
  width: calc(60 * var(--rpx)); height: calc(60 * var(--rpx));
  border: calc(5 * var(--rpx)) solid #e0e8e3;
  border-top-color: #21a45d;
  border-radius: 50%;
  animation: gf-travel-spin 0.9s linear infinite;
}

@keyframes gf-travel-spin { to { transform: rotate(360deg); } }
.mp-page[data-route="pages/travel/travel"] /* ===== 套票加载失败的错误态（2026-10-07）=====
   关键：失败必须**显示真实原因 + 提供重试**，
   否则用户只会看到「加载不出」，既不知道是网络问题也没法自救。 */
.empty.err .empty-ico.warn{
  background: #fdf0ee; color: #d9483b;
  font-weight: 700;
}
.mp-page[data-route="pages/travel/travel"] .empty-s.err-msg{
  max-width: calc(460 * var(--rpx));
  color: #d9483b;
  word-break: break-all;
}
.mp-page[data-route="pages/travel/travel"] .empty-btn{
  margin-top: calc(36 * var(--rpx));
  padding: calc(18 * var(--rpx)) calc(48 * var(--rpx));
  border-radius: calc(999 * var(--rpx));
  background: #21a45d; color: #fff;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/travel/travel"] /* ===== 「帮我定制」模块（2026-10-11，参考截图）=====
   结构：.cc-soft（标题 + 四步骤，随列表往上滚走） + .cc-bar（联系方式 + 按钮，吸顶）。
   🔴 两块都是**通栏白底**（左右不留 calc(30 * var(--rpx)) 缝）：.cc-bar 吸顶时必须是不透明的整条，
      否则滚上来的卡片会从两侧缝隙里透出来叠字（同 .search-sticky.stuck 的理由）。 */
.cc-soft{
  margin-top: calc(28 * var(--rpx));
  background: #fff;
  padding: calc(30 * var(--rpx)) calc(30 * var(--rpx)) calc(26 * var(--rpx));
}
.mp-page[data-route="pages/travel/travel"] .cc-head{
  text-align: center;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 700; color: #333;
}
.mp-page[data-route="pages/travel/travel"] .cc-hl{ color: #21a45d; }
.mp-page[data-route="pages/travel/travel"] /* 四步骤：文档图标 — 连接线 — 文档图标 …（与截图一致）。
   连接线做成**独立节点**而不是 ::after —— 小程序 WXSS 不支持 :first-of-type / :last-child
   这类伪类，靠伪元素没法掐掉最后一个图标后面那条线。 */
.cc-steps{ display: flex; align-items: flex-start; margin-top: calc(28 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] .cc-step{ flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; }
.mp-page[data-route="pages/travel/travel"] /* 文档小图标：外框 + 内部两条横线，纯 CSS 绘制（不引图片资源，避免 downloadFile 域名白名单问题） */
.cc-ico{
  position: relative; box-sizing: border-box;
  width: calc(34 * var(--rpx)); height: calc(42 * var(--rpx));
  border: calc(3 * var(--rpx)) solid #21a45d; border-radius: calc(5 * var(--rpx));
}
.mp-page[data-route="pages/travel/travel"] .cc-ico::after{
  content: ''; position: absolute; left: calc(5 * var(--rpx)); right: calc(5 * var(--rpx)); top: calc(11 * var(--rpx));
  height: calc(3 * var(--rpx)); background: #21a45d;
  box-shadow: 0 calc(9 * var(--rpx)) 0 #21a45d;
}
.mp-page[data-route="pages/travel/travel"] .cc-lb{
  margin-top: calc(12 * var(--rpx));
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #666;
  white-space: nowrap;
}
.mp-page[data-route="pages/travel/travel"] .cc-line{ flex-shrink: 0; width: calc(56 * var(--rpx)); height: calc(2 * var(--rpx)); background: #dfe3e8; margin-top: calc(21 * var(--rpx)); }
.mp-page[data-route="pages/travel/travel"] /* 吸顶条。
   🔴 position:sticky 的粘附范围受**最近的块级祖先**限制 —— 所以它必须是 .pkg-list 的
      直接子节点（.pkg-list 够高，能一直粘到列表末尾）。塞进 .cc-soft 那种「只有自身高度」
      的短容器里，走到容器底部就松手（搜索框踩过同一个坑）。
   🔴 top = calc(114 * var(--rpx)) = 搜索框自身高度（.search-box 84 + 上下 padding 15×2）——
      两条吸顶条要上下叠放：搜索框在上（top:0）、此条在下（top:calc(114 * var(--rpx))）。
      改搜索框的 padding 必须同步改这里，tools/verify_travel_sticky_layout.js 会把两个数对起来。 */
.cc-bar{
  position: sticky; top: calc(114 * var(--rpx)); z-index: 80;
  background: #fff;
  padding: calc(20 * var(--rpx)) calc(30 * var(--rpx)) calc(24 * var(--rpx));
  box-shadow: 0 calc(6 * var(--rpx)) calc(16 * var(--rpx)) rgba(0,0,0,0.05);
}
.mp-page[data-route="pages/travel/travel"] .cc-row{ display: flex; align-items: center; }
.mp-page[data-route="pages/travel/travel"] .cc-k{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; }
.mp-page[data-route="pages/travel/travel"] .cc-cc{ margin-left: calc(18 * var(--rpx)); font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/travel/travel"] .cc-ar{ margin-left: calc(4 * var(--rpx)); font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/travel/travel"] /* 🔴 号码可能拿不到（未登录）→ 必须有兜底文案 + 省略号，不能留空把整行压扁 */
.cc-ph{
  flex: 1; min-width: 0; margin-left: calc(16 * var(--rpx));
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mp-page[data-route="pages/travel/travel"] .cc-ph.empty{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #b8bcc2; }
.mp-page[data-route="pages/travel/travel"] /* 主按钮用站内主色 #21a45d（与 .empty-btn / .lb-btn.on 同色）。
   截图里是青绿 #35c2b6 —— 想改回截图那版只需换这一个值。 */
.cc-btn{
  margin-top: calc(22 * var(--rpx)); height: calc(84 * var(--rpx)); border-radius: calc(10 * var(--rpx));
  background: #21a45d; color: #fff;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  display: flex; align-items: center; justify-content: center;
}
.mp-page[data-route="pages/travel/travel"] /* 双卡布局：容器自带 calc(30 * var(--rpx)) 左右 padding，而这两块要**通栏**（吸顶条必须盖满整条），
   故用负 margin 抵掉容器 padding，让 margin box 恰好等于一行宽（690+60−60 = 690）。 */
.pkg-list.two .cc-soft,.mp-page[data-route="pages/travel/travel"] .pkg-list.two .cc-bar{
  width: calc(100% + calc(60 * var(--rpx)));
  margin-left: calc(-30 * var(--rpx));
  margin-right: calc(-30 * var(--rpx));
}
.mp-page[data-route="pages/travel/travel"] /* 双卡容器有 calc(20 * var(--rpx)) 行距（gap），此处再补 calc(8 * var(--rpx)) → 与卡片间 calc(28 * var(--rpx)) 的上间距一致 */
.pkg-list.two .cc-soft{ margin-top: calc(8 * var(--rpx)); }

/* ===== pages/booking/fill.wxss ===== */
.mp-page[data-route="pages/booking/fill"] /* pages/booking/fill.wxss */
/* pages/booking/fill.wxss —— 订单填写（按设计稿） */
.page{ padding: calc(24 * var(--rpx)) calc(24 * var(--rpx)) calc(220 * var(--rpx)); background: #f5f6f7; min-height: 100dvh; }
.mp-page[data-route="pages/booking/fill"] .card{ background: #fff; border-radius: calc(16 * var(--rpx)); padding: calc(26 * var(--rpx)); margin-bottom: calc(22 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .card-head{ display: flex; align-items: center; justify-content: space-between; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .card-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; }
.mp-page[data-route="pages/booking/fill"] .card-more{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/booking/fill"] .card-sub{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/booking/fill"] .card-sub.orange{ color: #ff7a45; }
.mp-page[data-route="pages/booking/fill"] .m-tag{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #b98d4f; border: calc(2 * var(--rpx)) solid #d9b98a; border-radius: calc(6 * var(--rpx)); padding: calc(2 * var(--rpx)) calc(8 * var(--rpx)); margin-left: calc(8 * var(--rpx)); font-weight: 400; }
.mp-page[data-route="pages/booking/fill"] /* ---------- ① 产品信息卡 ---------- */
.prod-top{ display: flex; align-items: center; justify-content: space-between; margin-bottom: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .prod-name{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.mp-page[data-route="pages/booking/fill"] .prod-link{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #1677ff; flex-shrink: 0; }
.mp-page[data-route="pages/booking/fill"] .prod-row{ display: flex; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1.9; }
.mp-page[data-route="pages/booking/fill"] .prod-row .k{ color: #999; flex-shrink: 0; }
.mp-page[data-route="pages/booking/fill"] .prod-row .v{ color: #333; }
.mp-page[data-route="pages/booking/fill"] .price-o{ color: #ff6b2b !important; font-weight: 600; }
.mp-page[data-route="pages/booking/fill"] .blue{ color: #1677ff; }
.mp-page[data-route="pages/booking/fill"] .badges{ display: flex; gap: calc(24 * var(--rpx)); margin-top: calc(14 * var(--rpx)); flex-wrap: wrap; }
.mp-page[data-route="pages/booking/fill"] .badge{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); display: flex; align-items: center; gap: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .b-green{ color: #21a45d; }
.mp-page[data-route="pages/booking/fill"] .b-orange{ color: #ff9a2e; }
.mp-page[data-route="pages/booking/fill"] .b-ico{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/booking/fill"] /* ---------- ② 预订须知 ---------- */
.notice{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #666; line-height: 1.8; max-height: calc(130 * var(--rpx)); overflow: hidden; transition: max-height .25s; }
.mp-page[data-route="pages/booking/fill"] .notice.open{ max-height: calc(600 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .n-item{ margin-bottom: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] /* ---------- ③ 球员信息 ---------- */
.chips{ display: flex; flex-wrap: wrap; gap: calc(18 * var(--rpx)); margin-bottom: calc(22 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .chip{
  position: relative; background: #f2f6f3; color: #333;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); padding: calc(14 * var(--rpx)) calc(30 * var(--rpx)); border-radius: calc(10 * var(--rpx));
  display: flex; align-items: center;
}
.mp-page[data-route="pages/booking/fill"] .chip.add{ background: #f2f6f3; color: #21a45d; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); padding: calc(14 * var(--rpx)) calc(26 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .players-empty{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; line-height: 1.6; margin: calc(-8 * var(--rpx)) 0 calc(22 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .pick-empty{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; padding: calc(40 * var(--rpx)) 0; text-align: center; }
.mp-page[data-route="pages/booking/fill"] .chip-x{
  position: absolute; top: calc(-12 * var(--rpx)); right: calc(-12 * var(--rpx));
  width: calc(32 * var(--rpx)); height: calc(32 * var(--rpx)); border-radius: 50%;
  background: #ff4d4f; color: #fff; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); line-height: calc(30 * var(--rpx)); text-align: center;
}
.mp-page[data-route="pages/booking/fill"] .input-row{ display: flex; align-items: center; border-bottom: calc(2 * var(--rpx)) solid #f0f1f3; padding: calc(20 * var(--rpx)) 0; }
.mp-page[data-route="pages/booking/fill"] .input-row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/booking/fill"] .pre{ width: calc(130 * var(--rpx)); font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; flex-shrink: 0; }
.mp-page[data-route="pages/booking/fill"] .flex-input{ flex: 1; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/booking/fill"] .auto-tag{
  flex-shrink: 0; font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #1677ff;
  background: #eef5ff; border-radius: calc(6 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(12 * var(--rpx));
}
.mp-page[data-route="pages/booking/fill"] /* ---------- ④ 拼组需求 ---------- */
.radios{ display: flex; gap: calc(28 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .radio{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; position: relative; padding-left: calc(34 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .radio::before{
  content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%);
  width: calc(28 * var(--rpx)); height: calc(28 * var(--rpx)); border-radius: 50%; border: calc(2 * var(--rpx)) solid #ccc; box-sizing: border-box;
}
.mp-page[data-route="pages/booking/fill"] .radio.on{ color: #222; }
.mp-page[data-route="pages/booking/fill"] .radio.on::before{ border-color: #1677ff; background: radial-gradient(circle, #1677ff 40%, #fff 46%); }
.mp-page[data-route="pages/booking/fill"] .sub-label{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-bottom: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] /* 拼组人员：整行可点（原来只有一行纯文字、没有任何绑定 → 用户点上去毫无反应）。
   padding 撑出触摸热区 —— 否则只有精确点在文字上才算命中，右侧空白区是死的。 */
.sub-label-tap{ display: flex; align-items: center; justify-content: space-between; padding: calc(10 * var(--rpx)) 0; }
.mp-page[data-route="pages/booking/fill"] .sub-pick{ color: #1677ff; }
.mp-page[data-route="pages/booking/fill"] /* 拼组区的 chips 后面紧接「⚠ 以球会当天安排为准」，收掉自带的下外边距避免间距过大 */
.chips.group-chips{ margin-bottom: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .group-empty{ margin: 0 0 calc(6 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .warn-line{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #ff9a2e; margin-top: calc(16 * var(--rpx)); display: flex; align-items: center; gap: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .w-ico{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/booking/fill"] /* ---------- ⑤ 优享会员 ---------- */
.member{ background: linear-gradient(180deg, #fffaf0 0%, #ffffff 40%); }
.mp-page[data-route="pages/booking/fill"] .ben{ display: flex; align-items: center; justify-content: space-between; padding: calc(16 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f7f2e8; }
.mp-page[data-route="pages/booking/fill"] .ben:last-child{ border-bottom: none; }
.mp-page[data-route="pages/booking/fill"] .ben-name{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 500; }
.mp-page[data-route="pages/booking/fill"] .ben-sub{ color: #ff6b2b; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); margin-left: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .ben-desc{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #b98d4f; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .tog{
  width: calc(44 * var(--rpx)); height: calc(44 * var(--rpx)); border-radius: 50%;
  border: calc(2 * var(--rpx)) solid #d9d9d9; color: #999;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); text-align: center; line-height: calc(40 * var(--rpx)); flex-shrink: 0;
}
.mp-page[data-route="pages/booking/fill"] .tog.on{ background: #21a45d; border-color: #21a45d; color: #fff; }
.mp-page[data-route="pages/booking/fill"] /* 会员订场价是「等级价格」而非可选优惠：已含在单价里，固定展示不可点 */
.tog.locked{
  width: auto; height: auto; border-radius: calc(8 * var(--rpx));
  border: calc(1 * var(--rpx)) solid #ffd8cc; background: #fff3ee; color: #fa5151;
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1));
  padding: calc(3 * var(--rpx)) calc(12 * var(--rpx)); line-height: 1.5;
}
.mp-page[data-route="pages/booking/fill"] .bei-note{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #b98d4f; margin-top: calc(14 * var(--rpx)); line-height: 1.7; }
.mp-page[data-route="pages/booking/fill"] /* ---------- 订场双价对照（2026-10-07 会员价体系）----------
   嘉宾价 = 供应商基础挂牌价（划掉感），会员价 = 实际成交价（橙色强调）。 */
.mp-compare{
  display: flex; align-items: center; flex-wrap: wrap; gap: calc(12 * var(--rpx));
  padding: calc(16 * var(--rpx)); margin-bottom: calc(16 * var(--rpx));
  background: #fff8f4; border: calc(1 * var(--rpx)) solid #ffe0d0; border-radius: calc(14 * var(--rpx));
}
.mp-page[data-route="pages/booking/fill"] .mp-cp-l{ display: flex; align-items: baseline; gap: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .mp-cp-k{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/booking/fill"] /* 嘉宾价做成「划掉」视觉：它是基准，不是你付的钱 */
.mp-cp-v.guest{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb;
  text-decoration: line-through;
}
.mp-page[data-route="pages/booking/fill"] .mp-cp-arrow{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #ccc; }
.mp-page[data-route="pages/booking/fill"] .mp-cp-v.member{
  font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); color: #ff6b2b; font-weight: 700;
}
.mp-page[data-route="pages/booking/fill"] .mp-cp-save{
  width: 100%; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #fa5151;
}
.mp-page[data-route="pages/booking/fill"] /* ---------- ⑥⑦⑧ 行式卡片 ---------- */
.row-line{ display: flex; align-items: center; padding: calc(6 * var(--rpx)) 0; }
.mp-page[data-route="pages/booking/fill"] .row-card{ display: flex; align-items: center; }
.mp-page[data-route="pages/booking/fill"] .k{ color: #999; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); flex-shrink: 0; }
.mp-page[data-route="pages/booking/fill"] .w120{ width: calc(130 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .r-right{ flex: 1; display: flex; align-items: center; justify-content: flex-end; gap: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .coup-on{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/booking/fill"] .coup-gray{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/booking/fill"] .arrow{ color: #c8c8c8; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/booking/fill"] .promo{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-top: calc(16 * var(--rpx)); line-height: 1.7; display: flex; align-items: center; gap: calc(10 * var(--rpx)); flex-wrap: wrap; }
.mp-page[data-route="pages/booking/fill"] .p-tag{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); padding: calc(2 * var(--rpx)) calc(10 * var(--rpx)); border-radius: calc(6 * var(--rpx)); color: #fff; flex-shrink: 0; }
.mp-page[data-route="pages/booking/fill"] .t-blue{ background: #1677ff; }
.mp-page[data-route="pages/booking/fill"] .t-green{ background: #21a45d; }
.mp-page[data-route="pages/booking/fill"] /* ---------- 弹层 ---------- */
.mask{ position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 200; display: flex; align-items: flex-end; }
.mp-page[data-route="pages/booking/fill"] .sheet{
  width: 100%; background: #fff; border-radius: calc(24 * var(--rpx)) calc(24 * var(--rpx)) 0 0;
  padding: calc(30 * var(--rpx)) calc(30 * var(--rpx)) calc(calc(30 * var(--rpx)) + env(safe-area-inset-bottom));
  max-height: 70dvh; display: flex; flex-direction: column;
}
.mp-page[data-route="pages/booking/fill"] .fee-sheet{ max-height: none; }
.mp-page[data-route="pages/booking/fill"] .sheet-head{ display: flex; align-items: center; justify-content: space-between; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .sheet-t{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; flex: 1; text-align: center; }
.mp-page[data-route="pages/booking/fill"] .sheet-x{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); color: #999; padding: 0 calc(10 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .sheet-body{ max-height: 46dvh; }
.mp-page[data-route="pages/booking/fill"] .pick-row{ display: flex; align-items: center; padding: calc(24 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f0f1f3; }
.mp-page[data-route="pages/booking/fill"] .pradio{ width: calc(34 * var(--rpx)); height: calc(34 * var(--rpx)); border-radius: 50%; border: calc(3 * var(--rpx)) solid #ccc; box-sizing: border-box; flex-shrink: 0; }
.mp-page[data-route="pages/booking/fill"] .pradio.on{ border-color: #1677ff; background: radial-gradient(circle, #1677ff 42%, #fff 48%); }
.mp-page[data-route="pages/booking/fill"] .p-name{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; margin-left: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .p-phone{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-left: calc(24 * var(--rpx)); flex: 1; }
.mp-page[data-route="pages/booking/fill"] .p-edit{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #1677ff; }
.mp-page[data-route="pages/booking/fill"] .sheet-btns{ display: flex; gap: calc(24 * var(--rpx)); margin-top: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] /* 🔴 精宽按钮用 mp-view+catchtap（不用原生 mp-button）：button 自带 margin:auto 等默认样式
   在 flex 容器里会把「确定」顶出弹层右缘、两按钮不等宽（2026-10-12 真机实测） */
.add-player-btn{
  flex: 1 1 0; min-width: 0; margin: 0;
  background: #eaf2ff; color: #1677ff;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; border-radius: calc(44 * var(--rpx)); height: calc(84 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
  line-height: 1; padding: 0;
}
.mp-page[data-route="pages/booking/fill"] .add-player-btn.primary{ background: #1677ff; color: #fff; }
.mp-page[data-route="pages/booking/fill"] /* 费用明细 */
.fee-row{ display: flex; justify-content: space-between; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #555; padding: calc(12 * var(--rpx)) 0; }
.mp-page[data-route="pages/booking/fill"] .fee-row .minus{ color: #ff6b2b; }
.mp-page[data-route="pages/booking/fill"] .fee-row.total{ border-top: calc(2 * var(--rpx)) solid #f0f1f3; margin-top: calc(10 * var(--rpx)); padding-top: calc(20 * var(--rpx)); color: #222; font-weight: 600; }
.mp-page[data-route="pages/booking/fill"] .big{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/booking/fill"] /* ---------- 底部 ---------- */
.footer{
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 100;
  background: #fff; display: flex; align-items: center;
  padding: calc(14 * var(--rpx)) calc(24 * var(--rpx)) calc(calc(14 * var(--rpx)) + env(safe-area-inset-bottom));
  box-shadow: 0 calc(-4 * var(--rpx)) calc(20 * var(--rpx)) rgba(0,0,0,0.06);
}
.mp-page[data-route="pages/booking/fill"] .f-price{ color: #ff6b2b; }
.mp-page[data-route="pages/booking/fill"] .f-price .rmb{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/booking/fill"] .f-price .num{ font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; }
.mp-page[data-route="pages/booking/fill"] .f-fee{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-left: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .pay-btn{
  margin-left: auto; background: #21a45d; color: #fff;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  height: calc(80 * var(--rpx)); line-height: calc(80 * var(--rpx)); padding: 0 calc(70 * var(--rpx));
  border-radius: calc(40 * var(--rpx));
}
.mp-page[data-route="pages/booking/fill"] .pay-btn::after{ border: none; }
.mp-page[data-route="pages/booking/fill"] /* ---- 套餐预订 ---- */
.pkg-room{ display: flex; align-items: center; gap: calc(16 * var(--rpx)); padding: calc(14 * var(--rpx)) 0 calc(4 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .pkg-room-tag{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; background: #eaf7f0;
  border: calc(2 * var(--rpx)) solid #21a45d; border-radius: calc(8 * var(--rpx)); padding: calc(6 * var(--rpx)) calc(16 * var(--rpx));
}
.mp-page[data-route="pages/booking/fill"] .pkg-room-sub{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #888; }
.mp-page[data-route="pages/booking/fill"] .edit-link{ margin-left: auto; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9; }
.mp-page[data-route="pages/booking/fill"] .cday{ border: calc(2 * var(--rpx)) solid #eef0f2; border-radius: calc(12 * var(--rpx)); padding: calc(16 * var(--rpx)) calc(20 * var(--rpx)); margin: calc(12 * var(--rpx)) 0; }
.mp-page[data-route="pages/booking/fill"] .cd-row{ display: flex; align-items: center; gap: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .cd-badge{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: #e64340;
  border-radius: calc(6 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(10 * var(--rpx)); font-weight: 600;
}
.mp-page[data-route="pages/booking/fill"] .cd-date{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; }
.mp-page[data-route="pages/booking/fill"] .cd-time{ margin-left: auto; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #555; }
.mp-page[data-route="pages/booking/fill"] .cd-pen{ color: #4a90d9; margin-left: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] /* 🔴 2026-10-08：开球时间改为「标签在上 + 大号加粗时间在下」的整块，点整块弹出日历+时间表 */
.cday .cd-time{
  margin: calc(14 * var(--rpx)) 0 0;
  display: flex; align-items: baseline; gap: calc(16 * var(--rpx));
  background: #f6f9ff; border: calc(2 * var(--rpx)) solid #e3ecff; border-radius: calc(12 * var(--rpx));
  padding: calc(16 * var(--rpx)) calc(22 * var(--rpx));
}
.mp-page[data-route="pages/booking/fill"] .cd-time-label{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9; flex-shrink: 0; }
.mp-page[data-route="pages/booking/fill"] .cd-time-val{ font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #222; line-height: 1.1; }
.mp-page[data-route="pages/booking/fill"] .cday .cd-time .cd-pen{ margin-left: auto; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/booking/fill"] /* ⑪ 开球时间选择弹层 */
.time-sheet{ max-height: 80dvh; }
.mp-page[data-route="pages/booking/fill"] .tp-sec-t{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; font-weight: 600; margin: calc(22 * var(--rpx)) 0 calc(14 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .tp-dates{ white-space: nowrap; width: 100%; }
.mp-page[data-route="pages/booking/fill"] .tp-date{
  display: inline-flex; flex-direction: column; align-items: center; justify-content: center;
  min-width: calc(116 * var(--rpx)); padding: calc(16 * var(--rpx)) calc(10 * var(--rpx)); margin-right: calc(16 * var(--rpx));
  background: #f5f6f7; border: calc(2 * var(--rpx)) solid #eef0f2; border-radius: calc(14 * var(--rpx));
}
.mp-page[data-route="pages/booking/fill"] .tp-date.on{ background: #eaf2ff; border-color: #4a90d9; }
.mp-page[data-route="pages/booking/fill"] .tp-d-d{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; }
.mp-page[data-route="pages/booking/fill"] .tp-d-w{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .tp-date.on .tp-d-d,.mp-page[data-route="pages/booking/fill"] .tp-date.on .tp-d-w{ color: #2b6cb0; }
.mp-page[data-route="pages/booking/fill"] .tp-times{ display: flex; flex-wrap: wrap; gap: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .tp-time{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333;
  background: #f5f6f7; border: calc(2 * var(--rpx)) solid #eef0f2; border-radius: calc(12 * var(--rpx));
  padding: calc(18 * var(--rpx)) calc(30 * var(--rpx));
}
.mp-page[data-route="pages/booking/fill"] .tp-time.on{ background: #21a45d; border-color: #21a45d; color: #fff; font-weight: 600; }
.mp-page[data-route="pages/booking/fill"] .tp-confirm{ margin-top: calc(30 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .cd-course{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; margin-top: calc(12 * var(--rpx)); padding-left: calc(4 * var(--rpx)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-page[data-route="pages/booking/fill"] .num-row{ display: flex; align-items: center; justify-content: space-between; padding: calc(16 * var(--rpx)) 0; }
.mp-page[data-route="pages/booking/fill"] .num-name{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/booking/fill"] .num-name.gray{ color: #ff9800; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/booking/fill"] .num-sub{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-left: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .num-chip{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9; background: #eef5fc;
  border-radius: calc(8 * var(--rpx)); padding: calc(6 * var(--rpx)) calc(14 * var(--rpx));
}
.mp-page[data-route="pages/booking/fill"] .stp{ display: flex; align-items: center; gap: calc(22 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .stp-btn{
  width: calc(52 * var(--rpx)); height: calc(52 * var(--rpx)); border-radius: 50%;
  background: #f2f3f5; color: #333; font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1));
  display: flex; align-items: center; justify-content: center;
}
.mp-page[data-route="pages/booking/fill"] .stp-num{ min-width: calc(48 * var(--rpx)); text-align: center; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; }
.mp-page[data-route="pages/booking/fill"] /* ---------- 🔴 订场人数（2026-10-09 会员带嘉宾礼遇｜2026-10-10 版式调整）----------
   2026-10-10 用户需求（附箭头示意）：「球员信息」下移到名单行、「＋」靠右放大，
   于是这一行**只剩「订场人数 + 步进器」** → 标签放大加粗，成为这张卡的主控件。
   ⚠️ 铁律：精确宽度的按钮用 mp-view/text + bindtap，**不用原生 <button>**（真机只有理论值约 52%）。 */
.seats-row{ display: flex; align-items: center; justify-content: space-between; padding-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .seats-name{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222; }
.mp-page[data-route="pages/booking/fill"] /* 步进器仍沿用旧尺寸（用户只要求放大**文字**，没让动按钮），靠 .seats-stp 覆盖 .stp 的 calc(52 * var(--rpx)) */
.seats-stp{ gap: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .seats-stp .stp-btn{ width: calc(44 * var(--rpx)); height: calc(44 * var(--rpx)); font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/booking/fill"] .seats-stp .stp-num{ min-width: calc(40 * var(--rpx)); font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/booking/fill"] /* 已到下限（1 人）时置灰，提示不可再减 */
.seats-stp .stp-btn.dis{ opacity: .4; }
.mp-page[data-route="pages/booking/fill"] /* ---------- 🔴 球员名单行（2026-10-10 用户需求）----------
   名单在左（.players-chips 用 flex:1 撑开），「球员信息 + ＋」成组**钉在右侧**。
   🔴 .chips 本身是 flex 子项、内部又 flex-wrap → **必须 min-width:0**，
      否则长名单的 min-content 会把右组的「＋」挤出屏幕（项目铁律：flex 子项默认 min-width:auto）。
   🔴 「＋」的放大放在 .chip.add.add-lg（三选一，特异性高于 .chip.add），
      改回 .chip.add 就等于把放大撤销 → 守卫 verify_booking_seats_head.js 会变红。 */
.players-row{ display: flex; align-items: center; gap: calc(18 * var(--rpx)); margin-bottom: calc(22 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .players-chips{ flex: 1; min-width: 0; margin-bottom: 0; }
.mp-page[data-route="pages/booking/fill"] .players-add{ display: flex; align-items: center; gap: calc(14 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/booking/fill"] .players-label{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; white-space: nowrap; }
.mp-page[data-route="pages/booking/fill"] .chip.add.add-lg{ font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); padding: calc(14 * var(--rpx)) calc(32 * var(--rpx)); border-radius: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] /* 超出席位时的规则说明（只说结果，不展示计算方式） */
.seat-tip{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #b45309;
  background: #fff7ed; border: calc(2 * var(--rpx)) solid #fde3b8; border-radius: calc(10 * var(--rpx));
  padding: calc(12 * var(--rpx)) calc(18 * var(--rpx)); margin-bottom: calc(18 * var(--rpx)); line-height: 1.5;
}
.mp-page[data-route="pages/booking/fill"] /* 打球人数 < 订场人数的提醒：用中性蓝灰，避免和上面的规则说明混淆 */
.seat-warn{ color: #55707f; background: #f2f6f8; border-color: #dbe6ec; }
.mp-page[data-route="pages/booking/fill"] .fee-foot{ display: flex; align-items: baseline; gap: calc(8 * var(--rpx)); padding: calc(20 * var(--rpx)) calc(8 * var(--rpx)) calc(4 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .ff-rmb{ color: #ff6b2b; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; }
.mp-page[data-route="pages/booking/fill"] .ff-num{ color: #ff6b2b; font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; }
.mp-page[data-route="pages/booking/fill"] .ff-label{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/booking/fill"] .fee-foot .pay-btn{ margin-left: auto; }
.mp-page[data-route="pages/booking/fill"] .f-cap{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(2 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] /* ===== 分享归因提示 ===== */
.ref-hint{
  display: flex; align-items: flex-start;
  margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0; padding: calc(16 * var(--rpx)) calc(20 * var(--rpx));
  background: #f3f8ff; border: calc(1 * var(--rpx)) solid #d3e4ff; border-radius: calc(14 * var(--rpx));
}
.mp-page[data-route="pages/booking/fill"] .rh-ico{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); margin-right: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/booking/fill"] .rh-txt{ flex: 1; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #5b7aa8; line-height: 1.5; }
.mp-page[data-route="pages/booking/fill"] .rh-name{ color: #2b6cb0; font-weight: 600; }

/* ===== pages/booking/person.wxss ===== */
.mp-page[data-route="pages/booking/person"] /* pages/booking/person.wxss */
/* pages/booking/person.wxss —— 个人信息 */
.page{ background: #f5f6f7; min-height: 100dvh; padding: calc(24 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pages/booking/person"] .form{ background: #fff; border-radius: calc(16 * var(--rpx)); padding: calc(10 * var(--rpx)) calc(30 * var(--rpx)); }
.mp-page[data-route="pages/booking/person"] .row{ display: flex; align-items: center; border-bottom: calc(2 * var(--rpx)) solid #f0f1f3; padding: calc(30 * var(--rpx)) 0; }
.mp-page[data-route="pages/booking/person"] .row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/booking/person"] .label{ width: calc(180 * var(--rpx)); font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; flex-shrink: 0; }
.mp-page[data-route="pages/booking/person"] .input{ flex: 1; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/booking/person"] /* 手机号「已自动获取」标记：行内级，别改成块级（会破坏父级 flex 横排） */
.auto{
  flex-shrink: 0; margin-left: calc(12 * var(--rpx));
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d;
}
.mp-page[data-route="pages/booking/person"] /* 微信一键获取手机号（账号未绑定时的兜底入口） */
.bind-btn{
  margin: 0 0 0 auto; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  height: calc(60 * var(--rpx)); padding: 0 calc(24 * var(--rpx)); border-radius: calc(30 * var(--rpx));
  background: #eef9f2; color: #21a45d;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1;
}
.mp-page[data-route="pages/booking/person"] .bind-btn::after{ border: none; }
.mp-page[data-route="pages/booking/person"] .tip{
  display: flex; gap: calc(12 * var(--rpx)); align-items: flex-start;
  margin-top: calc(24 * var(--rpx)); background: #eef9f2; border-radius: calc(14 * var(--rpx));
  padding: calc(22 * var(--rpx)) calc(24 * var(--rpx)); font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; line-height: 1.7;
}
.mp-page[data-route="pages/booking/person"] .shield{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/booking/person"] .ok-btn{
  margin-top: calc(120 * var(--rpx)); background: #21a45d; color: #fff;
  font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  height: calc(92 * var(--rpx)); border-radius: calc(46 * var(--rpx));
  width: 80%;
  /* 微信原生 button 自带内边距/行高，line-height=height 在 iOS 上会偏移 → 用 flex 居中 */
  display: flex; align-items: center; justify-content: center;
  line-height: 1; padding: 0;
}
.mp-page[data-route="pages/booking/person"] .ok-btn::after{ border: none; }

/* ===== pages/booking/result.wxss ===== */
.mp-page[data-route="pages/booking/result"] /* pages/booking/result.wxss */
.page{ padding: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/booking/result"] .ok-wrap{ text-align: center; padding: calc(90 * var(--rpx)) 0 calc(50 * var(--rpx)); }
.mp-page[data-route="pages/booking/result"] .ok-circle{
  width: calc(140 * var(--rpx)); height: calc(140 * var(--rpx)); border-radius: 50%; background: #21a45d; color: #fff;
  font-size: calc(calc(80 * var(--rpx)) * var(--gf-fs, 1)); line-height: calc(140 * var(--rpx)); margin: 0 auto;
}
.mp-page[data-route="pages/booking/result"] .ok-title{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; margin-top: calc(26 * var(--rpx)); }
.mp-page[data-route="pages/booking/result"] .ok-amount{ font-size: calc(calc(56 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #ff6b2b; margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/booking/result"] .ok-sub{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/booking/result"] .info{ padding: calc(28 * var(--rpx)); }
.mp-page[data-route="pages/booking/result"] .row{ display: flex; justify-content: space-between; padding: calc(18 * var(--rpx)) 0; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); border-bottom: calc(2 * var(--rpx)) solid #f6f6f6; }
.mp-page[data-route="pages/booking/result"] .row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/booking/result"] .label{ color: #999; }
.mp-page[data-route="pages/booking/result"] .green{ color: #21a45d; font-weight: 600; }
.mp-page[data-route="pages/booking/result"] .tip{ color: #666; max-width: calc(420 * var(--rpx)); text-align: right; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/booking/result"] .btns{ display: flex; gap: calc(20 * var(--rpx)); margin-top: calc(40 * var(--rpx)); }
.mp-page[data-route="pages/booking/result"] .b{ flex: 1; height: calc(84 * var(--rpx)); line-height: calc(84 * var(--rpx)); }
.mp-page[data-route="pages/booking/result"] .btn-ghost.b{ line-height: calc(80 * var(--rpx)); }
.mp-page[data-route="pages/booking/result"] /* ===== 订阅消息入口卡 ===== */
.subbox{
  display: flex; align-items: center;
  margin-top: calc(24 * var(--rpx)); padding: calc(26 * var(--rpx)) calc(24 * var(--rpx));
  background: #fff8f2; border: calc(2 * var(--rpx)) solid #ffe3cc; border-radius: calc(20 * var(--rpx));
}
.mp-page[data-route="pages/booking/result"] .sub-ico{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); margin-right: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/booking/result"] .sub-txt{ flex: 1; }
.mp-page[data-route="pages/booking/result"] .sub-title{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #ff6b2b; }
.mp-page[data-route="pages/booking/result"] .sub-desc{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); line-height: 1.5; }
.mp-page[data-route="pages/booking/result"] .sub-arr{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); color: #ffc9a3; margin-left: calc(12 * var(--rpx)); }

/* ===== pages/orders/orders.wxss ===== */
.mp-page[data-route="pages/orders/orders"] /* pages/orders/orders.wxss */
/* 🔴 2026-10-09 用户反馈「我的订单页整个页面能左右/上下拖动，露大片空白」。
   真因：① 横向溢出 —— flex 子项（.o-tag/.o-name/.o-line 等长文本）没有 min-width:0，
        文字不换行就把卡片撑得比屏幕宽，页面于是能横向拖；
        ② 整页滚动 —— .list 是普通 mp-view，页面 body 一起滚。
   对策见文件末尾「订单页固定画面」小节：body 不滚、列表内部滚、横向锁死。 */

/* ===== 订单页固定画面（2026-10-09）=====
   整页不滚：.page 高度 100dvh + overflow:hidden，滚动只发生在 .list 内部。
   ⚠️ .page 是 flex 列容器 → .list 用 flex:1 + min-height:0 拿到"剩余高度"，
      mp-scroll-view 有了确定高度才能滚；缺 min-height:0 会按内容撑高、整页又滚起来。 */
.page{
  padding: 0;
  display: flex;
  flex-direction: column;
  /* 锁死整页滚动（配合 json disableScroll + page-meta 三重保险） */
  height: 100dvh;
  overflow: hidden;
}
.mp-page[data-route="pages/orders/orders"] .tabs{ white-space: nowrap; background: #fff; padding: calc(18 * var(--rpx)) calc(12 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/orders/orders"] .tab{
  display: inline-block; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #666;
  padding: calc(12 * var(--rpx)) calc(28 * var(--rpx)); border-radius: calc(30 * var(--rpx)); margin-right: calc(8 * var(--rpx));
}
.mp-page[data-route="pages/orders/orders"] .tab.on{ background: #e8f6ee; color: #21a45d; font-weight: 700; }
.mp-page[data-route="pages/orders/orders"] /* 🔴 订单列表现在是 mp-scroll-view：必须有确定高度才能内部滚动。
   flex:1 + min-height:0 → 拿到「.page 100dvh 减去 tab 高度」的剩余空间。 */
.list{
  flex: 1; min-height: 0;
  /* 横向锁死：杜绝左右拖动露空白 */
  overflow-x: hidden;
}
.mp-page[data-route="pages/orders/orders"] .list-inner{ padding: calc(24 * var(--rpx)); padding-bottom: calc(calc(24 * var(--rpx)) + env(safe-area-inset-bottom)); }
.mp-page[data-route="pages/orders/orders"] .o-card{ margin-bottom: calc(24 * var(--rpx)); padding: calc(24 * var(--rpx)) calc(24 * var(--rpx)) calc(20 * var(--rpx)); }
.mp-page[data-route="pages/orders/orders"] /* 类型 + 状态 */
.o-top{ display: flex; justify-content: space-between; align-items: center; padding-bottom: calc(18 * var(--rpx)); border-bottom: calc(2 * var(--rpx)) solid #f5f5f5; }
.mp-page[data-route="pages/orders/orders"] /* 🔴 flex 子项默认 min-width:auto → 长文本不换行会把卡片撑破（横向溢出元凶）。
   min-width:0 让它可以被压缩，word-break/white-space 控制断行方式。 */
.o-type{ display: flex; align-items: center; min-width: 0; flex: 1; }
.mp-page[data-route="pages/orders/orders"] .o-ico{
  width: calc(36 * var(--rpx)); height: calc(36 * var(--rpx)); border-radius: 50%;
  background: #21a45d; color: #fff; font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1));
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;   /* 图标不能被压扁 */
}
.mp-page[data-route="pages/orders/orders"] .o-ico.pkg{ background: #ff8c1a; }
.mp-page[data-route="pages/orders/orders"] .o-tag{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #333; margin-left: calc(12 * var(--rpx)); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mp-page[data-route="pages/orders/orders"] .o-state{ display: flex; align-items: center; flex-shrink: 0; }
.mp-page[data-route="pages/orders/orders"] /* 状态永不压缩 */
.o-state-t{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; }
.mp-page[data-route="pages/orders/orders"] .o-state-t.red{ color: #fa5151; }
.mp-page[data-route="pages/orders/orders"] .o-state-t.orange{ color: #ff8c1a; }
.mp-page[data-route="pages/orders/orders"] .o-state-t.green{ color: #21a45d; }
.mp-page[data-route="pages/orders/orders"] .o-state-t.gray{ color: #999; }
.mp-page[data-route="pages/orders/orders"] .o-state-i{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #ccc; margin-left: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/orders/orders"] /* 内容 */
.o-body{ padding: calc(20 * var(--rpx)) 0 calc(4 * var(--rpx)); }
.mp-page[data-route="pages/orders/orders"] /* 🔴 球场名/套餐名可能很长（如「东莞罗斯-保尔特场-东莞观澜湖高尔夫度假村」）：
   必须允许断行，否则单词/长串不折行会把卡片横向撑破。 */
.o-name{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; line-height: 1.4; color: #222; word-break: break-all; overflow-wrap: anywhere; }
.mp-page[data-route="pages/orders/orders"] .o-line{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(10 * var(--rpx)); word-break: break-all; overflow-wrap: anywhere; }
.mp-page[data-route="pages/orders/orders"] .o-price{ text-align: right; font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #ff6b2b; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/orders/orders"] .o-price .rmb{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; margin-right: calc(2 * var(--rpx)); }
.mp-page[data-route="pages/orders/orders"] /* 操作按钮 */
.o-actions{ display: flex; justify-content: flex-end; align-items: center; margin-top: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/orders/orders"] .ob{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #666; border: calc(2 * var(--rpx)) solid #ddd; border-radius: calc(32 * var(--rpx));
  padding: calc(10 * var(--rpx)) calc(28 * var(--rpx)); margin-left: calc(16 * var(--rpx));
}
.mp-page[data-route="pages/orders/orders"] .ob.primary{ background: #21a45d; border-color: #21a45d; color: #fff; font-weight: 600; }
.mp-page[data-route="pages/orders/orders"] .ob.yellow{ background: #ffd940; border-color: #ffd940; color: #333; font-weight: 600; }
.mp-page[data-route="pages/orders/orders"] .empty-btn{ margin-top: calc(26 * var(--rpx)); }
.mp-page[data-route="pages/orders/orders"] /* 删除确认弹层 */
.del-mask{
  position: fixed; inset: 0; background: rgba(0,0,0,.45);
  display: flex; align-items: center; justify-content: center; z-index: 99;
}
.mp-page[data-route="pages/orders/orders"] .del-dialog{ width: calc(560 * var(--rpx)); background: #fff; border-radius: calc(24 * var(--rpx)); overflow: hidden; }
.mp-page[data-route="pages/orders/orders"] .del-head{
  background: #21a45d; height: calc(140 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
}
.mp-page[data-route="pages/orders/orders"] .del-ico{ font-size: calc(calc(64 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; }
.mp-page[data-route="pages/orders/orders"] .del-title{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222; text-align: center; margin-top: calc(36 * var(--rpx)); }
.mp-page[data-route="pages/orders/orders"] .del-sub{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; text-align: center; margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/orders/orders"] .del-btns{ display: flex; gap: calc(24 * var(--rpx)); padding: calc(36 * var(--rpx)) calc(32 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pages/orders/orders"] .del-btn{
  flex: 1; text-align: center; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  padding: calc(20 * var(--rpx)) 0; border-radius: calc(40 * var(--rpx));
}
.mp-page[data-route="pages/orders/orders"] .del-btn.cancel{ border: calc(2 * var(--rpx)) solid #ddd; color: #666; }
.mp-page[data-route="pages/orders/orders"] .del-btn.danger{ background: #fa5151; color: #fff; }

/* ===== pages/orders/detail.wxss ===== */
.mp-page[data-route="pages/orders/detail"] /* pages/orders/detail.wxss */
/* pages/orders/detail.wxss —— 订单详情
   2026-10-10 改版：字号整体上调（正文 24→calc(28 * var(--rpx))，卡片标题 28→calc(32 * var(--rpx))），
   并把「开球时间 + 当前状态」提到首屏重点区（时间 calc(68 * var(--rpx)) 主视觉）。
   🔴 所有字号必须走 calc(Nrpx * var(--gf-fs,.mp-page[data-route="pages/orders/detail"] 1))，禁写死 rpx（跟系统字号缩放）。 */
.page{ background: #f5f6f7; min-height: 100dvh; padding: calc(24 * var(--rpx)) calc(24 * var(--rpx)) calc(240 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pages/orders/detail"] /* ===== 重点区：当前状态 + 开球时间 ===== */
.hero{ background: #fff; border-radius: calc(16 * var(--rpx)); padding: calc(28 * var(--rpx)) calc(28 * var(--rpx)) calc(26 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .hero-st{
  display: flex; align-items: center; gap: calc(10 * var(--rpx));
  padding: calc(14 * var(--rpx)) calc(20 * var(--rpx)); border-radius: calc(12 * var(--rpx)); background: #f2f3f5;
}
.mp-page[data-route="pages/orders/detail"] .hero-st-ico{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1.2; flex-shrink: 0; }
.mp-page[data-route="pages/orders/detail"] .hero-st-t{ flex: 1; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #333; line-height: 1.5; }
.mp-page[data-route="pages/orders/detail"] .hero.ok .hero-st{ background: #eaf7f0; }
.mp-page[data-route="pages/orders/detail"] .hero.ok .hero-st-ico,.mp-page[data-route="pages/orders/detail"] .hero.ok .hero-st-t{ color: #1a9c58; }
.mp-page[data-route="pages/orders/detail"] .hero.warn .hero-st{ background: #fff3e8; }
.mp-page[data-route="pages/orders/detail"] .hero.warn .hero-st-ico,.mp-page[data-route="pages/orders/detail"] .hero.warn .hero-st-t{ color: #e5641a; }
.mp-page[data-route="pages/orders/detail"] .hero.wait .hero-st{ background: #eef5fc; }
.mp-page[data-route="pages/orders/detail"] .hero.wait .hero-st-ico,.mp-page[data-route="pages/orders/detail"] .hero.wait .hero-st-t{ color: #2f7bc0; }
.mp-page[data-route="pages/orders/detail"] .hero.mute .hero-st{ background: #f2f3f5; }
.mp-page[data-route="pages/orders/detail"] .hero.mute .hero-st-ico,.mp-page[data-route="pages/orders/detail"] .hero.mute .hero-st-t{ color: #8a8f99; }
.mp-page[data-route="pages/orders/detail"] .hero-time{ margin-top: calc(26 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .ht-label{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; letter-spacing: calc(2 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .ht-line{ display: flex; align-items: baseline; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .ht-date{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222; line-height: 1.25; }
.mp-page[data-route="pages/orders/detail"] .ht-week{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-left: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .ht-clock{
  display: block; margin-top: calc(6 * var(--rpx));
  font-size: calc(calc(68 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; line-height: 1.15; color: #333;
  letter-spacing: calc(2 * var(--rpx));
}
.mp-page[data-route="pages/orders/detail"] .hero.ok .ht-clock{ color: #1a9c58; }
.mp-page[data-route="pages/orders/detail"] .hero.warn .ht-clock{ color: #e5641a; }
.mp-page[data-route="pages/orders/detail"] .hero.wait .ht-clock{ color: #2f7bc0; }
.mp-page[data-route="pages/orders/detail"] .hero.mute .ht-clock{ color: #8a8f99; }
.mp-page[data-route="pages/orders/detail"] .ht-sub{ margin-top: calc(14 * var(--rpx)); font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #e5641a; line-height: 1.5; }
.mp-page[data-route="pages/orders/detail"] .hero.mute .ht-sub{ color: #8a8f99; }
.mp-page[data-route="pages/orders/detail"] /* 订单编号：紧跟「开球时间」（2026-10-10 从页面底部的「订单信息」卡上移到这里）。
   用户找客服报单号是这个页面最高频的对外动作，所以配一个「复制」而不是让他长按选中。 */
.ht-no{ display: flex; align-items: center; margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .ht-no-k{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; flex-shrink: 0; }
.mp-page[data-route="pages/orders/detail"] .ht-no-v{
  flex: 1; min-width: 0; margin-left: calc(12 * var(--rpx));
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; letter-spacing: calc(1 * var(--rpx));
}
.mp-page[data-route="pages/orders/detail"] .ht-no-cp{
  flex-shrink: 0; margin-left: calc(12 * var(--rpx));
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #2f7bc0;
  background: #eef5fc; border: calc(2 * var(--rpx)) solid #cfe2f5; border-radius: calc(6 * var(--rpx));
  padding: calc(4 * var(--rpx)) calc(16 * var(--rpx)); line-height: 1.4;
}
.mp-page[data-route="pages/orders/detail"] .hero-club{
  margin-top: calc(26 * var(--rpx)); padding-top: calc(22 * var(--rpx)); border-top: calc(2 * var(--rpx)) solid #f0f1f3;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #222; line-height: 1.5;
}
.mp-page[data-route="pages/orders/detail"] .hero-en{ font-weight: 400; color: #888; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/orders/detail"] /* 🔴 2026-10-17：球场名可点击 → 球场详情。主题色 + 尾箭头暗示可点，hover 加深反馈。 */
.hero-club-link{ color: #1a7a44; }
.mp-page[data-route="pages/orders/detail"] .hero-club-link .hero-more{ margin-left: calc(8 * var(--rpx)); color: #1a7a44; font-weight: 400; }
.mp-page[data-route="pages/orders/detail"] .hero-club-link:active{ opacity: 0.65; }
.mp-page[data-route="pages/orders/detail"] .hero-inc{ margin-top: calc(10 * var(--rpx)); font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; line-height: 1.6; }
.mp-page[data-route="pages/orders/detail"] /* ===== 球场 / 酒店浮卡 ===== */
.club{
  background: #fff; border-radius: calc(16 * var(--rpx)); padding: calc(26 * var(--rpx)) calc(28 * var(--rpx));
  margin-top: calc(20 * var(--rpx)); position: relative;
  box-shadow: 0 calc(6 * var(--rpx)) calc(24 * var(--rpx)) rgba(0,0,0,0.08);
}
.mp-page[data-route="pages/orders/detail"] .c-name{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; line-height: 1.4; }
.mp-page[data-route="pages/orders/detail"] .c-addr{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #888; margin-top: calc(12 * var(--rpx)); line-height: 1.6; }
.mp-page[data-route="pages/orders/detail"] .c-tel{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #888; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .c-acts{ display: flex; align-items: center; margin-top: calc(22 * var(--rpx)); padding-top: calc(20 * var(--rpx)); border-top: calc(2 * var(--rpx)) solid #f2f3f5; }
.mp-page[data-route="pages/orders/detail"] .c-act{ flex: 1; text-align: center; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #2f7bc0; font-weight: 500; }
.mp-page[data-route="pages/orders/detail"] .c-ico{ margin-right: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .c-div{ width: calc(2 * var(--rpx)); height: calc(44 * var(--rpx)); background: #eee; }
.mp-page[data-route="pages/orders/detail"] /* ===== 通用卡片 ===== */
.card{ background: #fff; border-radius: calc(16 * var(--rpx)); padding: calc(26 * var(--rpx)) calc(28 * var(--rpx)); margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .card-t{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; margin-bottom: calc(16 * var(--rpx)); line-height: 1.4; }
.mp-page[data-route="pages/orders/detail"] .row{ display: flex; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1.7; padding: calc(8 * var(--rpx)) 0; }
.mp-page[data-route="pages/orders/detail"] .row .k{ color: #888; flex-shrink: 0; min-width: calc(168 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .row .v{ color: #333; flex: 1; }
.mp-page[data-route="pages/orders/detail"] .row.pay-main{ padding-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .row.pay-main .k,.mp-page[data-route="pages/orders/detail"] .row.pay-main .v{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; }
.mp-page[data-route="pages/orders/detail"] .v.orange{ color: #ff8f1f; }
.mp-page[data-route="pages/orders/detail"] .v.gray{ color: #999; }
.mp-page[data-route="pages/orders/detail"] .row-card{ display: flex; align-items: center; }
.mp-page[data-route="pages/orders/detail"] .row-card .k{ width: calc(120 * var(--rpx)); font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/orders/detail"] .r-right{ flex: 1; display: flex; align-items: center; justify-content: flex-end; gap: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .gray{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/orders/detail"] /* 发票已填写：用主色区分「不需要发票」的灰 */
.inv-on{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; }
.mp-page[data-route="pages/orders/detail"] .arr{ color: #c8c8c8; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/orders/detail"] .brand{ text-align: center; padding: calc(40 * var(--rpx)) 0 calc(20 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .b-name{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; letter-spacing: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .b-slogan{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-top: calc(10 * var(--rpx)); letter-spacing: calc(2 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .b-icons{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; margin-top: calc(20 * var(--rpx)); line-height: 1.6; }
.mp-page[data-route="pages/orders/detail"] /* ===== 底部操作条 ===== */
.footer{
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 10;
  background: #fff; display: flex; align-items: center;
  padding: calc(14 * var(--rpx)) calc(24 * var(--rpx)) calc(calc(14 * var(--rpx)) + env(safe-area-inset-bottom));
  box-shadow: 0 calc(-4 * var(--rpx)) calc(20 * var(--rpx)) rgba(0,0,0,0.06);
}
.mp-page[data-route="pages/orders/detail"] .kefu{ width: calc(96 * var(--rpx)); text-align: center; }
.mp-page[data-route="pages/orders/detail"] .kefu-ico{ font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/orders/detail"] .kefu-t{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-top: calc(2 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .f-btn{
  flex: 1; height: calc(84 * var(--rpx)); line-height: calc(84 * var(--rpx));
  border-radius: calc(42 * var(--rpx)); font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; margin-left: calc(18 * var(--rpx));
  padding: 0;
}
.mp-page[data-route="pages/orders/detail"] .f-btn.ghost{ background: #fff; color: #21a45d; border: calc(2 * var(--rpx)) solid #21a45d; }
.mp-page[data-route="pages/orders/detail"] .f-btn.ghost::after{ border: none; }
.mp-page[data-route="pages/orders/detail"] .f-btn.solid{ background: #21a45d; color: #fff; }
.mp-page[data-route="pages/orders/detail"] .f-btn.solid::after{ border: none; }
.mp-page[data-route="pages/orders/detail"] .f-btn.pay{ background: #ff7a1a; color: #fff; }
.mp-page[data-route="pages/orders/detail"] /* ---- 套餐订单 ---- */
.c-tag{
  display: inline-block; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); padding: calc(4 * var(--rpx)) calc(14 * var(--rpx));
  border-radius: calc(6 * var(--rpx)); margin-bottom: calc(14 * var(--rpx));
}
.mp-page[data-route="pages/orders/detail"] .c-tag.green{ color: #21a45d; background: #eaf7f0; }
.mp-page[data-route="pages/orders/detail"] .h-notice{
  display: inline-block; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #2f7bc0;
  background: #eef5fc; border-radius: calc(6 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(14 * var(--rpx)); margin-right: calc(10 * var(--rpx));
}
.mp-page[data-route="pages/orders/detail"] .pday{ border: calc(2 * var(--rpx)) solid #eef0f2; border-radius: calc(12 * var(--rpx)); padding: calc(18 * var(--rpx)) calc(20 * var(--rpx)); margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .pd-row{ display: flex; align-items: center; gap: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .pd-badge{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: #e64340;
  border-radius: calc(6 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(10 * var(--rpx)); font-weight: 600;
}
.mp-page[data-route="pages/orders/detail"] .pd-date{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; }
.mp-page[data-route="pages/orders/detail"] .pd-time{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #555; }
.mp-page[data-route="pages/orders/detail"] .pd-status{ margin-left: auto; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/orders/detail"] .pd-status.ok{ color: #ff8f1f; }
.mp-page[data-route="pages/orders/detail"] .pd-status.wait{ color: #999; }
.mp-page[data-route="pages/orders/detail"] .pd-name{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; font-weight: 600; margin-top: calc(14 * var(--rpx)); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.mp-page[data-route="pages/orders/detail"] .pd-addr{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #888; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .pd-tel{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #888; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .pd-acts{ display: flex; align-items: center; margin-top: calc(16 * var(--rpx)); padding-top: calc(16 * var(--rpx)); border-top: calc(2 * var(--rpx)) solid #f2f3f5; }
.mp-page[data-route="pages/orders/detail"] .pd-act{ flex: 1; display: flex; align-items: center; justify-content: center; gap: calc(8 * var(--rpx)); font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; }
.mp-page[data-route="pages/orders/detail"] /* ===== 待选候选球位提示卡 =====
   🔴 2026-10-11：原「去选择 ›」提示卡（.slotnotice*）已**整块删除** ——
     待选动作改为内联的候选卡组件（components/slot-choice，与订单跟踪页共用一份实现），
     卡片样式随组件落在 components/slot-choice/slot-choice.wxss。
     这里只留这条说明，避免后人以为"样式丢了"而重新加回来。 */

/* ===== 订阅消息入口卡 ===== */
.subnotice{
  display: flex; align-items: center;
  border: calc(2 * var(--rpx)) solid #ffe3cc; background: #fff8f2;
}
.mp-page[data-route="pages/orders/detail"] .subnotice-ico{ font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); margin-right: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/orders/detail"] .subnotice-txt{ flex: 1; }
.mp-page[data-route="pages/orders/detail"] .subnotice-t{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #ff6b2b; }
.mp-page[data-route="pages/orders/detail"] .subnotice-s{ margin-top: calc(6 * var(--rpx)); font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; line-height: 1.5; }
.mp-page[data-route="pages/orders/detail"] .subnotice-go{
  padding: calc(10 * var(--rpx)) calc(24 * var(--rpx)); margin-left: calc(12 * var(--rpx));
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #fff;
  background: #ff6b2b; border-radius: calc(999 * var(--rpx));
}

/* ===== pages/orders/invoice.wxss ===== */
.mp-page[data-route="pages/orders/invoice"] /* pages/orders/invoice.wxss */
/* pages/orders/invoice.wxss —— 发票信息
   🔴 字号一律走 calc(Nrpx * var(--gf-fs,.mp-page[data-route="pages/orders/invoice"] 1))，与全站一样跟系统字号缩放。 */
.page{ background: #f5f6f7; min-height: 100dvh; padding: calc(24 * var(--rpx)) 0 calc(80 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pages/orders/invoice"] .hint{
  margin: 0 calc(24 * var(--rpx)) calc(20 * var(--rpx)); padding: calc(22 * var(--rpx)) calc(24 * var(--rpx));
  background: #eef5fc; border-radius: calc(16 * var(--rpx));
}
.mp-page[data-route="pages/orders/invoice"] .hint-t{ display: block; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #2f7bc0; line-height: 1.6; }
.mp-page[data-route="pages/orders/invoice"] .hint-s{ display: block; margin-top: calc(8 * var(--rpx)); font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #7d9dbd; line-height: 1.6; }
.mp-page[data-route="pages/orders/invoice"] .card{ background: #fff; margin: 0 calc(24 * var(--rpx)) calc(20 * var(--rpx)); border-radius: calc(16 * var(--rpx)); padding: 0 calc(28 * var(--rpx)); }
.mp-page[data-route="pages/orders/invoice"] .card.sub{ padding: calc(20 * var(--rpx)) calc(28 * var(--rpx)); }
.mp-page[data-route="pages/orders/invoice"] .row{
  display: flex; align-items: center; justify-content: space-between; gap: calc(20 * var(--rpx));
  min-height: calc(100 * var(--rpx)); padding: calc(22 * var(--rpx)) 0;
  border-bottom: calc(2 * var(--rpx)) solid #f2f3f5;
}
.mp-page[data-route="pages/orders/invoice"] .row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/orders/invoice"] /* 多行字段：标签在上、输入在下，避免一行挤不下 */
.row.col{ display: block; padding: calc(26 * var(--rpx)) 0 calc(22 * var(--rpx)); }
.mp-page[data-route="pages/orders/invoice"] .k{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; flex-shrink: 0; }
.mp-page[data-route="pages/orders/invoice"] .card.sub .k{ color: #888; min-width: calc(168 * var(--rpx)); }
.mp-page[data-route="pages/orders/invoice"] .card.sub .v{ color: #333; flex: 1; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/orders/invoice"] .req{ color: #ff5a5a; margin-left: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/orders/invoice"] .in{ flex: 1; min-width: 0; text-align: right; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #555; }
.mp-page[data-route="pages/orders/invoice"] .ph{ color: #b4b4b4; }
.mp-page[data-route="pages/orders/invoice"] .r{ display: flex; align-items: center; gap: calc(10 * var(--rpx)); min-width: 0; }
.mp-page[data-route="pages/orders/invoice"] .v{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #555;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.mp-page[data-route="pages/orders/invoice"] .arr{ color: #c8c8c8; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); flex-shrink: 0; }
.mp-page[data-route="pages/orders/invoice"] /* 抬头类型：个人 / 企业单位 分段选择 */
.segs{ display: flex; gap: 0; border: calc(2 * var(--rpx)) solid #e6e8ea; border-radius: calc(10 * var(--rpx)); overflow: hidden; }
.mp-page[data-route="pages/orders/invoice"] .seg{
  padding: calc(12 * var(--rpx)) calc(26 * var(--rpx)); font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; background: #fff;
}
.mp-page[data-route="pages/orders/invoice"] .seg.on{ background: #21a45d; color: #fff; }
.mp-page[data-route="pages/orders/invoice"] .ta{
  width: 100%; box-sizing: border-box; margin-top: calc(18 * var(--rpx)); min-height: calc(90 * var(--rpx));
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; line-height: 1.6;
}
.mp-page[data-route="pages/orders/invoice"] .cnt{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #b4b4b4; text-align: right; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/orders/invoice"] .btn{
  margin: calc(48 * var(--rpx)) calc(48 * var(--rpx)) 0; height: calc(92 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
  background: #21a45d; color: #fff; border-radius: calc(46 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/orders/invoice"] .btn.dis{ opacity: .6; }
.mp-page[data-route="pages/orders/invoice"] .btn:active{ opacity: .85; }
.mp-page[data-route="pages/orders/invoice"] .btn-link{
  margin: calc(28 * var(--rpx)) calc(48 * var(--rpx)) 0; text-align: center;
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #999;
}
.mp-page[data-route="pages/orders/invoice"] .btn-link:active{ opacity: .7; }

/* ===== pages/me/qrcode.wxss ===== */
.mp-page[data-route="pages/me/qrcode"] /* pages/me/qrcode.wxss */
/* pages/me/qrcode.wxss */
.page{ background: #f5f6f7; min-height: 100dvh; padding: calc(40 * var(--rpx)) calc(30 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pages/me/qrcode"] .card{ background: #fff; border-radius: calc(24 * var(--rpx)); padding: calc(50 * var(--rpx)) calc(40 * var(--rpx)); text-align: center; box-shadow: 0 calc(8 * var(--rpx)) calc(30 * var(--rpx)) rgba(0,0,0,0.06); }
.mp-page[data-route="pages/me/qrcode"] .user{ margin-bottom: calc(40 * var(--rpx)); }
.mp-page[data-route="pages/me/qrcode"] .ava{ width: calc(120 * var(--rpx)); height: calc(120 * var(--rpx)); border-radius: 50%; }
.mp-page[data-route="pages/me/qrcode"] .u-name{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/qrcode"] .u-ver{ display: inline-block; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; background: #eaf7f0; border-radius: calc(999 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(16 * var(--rpx)); margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/me/qrcode"] /* CSS 伪条码 */
.barcode{
  width: calc(520 * var(--rpx)); height: calc(120 * var(--rpx)); margin: calc(10 * var(--rpx)) auto calc(30 * var(--rpx));
  background: repeating-linear-gradient(90deg,
    #111 0 calc(3 * var(--rpx)), transparent calc(3 * var(--rpx)) calc(8 * var(--rpx)),
    #111 calc(8 * var(--rpx)) calc(10 * var(--rpx)), transparent calc(10 * var(--rpx)) calc(16 * var(--rpx)),
    #111 calc(16 * var(--rpx)) calc(21 * var(--rpx)), transparent calc(21 * var(--rpx)) calc(26 * var(--rpx)),
    #111 calc(26 * var(--rpx)) calc(28 * var(--rpx)), transparent calc(28 * var(--rpx)) calc(34 * var(--rpx)));
  background-size: calc(68 * var(--rpx)) 100%;
}
.mp-page[data-route="pages/me/qrcode"] .qr-wrap{ display: flex; justify-content: center; margin: calc(20 * var(--rpx)) 0; }
.mp-page[data-route="pages/me/qrcode"] .qr{ width: calc(400 * var(--rpx)); height: calc(400 * var(--rpx)); }
.mp-page[data-route="pages/me/qrcode"] .qr-placeholder{ display: flex; align-items: center; justify-content: center; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/me/qrcode"] .qr-failed{ color: #d4380d; }
.mp-page[data-route="pages/me/qrcode"] .tip{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/me/qrcode"] .no{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-top: calc(12 * var(--rpx)); letter-spacing: calc(2 * var(--rpx)); }

/* ===== pages/me/info.wxss ===== */
.mp-page[data-route="pages/me/info"] /* pages/me/info.wxss */
/* pages/me/info.wxss —— 个人资料
   版式对齐设计稿：分组标题（浅灰小字，浮在灰底上）+ 白色圆角卡片行列表。
   字号全部走 calc(Nrpx * var(--gf-fs,.mp-page[data-route="pages/me/info"] 1))，跟随微信系统字号缩放。 */

.page{ background: #f2f3f5; min-height: 100dvh; padding-bottom: calc(60 * var(--rpx)); }
.mp-page[data-route="pages/me/info"] /* ---------- 未登录引导 ---------- */
.login-tip{
  display: flex; align-items: center; justify-content: space-between;
  margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0; padding: calc(22 * var(--rpx)) calc(26 * var(--rpx));
  background: #fff8e8; border-radius: calc(14 * var(--rpx));
}
.mp-page[data-route="pages/me/info"] .login-tip-t{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #8a6d3b; flex: 1; }
.mp-page[data-route="pages/me/info"] .login-tip-go{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a; margin-left: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/info"] /* ---------- 分组 ---------- */
.grp-t{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #9a9a9a;
  padding: calc(32 * var(--rpx)) calc(36 * var(--rpx)) calc(14 * var(--rpx));
}
.mp-page[data-route="pages/me/info"] .card{ background: #fff; margin: 0 calc(24 * var(--rpx)); border-radius: calc(16 * var(--rpx)); padding: 0 calc(28 * var(--rpx)); }
.mp-page[data-route="pages/me/info"] /* ---------- 行 ---------- */
.row{
  display: flex; align-items: center; justify-content: space-between;
  gap: calc(20 * var(--rpx));
  min-height: calc(84 * var(--rpx)); padding: calc(14 * var(--rpx)) 0;
  border-bottom: calc(2 * var(--rpx)) solid #f2f3f5;
}
.mp-page[data-route="pages/me/info"] /* 头像行保持更高的视觉节奏：由 calc(96 * var(--rpx)) 头像自然撑起，min-height 抬高一档 */
.row-ava{ min-height: calc(116 * var(--rpx)); padding: calc(16 * var(--rpx)) 0; }
.mp-page[data-route="pages/me/info"] .row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/me/info"] .row-tap:active{ background: #fafafa; }
.mp-page[data-route="pages/me/info"] .k{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333;
  flex-shrink: 0;
}
.mp-page[data-route="pages/me/info"] /* 带副标题的标签（个性化推荐） */
.k-col{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/me/info"] .k-sub{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #a8a8a8;
  margin-top: calc(6 * var(--rpx)); line-height: 1.5;
}
.mp-page[data-route="pages/me/info"] .r{ display: flex; align-items: center; gap: calc(10 * var(--rpx)); min-width: 0; }
.mp-page[data-route="pages/me/info"] /* mp-picker 参与父级 flex 时是唯一子项：
   ① mp-picker 自身只负责「占满行剩余宽度」（flex:1）；
   ② 横向排布 k/r 的 flex 写在 mp-picker 内部的普通 mp-view（.row-in）上——
      不依赖「picker 元素本身接受 display:flex」这一假设，任何内核下都不会
      出现「标签与值纵向堆叠、『未填写』掉到左下」的旧 bug（2026-10-12 加固） */
.pk{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/me/info"] .row-in{
  display: flex; align-items: center; justify-content: space-between;
  min-width: 0; gap: calc(20 * var(--rpx));
}
.mp-page[data-route="pages/me/info"] .v{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #555;
  max-width: calc(400 * var(--rpx)); overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
  text-align: right;
}
.mp-page[data-route="pages/me/info"] .v.ph{ color: #b4b4b4; }
.mp-page[data-route="pages/me/info"] .v.phone{ font-variant-numeric: tabular-nums; letter-spacing: calc(1 * var(--rpx)); }
.mp-page[data-route="pages/me/info"] .arr{ color: #c8c8c8; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); flex-shrink: 0; }
.mp-page[data-route="pages/me/info"] /* 行内「清除」：原生 mp-picker 里唯一能不被 mp-picker 吞掉的退出入口 */
.clr{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a;
  padding: calc(4 * var(--rpx)) calc(12 * var(--rpx)); border: calc(2 * var(--rpx)) solid #e6d6b4; border-radius: calc(20 * var(--rpx));
  flex-shrink: 0;
}
.mp-page[data-route="pages/me/info"] /* ---------- 头像 ---------- */
/* 头像行布局（2026-10-15 用户反馈截图：头像没贴右）：
   ① 标签左、头像右 —— 靠 .row 的 space-between + 这里 margin-left:auto 双保险；
   ② flex:none + width:auto 防止 <button> 默认宽度把它撑开（老问题）；
   ③ margin 必须写全（不能再用 margin:0 简写盖掉 auto）。 */
.ava-btn{
  display: flex; align-items: center; justify-content: center;
  margin: 0 0 0 auto; padding: 0; width: auto; flex: none;
  background: transparent; line-height: inherit;
}
.mp-page[data-route="pages/me/info"] .ava-btn::after{ border: none; }
.mp-page[data-route="pages/me/info"] .ava{ width: calc(96 * var(--rpx)); height: calc(96 * var(--rpx)); border-radius: 50%; background: #eee; }
.mp-page[data-route="pages/me/info"] /* ---------- 手机号眼睛 ---------- */
.eye{ padding: calc(6 * var(--rpx)) calc(4 * var(--rpx)) calc(6 * var(--rpx)) calc(12 * var(--rpx)); }
.mp-page[data-route="pages/me/info"] .eye-ico{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #b4b4b4; }
.mp-page[data-route="pages/me/info"] /* ---------- 性别分段控件 ---------- */
.seg{ display: flex; gap: calc(16 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/me/info"] .seg-i{
  min-width: calc(96 * var(--rpx)); height: calc(60 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #555;
  background: #f5f6f7; border-radius: calc(10 * var(--rpx));
  padding: 0 calc(20 * var(--rpx));
}
.mp-page[data-route="pages/me/info"] .seg-i.on{
  color: #b8944a; background: #fff8e8;
  border: calc(2 * var(--rpx)) solid #b8944a;
}
.mp-page[data-route="pages/me/info"] /* ---------- 行下说明 ---------- */
.row-sub{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #a8a8a8;
  padding: 0 0 calc(24 * var(--rpx)); line-height: 1.6;
}
.mp-page[data-route="pages/me/info"] /* ---------- 页脚：资料完善度 ---------- */
.foot{ margin: calc(40 * var(--rpx)) calc(40 * var(--rpx)) 0; }
.mp-page[data-route="pages/me/info"] .foot-bar{
  height: calc(8 * var(--rpx)); background: #e4e6e8; border-radius: calc(4 * var(--rpx)); overflow: hidden;
}
.mp-page[data-route="pages/me/info"] .foot-fill{
  height: 100%; background: linear-gradient(90deg, #d9bd85, #b8944a);
  border-radius: calc(4 * var(--rpx)); transition: width .3s;
}
.mp-page[data-route="pages/me/info"] .foot-tx{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a;
  margin-top: calc(14 * var(--rpx)); line-height: 1.6;
}
.mp-page[data-route="pages/me/info"] /* ---------- 编辑弹层 ---------- */
.mask{
  position: fixed; left: 0; right: 0; top: 0; bottom: 0;
  background: rgba(0,0,0,0.45);
  display: flex; align-items: flex-end; z-index: 200;
}
.mp-page[data-route="pages/me/info"] .sheet{
  width: 100%; background: #fff;
  border-radius: calc(24 * var(--rpx)) calc(24 * var(--rpx)) 0 0;
  padding: calc(32 * var(--rpx)) calc(32 * var(--rpx)) calc(calc(32 * var(--rpx)) + env(safe-area-inset-bottom));
}
.mp-page[data-route="pages/me/info"] .sheet-h{ display: flex; align-items: center; justify-content: space-between; margin-bottom: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/info"] .sheet-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/me/info"] .sheet-x{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/me/info"] .sheet-desc{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #a0a0a0;
  margin-bottom: calc(20 * var(--rpx)); line-height: 1.6;
}
.mp-page[data-route="pages/me/info"] .sheet-in{
  width: 100%; box-sizing: border-box;
  height: calc(88 * var(--rpx)); padding: 0 calc(22 * var(--rpx));
  background: #f5f6f7; border-radius: calc(12 * var(--rpx));
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333;
}
.mp-page[data-route="pages/me/info"] .sheet-in.area{ height: calc(160 * var(--rpx)); padding: calc(18 * var(--rpx)) calc(22 * var(--rpx)); line-height: 1.6; }
.mp-page[data-route="pages/me/info"] .sheet-ph{ color: #b4b4b4; }
.mp-page[data-route="pages/me/info"] .sheet-btn{
  margin-top: calc(28 * var(--rpx)); height: calc(88 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
  background: #b8944a; color: #fff; border-radius: calc(44 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/me/info"] .sheet-btn:active{ opacity: .85; }

/* ===== pages/me/member.wxss ===== */
.mp-page[data-route="pages/me/member"] /* pages/me/member.wxss */
/* pages/me/member.wxss */
.page{ background: #f5f6f7; min-height: 100dvh; }
.mp-page[data-route="pages/me/member"] .head{ background: linear-gradient(180deg, #1d2126 0%, #2c323a 100%); padding: calc(20 * var(--rpx)) calc(30 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .u-row{ display: flex; align-items: center; padding: calc(16 * var(--rpx)) 0 calc(30 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .ava{ width: calc(90 * var(--rpx)); height: calc(90 * var(--rpx)); border-radius: 50%; border: calc(3 * var(--rpx)) solid rgba(216,185,106,0.6); }
.mp-page[data-route="pages/me/member"] .u-main{ flex: 1; margin-left: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .u-name{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #fff; }
.mp-page[data-route="pages/me/member"] .u-sub{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #d8b96a; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .u-qr{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #d8b96a; border: calc(2 * var(--rpx)) solid rgba(216,185,106,0.6);
  border-radius: calc(999 * var(--rpx)); padding: calc(10 * var(--rpx)) calc(22 * var(--rpx));
}
.mp-page[data-route="pages/me/member"] .mcard{
  position: relative; overflow: hidden;
  background: linear-gradient(135deg, #f0d89b 0%, #d8b96a 55%, #b8944a 100%);
  border-radius: calc(20 * var(--rpx)); padding: calc(30 * var(--rpx));
}
.mp-page[data-route="pages/me/member"] .mc-top{ display: flex; justify-content: space-between; align-items: baseline; }
.mp-page[data-route="pages/me/member"] .mc-name{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #5a4517; letter-spacing: calc(2 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .mc-bei{ font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #3f3010; }
.mp-page[data-route="pages/me/member"] .mc-bei-t{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 400; }
.mp-page[data-route="pages/me/member"] .mc-sub{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #7a5f26; margin-top: calc(10 * var(--rpx)); letter-spacing: calc(2 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .mc-wave{
  position: absolute; right: calc(-60 * var(--rpx)); bottom: calc(-80 * var(--rpx));
  width: calc(260 * var(--rpx)); height: calc(260 * var(--rpx)); border-radius: 50%;
  background: rgba(255,255,255,0.25);
}
.mp-page[data-route="pages/me/member"] /* 黑金会员卡：深黑金质感 */
.mc-black{
  background: linear-gradient(135deg, #2a2a2e 0%, #4a3d1a 55%, #1a1a1d 100%);
  border: calc(2 * var(--rpx)) solid #d8b96a;
}
.mp-page[data-route="pages/me/member"] .mc-black .mc-name,.mp-page[data-route="pages/me/member"] .mc-black .mc-bei{ color: #f4e3b0; }
.mp-page[data-route="pages/me/member"] .mc-black .mc-sub{ color: #b9a06a; }
.mp-page[data-route="pages/me/member"] /* 会员值进度段 */
.mv-sec{ padding: calc(26 * var(--rpx)) calc(28 * var(--rpx)) calc(22 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .mv-row{ display: flex; align-items: baseline; justify-content: space-between; }
.mp-page[data-route="pages/me/member"] .mv-label{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; }
.mp-page[data-route="pages/me/member"] .mv-num{ font-size: calc(calc(48 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #b8944a; font-variant-numeric: tabular-nums; }
.mp-page[data-route="pages/me/member"] .mv-bar{ height: calc(14 * var(--rpx)); background: #eee; border-radius: calc(999 * var(--rpx)); overflow: hidden; margin: calc(16 * var(--rpx)) 0 calc(12 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .mv-bar-fill{ height: 100%; background: linear-gradient(90deg, #d8b96a, #b8944a); border-radius: calc(999 * var(--rpx)); transition: width .3s; }
.mp-page[data-route="pages/me/member"] .mv-tip{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #888; }
.mp-page[data-route="pages/me/member"] .mv-next{ color: #b8944a; font-weight: 700; }
.mp-page[data-route="pages/me/member"] .mv-remain{ color: #b8944a; font-weight: 700; }
.mp-page[data-route="pages/me/member"] .mv-cand{
  margin-top: calc(14 * var(--rpx)); padding: calc(16 * var(--rpx)) calc(18 * var(--rpx)); border-radius: calc(12 * var(--rpx));
  background: linear-gradient(90deg, #1d2126, #4a3d1a);
  color: #f4e3b0; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1.5;
}
.mp-page[data-route="pages/me/member"] .mv-foot{ margin-top: calc(14 * var(--rpx)); font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #aaa; }
.mp-page[data-route="pages/me/member"] /* 权益分类标签 */
.perk{ display: flex; align-items: center; gap: calc(14 * var(--rpx)); padding: calc(14 * var(--rpx)) 0; }
.mp-page[data-route="pages/me/member"] .perk-cat{
  flex: none; font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a;
  background: #f7f0e0; border-radius: calc(8 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(12 * var(--rpx)); min-width: calc(96 * var(--rpx)); text-align: center;
}
.mp-page[data-route="pages/me/member"] .perk-t{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #555; }
.mp-page[data-route="pages/me/member"] /* 果夫贝抵扣说明 */
.bei-sec{ padding: calc(24 * var(--rpx)) calc(28 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .bei-row{ display: flex; align-items: center; justify-content: space-between; }
.mp-page[data-route="pages/me/member"] .bei-t{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; }
.mp-page[data-route="pages/me/member"] .bei-d{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .bei-go{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a; }
.mp-page[data-route="pages/me/member"] /* 足迹认证摘要 */
.fp-sec{ padding: calc(24 * var(--rpx)) calc(28 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .fp-row{ display: flex; align-items: center; justify-content: space-between; }
.mp-page[data-route="pages/me/member"] .fp-t{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; }
.mp-page[data-route="pages/me/member"] .fp-d{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .fp-hl{ color: #21a45d; font-weight: 700; }
.mp-page[data-route="pages/me/member"] .fp-go{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a; }
.mp-page[data-route="pages/me/member"] .quick{ display: flex; margin-top: calc(30 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .q-item{ flex: 1; text-align: center; }
.mp-page[data-route="pages/me/member"] .q-n{ display: block; font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #fff; }
.mp-page[data-route="pages/me/member"] .q-t{ display: block; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #9aa0a8; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .sec{ background: #fff; margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)); border-radius: calc(16 * var(--rpx)); padding: calc(26 * var(--rpx)) calc(28 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .sec-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .ticket{ display: flex; align-items: center; padding: calc(20 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f5f6f7; }
.mp-page[data-route="pages/me/member"] .ticket:last-child{ border-bottom: none; }
.mp-page[data-route="pages/me/member"] .t-main{ flex: 1; }
.mp-page[data-route="pages/me/member"] .t-name{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; }
.mp-page[data-route="pages/me/member"] .t-desc{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .t-count{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-right: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .t-btn{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a; border: calc(2 * var(--rpx)) solid #d8b96a;
  border-radius: calc(999 * var(--rpx)); padding: calc(8 * var(--rpx)) calc(22 * var(--rpx));
}
.mp-page[data-route="pages/me/member"] .perk{ display: flex; align-items: center; gap: calc(14 * var(--rpx)); padding: calc(14 * var(--rpx)) 0; }
.mp-page[data-route="pages/me/member"] .perk-ico{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/member"] .perk-t{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #555; }
.mp-page[data-route="pages/me/member"] .rules-link{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/me/member"] .ad{
  margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) calc(40 * var(--rpx)); border-radius: calc(16 * var(--rpx));
  background: linear-gradient(90deg, #2c323a, #4a5260);
  padding: calc(30 * var(--rpx)); display: flex; align-items: center; justify-content: space-between;
}
.mp-page[data-route="pages/me/member"] .ad-t{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #d8b96a; }
.mp-page[data-route="pages/me/member"] .ad-btn{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #1d2126; background: #d8b96a;
  border-radius: calc(999 * var(--rpx)); padding: calc(10 * var(--rpx)) calc(24 * var(--rpx)); font-weight: 600;
}

/* ===== pages/me/member-rules.wxss ===== */
.mp-page[data-route="pages/me/member-rules"] /* pages/me/member-rules.wxss */
/* pages/me/member-rules.wxss */
.page{ background: #f5f6f7; min-height: 100dvh; padding-bottom: calc(60 * var(--rpx)); }
.mp-page[data-route="pages/me/member-rules"] .sec{ background: #fff; margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)); border-radius: calc(16 * var(--rpx)); padding: calc(26 * var(--rpx)) calc(28 * var(--rpx)); }
.mp-page[data-route="pages/me/member-rules"] .sec-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/me/member-rules"] /* ===== 等级权益表 =====
   🔴 对齐铁律（2026-10-08 用户反馈「横竖都没对齐」后重做）：
   列宽**只在下面这一组 :nth-child 里定义一次**，表头行与数据行共用。
   此前 wxml 给表头挂 first/price-cell/benefit-cell、数据行挂另一套类名，
   两套宽度规则各写一遍 → 改漏一个就出现「某列表头比列身宽」的错位。
   垂直方向：单元格 flex 居中 + 等高，避免「核心权益」换行时把整行撑高后文字上浮。

   列宽依据（按内容长度分配，总和 100%）：
     等级 16% 「果夫铂金」4字 / 年度会员值门槛 20% 表头6字需换行 /
     会员价 14% 「会员价」3字 / 果夫贝最高抵扣 18% 表头6字 / 核心权益 32% 长句可换行 */
.table{ border-radius: calc(12 * var(--rpx)); overflow: hidden; border: calc(2 * var(--rpx)) solid #f0e9d8; }
.mp-page[data-route="pages/me/member-rules"] .tr{ display: flex; }
.mp-page[data-route="pages/me/member-rules"] .tr.head{ background: #faf5e6; }
.mp-page[data-route="pages/me/member-rules"] .td{
  box-sizing: border-box;
  display: flex;
  align-items: center;          /* 垂直居中：行高被最长单元格撑高时文字不飘 */
  justify-content: center;
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1));
  color: #555;
  text-align: center;
  line-height: 1.4;
  padding: calc(18 * var(--rpx)) calc(6 * var(--rpx));
  border-bottom: calc(2 * var(--rpx)) solid #f7f3e8;
  word-break: break-all;
}
.mp-page[data-route="pages/me/member-rules"] /* ---- 列宽：唯一定义处，表头与数据行自动一致 ---- */
.td:nth-child(1){ flex: 0 0 16%; }
.mp-page[data-route="pages/me/member-rules"] /* 等级 */
.td:nth-child(2){ flex: 0 0 20%; }
.mp-page[data-route="pages/me/member-rules"] /* 年度会员值门槛 */
.td:nth-child(3){ flex: 0 0 14%; }
.mp-page[data-route="pages/me/member-rules"] /* 会员价 */
.td:nth-child(4){ flex: 0 0 18%; }
.mp-page[data-route="pages/me/member-rules"] /* 果夫贝最高抵扣 */
.td:nth-child(5){ flex: 0 0 32%; }
.mp-page[data-route="pages/me/member-rules"] /* 核心权益 */

/* 末列左对齐更易读（长句换行时左边缘齐平） */
.td:nth-child(5){ justify-content: flex-start; text-align: left; }
.mp-page[data-route="pages/me/member-rules"] /* 表头：稍小字号 + 允许换行（"年度会员值门槛"/"果夫贝最高抵扣"都是 6 字，窄列必换行） */
.tr.head .td{
  color: #8a6d2f;
  font-weight: 600;
  font-size: calc(calc(21 * var(--rpx)) * var(--gf-fs, 1));
  padding-top: calc(20 * var(--rpx));
  padding-bottom: calc(20 * var(--rpx));
}
.mp-page[data-route="pages/me/member-rules"] /* 会员价列：强调色（与其它列区分） */
.td:nth-child(3){ color: #d9483b; font-weight: 700; }
.mp-page[data-route="pages/me/member-rules"] .tr.head .td:nth-child(3){ color: #d9483b; }
.mp-page[data-route="pages/me/member-rules"] /* 🔴 当前等级：整行高亮（class 挂在 .tr 上，作用于整行 5 格） */
.tr.cur{ background: #fdf3d7; }
.mp-page[data-route="pages/me/member-rules"] .tr.cur .td{
  color: #8a6d2f;
  font-weight: 700;
  border-bottom-color: #f0e0b4;
}
.mp-page[data-route="pages/me/member-rules"] .tr.cur .td:nth-child(1),.mp-page[data-route="pages/me/member-rules"] .tr.cur .td:nth-child(3){ color: #b8944a; }
.mp-page[data-route="pages/me/member-rules"] /* 末列在整行高亮下仍左对齐，字色跟随行色 */
.tr.cur .td:nth-child(5){ color: #8a6d2f; }
.mp-page[data-route="pages/me/member-rules"] /* 末行去掉分隔线（表格外框已有边线，多一条会显得重） */
.tr:last-child .td{ border-bottom: none; }
.mp-page[data-route="pages/me/member-rules"] .hl-tip{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a; margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/me/member-rules"] .p{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #666; line-height: 1.9; }
.mp-page[data-route="pages/me/member-rules"] .join{
  margin: calc(30 * var(--rpx)) calc(24 * var(--rpx)); height: calc(88 * var(--rpx)); line-height: calc(88 * var(--rpx));
  background: linear-gradient(90deg, #f0d89b, #d8b96a); color: #5a4517;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; border-radius: calc(999 * var(--rpx)); padding: 0;
}
.mp-page[data-route="pages/me/member-rules"] .join::after{ border: none; }
.mp-page[data-route="pages/me/member-rules"] /* 会员价说明段里的加粗关键词（2026-10-07） */
.p-k{ color: #d9483b; font-weight: 600; }

/* ===== pages/me/bei.wxss ===== */
.mp-page[data-route="pages/me/bei"] /* pages/me/bei.wxss */
/* pages/me/bei.wxss */
.page{ background: #f5f6f7; min-height: 100dvh; }
.mp-page[data-route="pages/me/bei"] .head{
  background: linear-gradient(135deg, #ffa45d 0%, #ff8a3d 60%, #ff7a1a 100%);
  padding: calc(50 * var(--rpx)) calc(40 * var(--rpx)) calc(60 * var(--rpx)); position: relative;
}
.mp-page[data-route="pages/me/bei"] .h-cap{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: rgba(255,255,255,0.85); }
.mp-page[data-route="pages/me/bei"] .h-num{ font-size: calc(calc(72 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #fff; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/bei"] .h-sub{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: rgba(255,255,255,0.85); margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/bei"] .h-rules{
  position: absolute; right: calc(30 * var(--rpx)); top: calc(50 * var(--rpx));
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: rgba(255,255,255,0.22);
  border-radius: calc(999 * var(--rpx)); padding: calc(10 * var(--rpx)) calc(22 * var(--rpx));
}
.mp-page[data-route="pages/me/bei"] .sec{
  background: #fff; margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0; border-radius: calc(16 * var(--rpx));
  padding: calc(26 * var(--rpx)) calc(28 * var(--rpx)); position: relative; z-index: 2;
  box-shadow: 0 calc(8 * var(--rpx)) calc(24 * var(--rpx)) rgba(0,0,0,0.06);
}
.mp-page[data-route="pages/me/bei"] /* 紧跟橙色头部的第一张卡：上提压住头部（原「任务卡」的层次），明细卡沿用 */
.sec.first{ margin-top: calc(-30 * var(--rpx)); }
.mp-page[data-route="pages/me/bei"] .sec-head{ display: flex; align-items: center; justify-content: space-between; }
.mp-page[data-route="pages/me/bei"] .sec-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; margin-bottom: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/bei"] .sec-link{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #ff8a3d; padding: calc(6 * var(--rpx)) 0 calc(6 * var(--rpx)) calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/bei"] /* ---- 明细汇总 ---- */
.sum{ display: flex; align-items: center; margin: calc(14 * var(--rpx)) 0 calc(4 * var(--rpx)); }
.mp-page[data-route="pages/me/bei"] .sum-i{ flex: 1; text-align: center; }
.mp-page[data-route="pages/me/bei"] .sum-i + .sum-i{ border-left: calc(2 * var(--rpx)) solid #f0f1f3; }
.mp-page[data-route="pages/me/bei"] .s-n{ font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #333; }
.mp-page[data-route="pages/me/bei"] .s-n.in{ color: #ff8a3d; }
.mp-page[data-route="pages/me/bei"] .s-n.out{ color: #8a8f99; }
.mp-page[data-route="pages/me/bei"] .s-n.warn{ color: #e8632b; }
.mp-page[data-route="pages/me/bei"] .s-t{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/me/bei"] .sum-warn{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #e8632b; background: #fff5ef;
  border-radius: calc(10 * var(--rpx)); padding: calc(10 * var(--rpx)) calc(16 * var(--rpx)); margin-top: calc(14 * var(--rpx));
}
.mp-page[data-route="pages/me/bei"] /* ---- 筛选 ---- */
.tabs{ display: flex; margin: calc(20 * var(--rpx)) 0 calc(4 * var(--rpx)); }
.mp-page[data-route="pages/me/bei"] .tab{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #666; background: #f4f5f7;
  border-radius: calc(999 * var(--rpx)); padding: calc(8 * var(--rpx)) calc(24 * var(--rpx)); margin-right: calc(14 * var(--rpx));
}
.mp-page[data-route="pages/me/bei"] .tab.on{ color: #fff; background: #ff8a3d; }
.mp-page[data-route="pages/me/bei"] /* ---- 流水行 ---- */
.led{ display: flex; align-items: flex-start; padding: calc(22 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f5f6f7; }
.mp-page[data-route="pages/me/bei"] .led:last-child{ border-bottom: none; }
.mp-page[data-route="pages/me/bei"] .ld-dot{ width: calc(14 * var(--rpx)); height: calc(14 * var(--rpx)); border-radius: 50%; margin: calc(12 * var(--rpx)) calc(18 * var(--rpx)) 0 calc(2 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/me/bei"] .ld-dot.in{ background: #ff8a3d; }
.mp-page[data-route="pages/me/bei"] .ld-dot.out{ background: #c9ced6; }
.mp-page[data-route="pages/me/bei"] .ld-main{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/me/bei"] .ld-t{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; }
.mp-page[data-route="pages/me/bei"] .ld-s{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx));
  word-break: break-all;
}
.mp-page[data-route="pages/me/bei"] .ld-e{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/me/bei"] .ld-n{
  font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; margin-left: calc(16 * var(--rpx));
  flex-shrink: 0;
}
.mp-page[data-route="pages/me/bei"] .ld-n.in{ color: #ff8a3d; }
.mp-page[data-route="pages/me/bei"] .ld-n.out{ color: #8a8f99; }
.mp-page[data-route="pages/me/bei"] /* ---- 空态 / 折叠 ---- */
.led-empty{ padding: calc(46 * var(--rpx)) 0 calc(40 * var(--rpx)); text-align: center; }
.mp-page[data-route="pages/me/bei"] .le-t{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; font-weight: 600; }
.mp-page[data-route="pages/me/bei"] .le-s{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #aaa; margin-top: calc(10 * var(--rpx)); line-height: 1.5; }
.mp-page[data-route="pages/me/bei"] .led-more{
  margin-top: calc(8 * var(--rpx)); padding: calc(20 * var(--rpx)) 0 calc(6 * var(--rpx)); text-align: center;
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #ff8a3d;
}
.mp-page[data-route="pages/me/bei"] .led-more.fold{ color: #999; }
.mp-page[data-route="pages/me/bei"] /* ---- 任务（已拆到 pages/me/bei-tasks.wxss，本页只保留明细） ---- */
.tip{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin: calc(24 * var(--rpx)) calc(40 * var(--rpx)); }

/* ===== pages/me/bei-rules.wxss ===== */
.mp-page[data-route="pages/me/bei-rules"] /* pages/me/bei-rules.wxss */
/* pages/me/bei-rules.wxss */
.page{ background: #f5f6f7; min-height: 100dvh; padding: calc(20 * var(--rpx)) 0 calc(60 * var(--rpx)); }
.mp-page[data-route="pages/me/bei-rules"] .sec{ background: #fff; margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)); border-radius: calc(16 * var(--rpx)); padding: calc(26 * var(--rpx)) calc(28 * var(--rpx)); }
.mp-page[data-route="pages/me/bei-rules"] .sec-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; margin-bottom: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/me/bei-rules"] .p{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; line-height: 1.9; }

/* ===== pages/me/bei-tasks.wxss ===== */
.mp-page[data-route="pages/me/bei-tasks"] /* pages/me/bei-tasks.wxss */
/* pages/me/bei-tasks.wxss —— 任务页版式（自 bei.wxss 迁出）
   字号全部走 calc(Nrpx * var(--gf-fs,.mp-page[data-route="pages/me/bei-tasks"] 1))，跟随微信系统字号缩放。 */
.page{ background: #f5f6f7; min-height: 100dvh; }
.mp-page[data-route="pages/me/bei-tasks"] .sec{
  background: #fff; margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0; border-radius: calc(16 * var(--rpx));
  padding: calc(26 * var(--rpx)) calc(28 * var(--rpx));
}
.mp-page[data-route="pages/me/bei-tasks"] .sec-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; margin-bottom: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/bei-tasks"] /* ---- 任务 ---- */
.task{ display: flex; align-items: center; padding: calc(22 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f5f6f7; }
.mp-page[data-route="pages/me/bei-tasks"] .task:last-child{ border-bottom: none; }
.mp-page[data-route="pages/me/bei-tasks"] .t-main{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/me/bei-tasks"] .t-name{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; }
.mp-page[data-route="pages/me/bei-tasks"] .t-gain{ color: #ff8a3d; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); margin-left: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/bei-tasks"] .t-desc{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/me/bei-tasks"] .t-btn{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: #21a45d;
  border-radius: calc(999 * var(--rpx)); padding: calc(10 * var(--rpx)) calc(26 * var(--rpx));
  flex-shrink: 0;
}
.mp-page[data-route="pages/me/bei-tasks"] .t-btn.done{ background: #f0f1f3; color: #bbb; }
.mp-page[data-route="pages/me/bei-tasks"] /* 原生 share mp-button 的样式复位：与 .t-btn 完全一致（open-type=share 必须用原生 mp-button）。
   🔴 必须显式复位 font-size/padding/width：button 默认 font-size 18px、宽撑满容器，
   只复位 background/border 会让「去邀请」比其他按钮长一截。 */
.share-btn{
  margin: 0; border: none; line-height: 1.4;
  background: #21a45d; color: #fff;
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  padding: calc(10 * var(--rpx)) calc(26 * var(--rpx));
  width: auto; min-height: 0;
  border-radius: calc(999 * var(--rpx));
}
.mp-page[data-route="pages/me/bei-tasks"] .share-btn::after{ border: none; }
.mp-page[data-route="pages/me/bei-tasks"] .tip{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin: calc(24 * var(--rpx)) calc(40 * var(--rpx)); }

/* ===== pages/me/coupons.wxss ===== */
.mp-page[data-route="pages/me/coupons"] /* pages/me/coupons.wxss */
/* pages/me/coupons.wxss */
.page{ background: #f5f6f7; min-height: 100dvh; }
.mp-page[data-route="pages/me/coupons"] .tabs{ display: flex; background: #fff; padding: 0 calc(24 * var(--rpx)); }
.mp-page[data-route="pages/me/coupons"] .tab{
  flex: 1; text-align: center; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #666;
  padding: calc(24 * var(--rpx)) 0; border-bottom: calc(4 * var(--rpx)) solid transparent;
}
.mp-page[data-route="pages/me/coupons"] .tab.on{ color: #21a45d; font-weight: 700; border-bottom-color: #21a45d; }
.mp-page[data-route="pages/me/coupons"] .coupon{
  display: flex; align-items: stretch; margin: calc(20 * var(--rpx)) calc(24 * var(--rpx));
  background: #fff; border-radius: calc(16 * var(--rpx)); overflow: hidden;
  box-shadow: 0 calc(4 * var(--rpx)) calc(16 * var(--rpx)) rgba(0,0,0,0.05);
}
.mp-page[data-route="pages/me/coupons"] .c-left{
  width: calc(200 * var(--rpx)); flex-shrink: 0;
  background: linear-gradient(135deg, #ff7a45, #ff5f2e);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: calc(30 * var(--rpx)) calc(10 * var(--rpx));
}
.mp-page[data-route="pages/me/coupons"] .coupon.gray .c-left{ background: linear-gradient(135deg, #c9cdd2, #aab0b6); }
.mp-page[data-route="pages/me/coupons"] .c-amount{ font-size: calc(calc(52 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #fff; }
.mp-page[data-route="pages/me/coupons"] .rmb{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/coupons"] .c-cond{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: rgba(255,255,255,0.9); margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/me/coupons"] /* 左右衔接锯齿 */
.c-gap{
  width: 0; border-left: calc(2 * var(--rpx)) dashed #f0f1f3;
  margin: calc(16 * var(--rpx)) 0; position: relative;
}
.mp-page[data-route="pages/me/coupons"] .c-main{ flex: 1; padding: calc(26 * var(--rpx)) calc(24 * var(--rpx)); }
.mp-page[data-route="pages/me/coupons"] .c-title{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/me/coupons"] .c-desc{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/coupons"] .c-valid{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/me/coupons"] .c-btn{
  align-self: center; margin-right: calc(24 * var(--rpx)); flex-shrink: 0;
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #ff5f2e; border: calc(2 * var(--rpx)) solid #ff5f2e;
  border-radius: calc(999 * var(--rpx)); padding: calc(8 * var(--rpx)) calc(22 * var(--rpx));
}
.mp-page[data-route="pages/me/coupons"] .c-stamp{
  align-self: center; margin-right: calc(24 * var(--rpx)); flex-shrink: 0;
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #c9cdd2; border: calc(2 * var(--rpx)) solid #d8dce0;
  border-radius: calc(999 * var(--rpx)); padding: calc(8 * var(--rpx)) calc(22 * var(--rpx));
}
.mp-page[data-route="pages/me/coupons"] .empty{ text-align: center; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; padding: calc(120 * var(--rpx)) 0; }

/* ===== pages/me/wallet.wxss ===== */
.mp-page[data-route="pages/me/wallet"] /* pages/me/wallet.wxss */
/* pages/me/wallet.wxss */
.page{ background: #f5f6f7; min-height: 100dvh; }
.mp-page[data-route="pages/me/wallet"] .balance{ text-align: center; padding: calc(90 * var(--rpx)) 0 calc(50 * var(--rpx)); }
.mp-page[data-route="pages/me/wallet"] .b-ico{
  width: calc(140 * var(--rpx)); height: calc(140 * var(--rpx)); border-radius: 50%;
  background: linear-gradient(135deg, #ff8a5d, #ff5f5f);
  display: inline-flex; align-items: center; justify-content: center;
  font-size: calc(calc(64 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/me/wallet"] .b-num{ font-size: calc(calc(64 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #333; margin-top: calc(30 * var(--rpx)); }
.mp-page[data-route="pages/me/wallet"] .b-cap{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/wallet"] .ops{ display: flex; gap: calc(24 * var(--rpx)); padding: 0 calc(60 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pages/me/wallet"] .op{
  flex: 1; text-align: center; height: calc(84 * var(--rpx)); line-height: calc(84 * var(--rpx));
  border-radius: calc(999 * var(--rpx)); font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  background: #fff; color: #333; border: calc(2 * var(--rpx)) solid #e5e6e8;
}
.mp-page[data-route="pages/me/wallet"] .op.primary{ background: #21a45d; border-color: #21a45d; color: #fff; font-weight: 600; }
.mp-page[data-route="pages/me/wallet"] .card{ background: #fff; margin: 0 calc(24 * var(--rpx)); border-radius: calc(16 * var(--rpx)); padding: 0 calc(28 * var(--rpx)); }
.mp-page[data-route="pages/me/wallet"] .row{
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(30 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f5f6f7;
}
.mp-page[data-route="pages/me/wallet"] .row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/me/wallet"] .k{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/me/wallet"] .r{ display: flex; align-items: center; }
.mp-page[data-route="pages/me/wallet"] .arr{ color: #ccc; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/wallet"] .foot{ text-align: center; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #ccc; padding: calc(60 * var(--rpx)) 0; }
.mp-page[data-route="pages/me/wallet"] /* 提现规则卡片 */
.rule-card{
  background: #fff; margin: calc(24 * var(--rpx)); border-radius: calc(16 * var(--rpx)); padding: calc(28 * var(--rpx));
}
.mp-page[data-route="pages/me/wallet"] .rule-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #222; margin-bottom: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/wallet"] .rule-row{
  display: flex; align-items: flex-start; padding: calc(12 * var(--rpx)) 0;
  font-size: calc(calc(25 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1.6; color: #555;
}
.mp-page[data-route="pages/me/wallet"] .rule-k{
  flex: none; width: calc(170 * var(--rpx)); color: #333; font-weight: 500;
}
.mp-page[data-route="pages/me/wallet"] .rule-v{ flex: 1; }

/* ===== pages/me/wallet-detail.wxss ===== */
.mp-page[data-route="pages/me/wallet-detail"] /* pages/me/wallet-detail.wxss */
/* pages/me/wallet-detail.wxss */
.page{ background: #f5f6f7; min-height: 100dvh; padding-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/me/wallet-detail"] .card{ background: #fff; margin: 0 calc(24 * var(--rpx)); border-radius: calc(16 * var(--rpx)); padding: 0 calc(28 * var(--rpx)); }
.mp-page[data-route="pages/me/wallet-detail"] .row{
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(26 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f5f6f7;
}
.mp-page[data-route="pages/me/wallet-detail"] .row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/me/wallet-detail"] .t-type{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; }
.mp-page[data-route="pages/me/wallet-detail"] .t-desc{ font-weight: 400; color: #888; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/wallet-detail"] .t-time{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/wallet-detail"] .t-amount{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/me/wallet-detail"] .t-amount.pos{ color: #21a45d; }
.mp-page[data-route="pages/me/wallet-detail"] .none{ text-align: center; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; padding: calc(60 * var(--rpx)) 0; }
.mp-page[data-route="pages/me/wallet-detail"] .foot{ text-align: center; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #ccc; padding: calc(30 * var(--rpx)) 0; }

/* ===== pages/me/faq.wxss ===== */
.mp-page[data-route="pages/me/faq"] /* pages/me/faq.wxss */
/* pages/me/faq.wxss */
.page{ background: #f5f6f7; min-height: 100dvh; padding: calc(20 * var(--rpx)) 0 calc(60 * var(--rpx)); }
.mp-page[data-route="pages/me/faq"] .faq{ background: #fff; margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)); border-radius: calc(16 * var(--rpx)); padding: calc(26 * var(--rpx)) calc(28 * var(--rpx)); }
.mp-page[data-route="pages/me/faq"] .q{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/me/faq"] .a{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; line-height: 1.9; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/me/faq"] .foot{ text-align: center; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #ccc; padding: calc(30 * var(--rpx)) 0; }

/* ===== pages/me/settings.wxss ===== */
.mp-page[data-route="pages/me/settings"] /* pages/me/settings.wxss */
.page{ padding: calc(24 * var(--rpx)) calc(24 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pages/me/settings"] .card{ padding: 0 calc(24 * var(--rpx)); margin-bottom: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/settings"] .sec{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin: calc(28 * var(--rpx)) calc(8 * var(--rpx)) calc(14 * var(--rpx)); }
.mp-page[data-route="pages/me/settings"] .row{
  display: flex; justify-content: space-between; align-items: center;
  padding: calc(30 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f5f5f5;
}
.mp-page[data-route="pages/me/settings"] .row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/me/settings"] .k{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/me/settings"] .k.danger{ color: #d9534f; }
.mp-page[data-route="pages/me/settings"] .r{ display: flex; align-items: center; }
.mp-page[data-route="pages/me/settings"] .v{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #888; }
.mp-page[data-route="pages/me/settings"] .v.gray{ color: #bbb; }
.mp-page[data-route="pages/me/settings"] .arr{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #ccc; margin-left: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/settings"] .check{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; font-weight: 700; }
.mp-page[data-route="pages/me/settings"] mp-switch{ transform: scale(.8); }

/* ===== pages/me/share.wxss ===== */
.mp-page[data-route="pages/me/share"] /* pages/me/share.wxss */
.page{ padding: calc(24 * var(--rpx)) calc(24 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pages/me/share"] /* 收益卡 */
.income{
  display: flex; border-radius: calc(20 * var(--rpx)); padding: calc(36 * var(--rpx)) calc(32 * var(--rpx));
  background: linear-gradient(135deg, #ffb347 0%, #ff8a3d 100%);
  color: #fff;
}
.mp-page[data-route="pages/me/share"] .inc-col{ flex: 1; }
.mp-page[data-route="pages/me/share"] .inc-label{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); opacity: .85; }
.mp-page[data-route="pages/me/share"] .inc-num{ font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/share"] .inc-sub{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); opacity: .8; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/share"] /* 数据卡 */
.stats{ margin-top: calc(24 * var(--rpx)); padding: calc(10 * var(--rpx)) calc(32 * var(--rpx)); }
.mp-page[data-route="pages/me/share"] .st-row{ display: flex; padding: calc(28 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f5f5f5; }
.mp-page[data-route="pages/me/share"] .st{ flex: 1; }
.mp-page[data-route="pages/me/share"] .st-label{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/me/share"] .st-num{ font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/share"] .wallet-row{
  display: flex; justify-content: space-between; align-items: center;
  padding: calc(30 * var(--rpx)) 0;
}
.mp-page[data-route="pages/me/share"] .wr-label{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/me/share"] .wr-r{ display: flex; align-items: center; }
.mp-page[data-route="pages/me/share"] .wr-num{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #ff6b2b; }
.mp-page[data-route="pages/me/share"] .arr{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #ccc; margin-left: calc(10 * var(--rpx)); }

/* ===== pages/me/tasks.wxss ===== */
.mp-page[data-route="pages/me/tasks"] /* pages/me/tasks.wxss */
.page{ padding: calc(24 * var(--rpx)) calc(24 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pages/me/tasks"] /* 成长值头部 */
.head{ display: flex; flex-direction: column; align-items: center; padding: calc(40 * var(--rpx)) 0 calc(20 * var(--rpx)); }
.mp-page[data-route="pages/me/tasks"] .avatar{ width: calc(140 * var(--rpx)); height: calc(140 * var(--rpx)); border-radius: 50%; }
.mp-page[data-route="pages/me/tasks"] .g-num{ font-size: calc(calc(64 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #222; margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/me/tasks"] .g-cap{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/tasks"] .g-bar{
  width: calc(420 * var(--rpx)); height: calc(24 * var(--rpx)); border-radius: calc(14 * var(--rpx)); overflow: hidden;
  border: calc(2 * var(--rpx)) solid #21a45d; background: #fff; margin-top: calc(24 * var(--rpx));
}
.mp-page[data-route="pages/me/tasks"] .g-fill{ height: 100%; border-radius: calc(12 * var(--rpx)); background: linear-gradient(90deg, #4ecb81, #21a45d); }
.mp-page[data-route="pages/me/tasks"] .g-tip{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/tasks"] /* 任务列表 */
.sec{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; margin: calc(24 * var(--rpx)) calc(8 * var(--rpx)) calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/tasks"] .card{ padding: 0 calc(24 * var(--rpx)); }
.mp-page[data-route="pages/me/tasks"] .t-row{
  display: flex; align-items: center;
  padding: calc(28 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f5f5f5;
}
.mp-page[data-route="pages/me/tasks"] .t-row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/me/tasks"] .t-ico{
  width: calc(64 * var(--rpx)); height: calc(64 * var(--rpx)); border-radius: 50%; background: #e8f6ee;
  display: flex; align-items: center; justify-content: center; font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1));
  flex-shrink: 0;
}
.mp-page[data-route="pages/me/tasks"] .t-info{ margin-left: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/me/tasks"] .t-name{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #333; }
.mp-page[data-route="pages/me/tasks"] .t-desc{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #aaa; margin-top: calc(6 * var(--rpx)); }

/* ===== pages/me/favorites.wxss ===== */
.mp-page[data-route="pages/me/favorites"] /* pages/me/favorites.wxss */
.page{ padding: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/me/favorites"] .f-card{ display: flex; padding: calc(20 * var(--rpx)); margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/me/favorites"] .f-img{ width: calc(220 * var(--rpx)); height: calc(180 * var(--rpx)); border-radius: calc(12 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/me/favorites"] .f-info{ flex: 1; margin-left: calc(20 * var(--rpx)); min-width: 0; position: relative; }
.mp-page[data-route="pages/me/favorites"] .f-title{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222; line-height: 1.35;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.mp-page[data-route="pages/me/favorites"] .f-en{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/me/favorites"] .f-balls{ display: flex; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/favorites"] .ball{ width: calc(20 * var(--rpx)); height: calc(20 * var(--rpx)); border-radius: 50%; background: #e3e5e6; margin-right: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/favorites"] .ball.on{ background: #21a45d; }
.mp-page[data-route="pages/me/favorites"] .f-quote{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/favorites"] .f-bottom{ display: flex; align-items: center; justify-content: flex-end; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/favorites"] .f-tag{
  font-size: calc(calc(18 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: #fa5151; border-radius: calc(6 * var(--rpx));
  padding: calc(2 * var(--rpx)) calc(8 * var(--rpx)); margin-right: calc(12 * var(--rpx));
}
.mp-page[data-route="pages/me/favorites"] .f-price{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #ff6b2b; }
.mp-page[data-route="pages/me/favorites"] .f-price .rmb{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; }
.mp-page[data-route="pages/me/favorites"] .f-price .qi{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 400; color: #bbb; }
.mp-page[data-route="pages/me/favorites"] .empty{ text-align: center; padding: calc(100 * var(--rpx)) 0; }
.mp-page[data-route="pages/me/favorites"] .empty .icon{ font-size: calc(calc(72 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/favorites"] .empty .txt{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(20 * var(--rpx)); }

/* ===== pages/me/history.wxss ===== */
.mp-page[data-route="pages/me/history"] /* pages/me/history.wxss */
.page{ padding: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/me/history"] .bar{ display: flex; justify-content: space-between; align-items: center; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/me/history"] .count{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/me/history"] .clear{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #fa5151; }
.mp-page[data-route="pages/me/history"] .f-card{ display: flex; padding: calc(20 * var(--rpx)); margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/me/history"] .f-img{ width: calc(220 * var(--rpx)); height: calc(180 * var(--rpx)); border-radius: calc(12 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/me/history"] .f-info{ flex: 1; margin-left: calc(20 * var(--rpx)); min-width: 0; position: relative; }
.mp-page[data-route="pages/me/history"] .f-title{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222; line-height: 1.35;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.mp-page[data-route="pages/me/history"] .f-en{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/me/history"] .f-balls{ display: flex; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/history"] .ball{ width: calc(20 * var(--rpx)); height: calc(20 * var(--rpx)); border-radius: 50%; background: #e3e5e6; margin-right: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/history"] .ball.on{ background: #21a45d; }
.mp-page[data-route="pages/me/history"] .f-quote{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/history"] .f-bottom{ display: flex; align-items: center; justify-content: flex-end; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/history"] .f-tag{
  font-size: calc(calc(18 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: #fa5151; border-radius: calc(6 * var(--rpx));
  padding: calc(2 * var(--rpx)) calc(8 * var(--rpx)); margin-right: calc(12 * var(--rpx));
}
.mp-page[data-route="pages/me/history"] .f-price{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #ff6b2b; }
.mp-page[data-route="pages/me/history"] .f-price .rmb{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; }
.mp-page[data-route="pages/me/history"] .f-price .qi{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 400; color: #bbb; }
.mp-page[data-route="pages/me/history"] .empty{ text-align: center; padding: calc(100 * var(--rpx)) 0; }
.mp-page[data-route="pages/me/history"] .empty .icon{ font-size: calc(calc(72 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/history"] .empty .txt{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(20 * var(--rpx)); }

/* ===== pages/me/footprint.wxss ===== */
.mp-page[data-route="pages/me/footprint"] /* pages/me/footprint.wxss */
.page{ position: relative; width: 100%; height: 100dvh; background: #f6f7f6; }
.mp-page[data-route="pages/me/footprint"] .themap{ width: 100%; height: 100%; }
.mp-page[data-route="pages/me/footprint"] /* 顶部容器：双页签 + 地区下拉 + 勋章详情（替代原先三层浮层，减少拥挤） */
.topbar{
  position: absolute; top: calc(24 * var(--rpx)); left: calc(24 * var(--rpx)); right: calc(24 * var(--rpx)); z-index: 12;
}
.mp-page[data-route="pages/me/footprint"] .ftabs{ display: flex; gap: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .ftab{
  flex: 1;
  background: rgba(255,255,255,.96); border-radius: calc(30 * var(--rpx));
  padding: calc(16 * var(--rpx)) calc(12 * var(--rpx)); text-align: center;
  box-shadow: 0 calc(4 * var(--rpx)) calc(16 * var(--rpx)) rgba(0,0,0,.10);
  display: flex; flex-direction: column; align-items: center; gap: calc(6 * var(--rpx));
}
.mp-page[data-route="pages/me/footprint"] .ftab.on{ background: #21a45d; }
.mp-page[data-route="pages/me/footprint"] .ft-row{ display: flex; align-items: center; justify-content: center; gap: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .ft-medal{
  width: calc(48 * var(--rpx)); height: calc(48 * var(--rpx)); border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; box-shadow: 0 calc(2 * var(--rpx)) calc(8 * var(--rpx)) rgba(0,0,0,.18);
}
.mp-page[data-route="pages/me/footprint"] /* 「想打的球场」用爱心代替勋章，两张卡片视觉对称 */
.ft-heart{
  background: linear-gradient(140deg, #ff7a7a, #f0435a);
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1;
  position: relative;
  /* ♥ 字形本身偏上（约偏 8%），这里用相对位移做视觉居中。
     ⚠️ 不要改用 padding-bottom 做偏移：本项目没有全局 box-sizing:border-box，
     padding 叠加在 height:calc(48 * var(--rpx)) 上会把正圆撑成 48×52 的椭圆。位移不改变盒子尺寸。 */
  top: calc(2 * var(--rpx));
}
.mp-page[data-route="pages/me/footprint"] .ft-n{ font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #333; line-height: 1.1; }
.mp-page[data-route="pages/me/footprint"] .ft-l{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #888; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-page[data-route="pages/me/footprint"] .ftab.on .ft-n,.mp-page[data-route="pages/me/footprint"] .ftab.on .ft-l{ color: #fff; }
.mp-page[data-route="pages/me/footprint"] /* 地区下拉：单按钮 + 展开菜单（合并原 全球/中国/城市 三个 chip） */
/* 地区行（2026-10-20 改版）：地区下拉与「🌍 全球图」同一行，左右分布 */
.region-row{
  display: flex; align-items: center; justify-content: space-between;
  margin-top: calc(14 * var(--rpx)); gap: calc(16 * var(--rpx));
}
.mp-page[data-route="pages/me/footprint"] .region{ position: relative; }
.mp-page[data-route="pages/me/footprint"] .region-btn{
  display: flex; align-items: center; gap: calc(12 * var(--rpx));
  background: rgba(255,255,255,.96); border-radius: calc(30 * var(--rpx));
  padding: calc(18 * var(--rpx)) calc(26 * var(--rpx)); box-shadow: 0 calc(4 * var(--rpx)) calc(14 * var(--rpx)) rgba(0,0,0,.08);
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600;
}
.mp-page[data-route="pages/me/footprint"] .region-dot{ width: calc(14 * var(--rpx)); height: calc(14 * var(--rpx)); border-radius: 50%; background: #21a45d; flex-shrink: 0; }
.mp-page[data-route="pages/me/footprint"] /* ㊿+81 足迹搜索框（2026-10-23 用户要求）：放在统计热区弹窗顶部，输入即搜当前清单 */
.stat-search{
  display: flex; align-items: center; gap: calc(12 * var(--rpx));
  margin: calc(8 * var(--rpx)) 0 calc(12 * var(--rpx)); background: #f4f5f4; border-radius: calc(30 * var(--rpx));
  padding: calc(14 * var(--rpx)) calc(24 * var(--rpx));
}
.mp-page[data-route="pages/me/footprint"] .stat-search-i{ width: calc(28 * var(--rpx)); height: calc(28 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/me/footprint"] .stat-search-in{ flex: 1; min-width: 0; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/me/footprint"] .stat-search-x{ color: #b8bdb8; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); padding: calc(4 * var(--rpx)) calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .region-name{ flex: 1; }
.mp-page[data-route="pages/me/footprint"] .region-caret{ color: #999; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/footprint"] .region-mask{ position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 13; }
.mp-page[data-route="pages/me/footprint"] .region-menu{
  position: absolute; top: calc(100% + calc(10 * var(--rpx))); left: 0; right: 0; z-index: 14;
  background: #fff; border-radius: calc(22 * var(--rpx)); padding: calc(10 * var(--rpx));
  box-shadow: 0 calc(8 * var(--rpx)) calc(28 * var(--rpx)) rgba(0,0,0,.16);
}
.mp-page[data-route="pages/me/footprint"] .region-opt{ padding: calc(22 * var(--rpx)) calc(24 * var(--rpx)); border-radius: calc(16 * var(--rpx)); font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); color: #333; display: flex; align-items: center; justify-content: center; letter-spacing: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .region-opt.on{ background: #eaf6ee; color: #21a45d; font-weight: 700; }
.mp-page[data-route="pages/me/footprint"] /* search 项不再单独改内边距：与中国/深圳同一行高，只保留强调色 */
.region-opt.search{ color: #21a45d; }
.mp-page[data-route="pages/me/footprint"] .region-opt .ro-ico{ margin-right: calc(8 * var(--rpx)); font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/footprint"] /* 目的地入口图标（2026-10-20 改版）：居中的三个点「···」。
   中间点（U+00B7）字形天然垂直居中；放大镜 emoji/PNG 真机渲染均不可靠，纯文本最稳。 */
.ro-search{ font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #21a45d; line-height: 1; }
.mp-page[data-route="pages/me/footprint"] /* 底部浮层 */
.bottom-sheet{
  position: absolute; left: calc(24 * var(--rpx)); right: calc(24 * var(--rpx)); bottom: calc(calc(32 * var(--rpx)) + env(safe-area-inset-bottom));
  z-index: 10;
}
.mp-page[data-route="pages/me/footprint"] /* 统计双卡 */
.statbar{
  display: flex; align-items: center;
  background: rgba(255,255,255,.98); border-radius: calc(24 * var(--rpx)) calc(24 * var(--rpx)) 0 0; padding: calc(32 * var(--rpx)) calc(24 * var(--rpx));
  box-shadow: 0 calc(8 * var(--rpx)) calc(28 * var(--rpx)) rgba(0,0,0,.12);
}
.mp-page[data-route="pages/me/footprint"] .sb-col{ flex: 1; text-align: center; }
.mp-page[data-route="pages/me/footprint"] .sb-num{ font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #21a45d; }
.mp-page[data-route="pages/me/footprint"] .sb-t{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 500; color: #333; }
.mp-page[data-route="pages/me/footprint"] .sb-sub{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .sb-div{ width: calc(2 * var(--rpx)); height: calc(70 * var(--rpx)); background: #eee; }
.mp-page[data-route="pages/me/footprint"] /* 四列时数字与标签各让一档，避免窄屏挤在一起 */
.statbar.four{ padding: calc(32 * var(--rpx)) calc(12 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .statbar.four .sb-num{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/footprint"] .statbar.four .sb-sub{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); letter-spacing: calc(-0.5 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] /* 已打卡标题 */
.done-head{
  display: flex; align-items: baseline; justify-content: space-between;
  margin: calc(24 * var(--rpx)) calc(8 * var(--rpx)) calc(16 * var(--rpx));
}
.mp-page[data-route="pages/me/footprint"] .dh-t{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #fff; text-shadow: 0 calc(2 * var(--rpx)) calc(6 * var(--rpx)) rgba(0,0,0,.35); }
.mp-page[data-route="pages/me/footprint"] .dh-n{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: rgba(255,255,255,.9); text-shadow: 0 calc(2 * var(--rpx)) calc(6 * var(--rpx)) rgba(0,0,0,.35); }
.mp-page[data-route="pages/me/footprint"] /* 浅色背景下的列表头（想打清单页） */
.done-head.light .dh-t{ color: #222; text-shadow: none; }
.mp-page[data-route="pages/me/footprint"] .dh-add{
  padding: calc(16 * var(--rpx)) calc(34 * var(--rpx)); border-radius: calc(36 * var(--rpx));
  background: #21a45d; color: #fff; font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700;
  box-shadow: 0 calc(4 * var(--rpx)) calc(12 * var(--rpx)) rgba(33,164,93,.28);
}
.mp-page[data-route="pages/me/footprint"] .done-scroll{ width: 100%; white-space: nowrap; }
.mp-page[data-route="pages/me/footprint"] .done-list{ display: inline-flex; gap: calc(20 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(4 * var(--rpx)) calc(12 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .done-card{
  position: relative;
  width: calc(260 * var(--rpx)); flex-shrink: 0;
  background: #fff; border-radius: calc(18 * var(--rpx));
  overflow: hidden;
  box-shadow: 0 calc(6 * var(--rpx)) calc(18 * var(--rpx)) rgba(0,0,0,.12);
}
.mp-page[data-route="pages/me/footprint"] /* 地图单击 marker 后高亮对应的已点亮卡片，帮助球友快速定位 */
.done-card.active{
  box-shadow: 0 0 0 calc(4 * var(--rpx)) #21a45d, 0 calc(6 * var(--rpx)) calc(18 * var(--rpx)) rgba(0,0,0,.12);
}
.mp-page[data-route="pages/me/footprint"] .done-img{ width: 100%; height: calc(150 * var(--rpx)); display: block; }
.mp-page[data-route="pages/me/footprint"] .done-edit{
  position: absolute; top: calc(12 * var(--rpx)); right: calc(12 * var(--rpx));
  width: calc(48 * var(--rpx)); height: calc(48 * var(--rpx)); border-radius: 50%;
  background: rgba(0,0,0,.5);
  color: #fff; font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1;
  display: flex; align-items: center; justify-content: center;
}
.mp-page[data-route="pages/me/footprint"] .done-body{ padding: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .done-name{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-page[data-route="pages/me/footprint"] .done-meta{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); white-space: nowrap; }
.mp-page[data-route="pages/me/footprint"] /* 认证徽标（PRD §14-§20）：图标化 —— ✓ 果夫认证 / ⋯ 审核中 / ✕ 已驳回 / ○ 未认证 */
.done-verify{
  position: absolute; top: calc(12 * var(--rpx)); left: calc(12 * var(--rpx));
  width: calc(40 * var(--rpx)); height: calc(40 * var(--rpx)); border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #fff;
  background: rgba(0,0,0,.45); line-height: 1;
  box-shadow: 0 calc(2 * var(--rpx)) calc(8 * var(--rpx)) rgba(0,0,0,.18);
}
.mp-page[data-route="pages/me/footprint"] /* 图标本体只有 calc(40 * var(--rpx))（约 20px），手指点不准；用伪元素把可点热区扩到 calc(72 * var(--rpx)) */
.done-verify::after{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(72 * var(--rpx)); height: calc(72 * var(--rpx)); margin: calc(-36 * var(--rpx)) 0 0 calc(-36 * var(--rpx));
  border-radius: 50%;
}
.mp-page[data-route="pages/me/footprint"] .done-verify.v-VERIFIED{ background: #21a45d; }
.mp-page[data-route="pages/me/footprint"] .done-verify.v-PENDING{ background: #e8902a; }
.mp-page[data-route="pages/me/footprint"] /* ㊿+88（2026-10-23 用户要求）：用回原来截图方案：已驳回/未认证均深灰底 */
.done-verify.v-REJECTED,.mp-page[data-route="pages/me/footprint"] .done-verify.v-UNVERIFIED{ background: rgba(0,0,0,.45); }
.mp-page[data-route="pages/me/footprint"] /* ===== ㊿+76 统计热区清单弹层 ===== */
.sb-hot{ opacity: .55; }
.mp-page[data-route="pages/me/footprint"] .stat-sheet{ max-height: 84dvh; }
.mp-page[data-route="pages/me/footprint"] .sl-back{ color: #21a45d; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 400; margin-right: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .sl-scroll{ max-height: 62dvh; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .sl-row{ display: flex; align-items: center; gap: calc(16 * var(--rpx)); padding: calc(18 * var(--rpx)) calc(6 * var(--rpx)); border-bottom: calc(1 * var(--rpx)) solid #f0f1f0; }
.mp-page[data-route="pages/me/footprint"] .sl-row-hot{ background: #f4f7f4; }
.mp-page[data-route="pages/me/footprint"] .sl-gname{ flex: 1; min-width: 0; font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #222; }
.mp-page[data-route="pages/me/footprint"] .sl-gcnt{ flex-shrink: 0; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; }
.mp-page[data-route="pages/me/footprint"] .sl-img{ width: calc(96 * var(--rpx)); height: calc(96 * var(--rpx)); border-radius: calc(12 * var(--rpx)); flex-shrink: 0; background: #eee; }
.mp-page[data-route="pages/me/footprint"] .sl-img-ph{ display: flex; align-items: center; justify-content: center; font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/footprint"] .sl-main{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/me/footprint"] .sl-cname{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #222; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mp-page[data-route="pages/me/footprint"] .sl-meta{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] /* ㊿+81（2026-10-22 用户要求）：清单行认证标签只留图标 → 胶囊改圆点徽标 */
.sl-verify{
  position: relative; flex-shrink: 0; display: flex; align-items: center; justify-content: center;
  width: calc(52 * var(--rpx)); height: calc(52 * var(--rpx)); padding: 0; border-radius: 50%;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; line-height: 1;
}
.mp-page[data-route="pages/me/footprint"] .sl-verify.v-VERIFIED{ background: #21a45d; }
.mp-page[data-route="pages/me/footprint"] .sl-verify.v-PENDING{ background: #e8902a; }
.mp-page[data-route="pages/me/footprint"] /* ㊿+88：用回原来截图方案 —— ✓ 果夫认证 / ⋯ 审核中 / ✕ 已驳回 / ○ 未认证；驳回与未认证均深灰底 */
.sl-verify.v-REJECTED,.mp-page[data-route="pages/me/footprint"] .sl-verify.v-UNVERIFIED{
  background: rgba(0,0,0,.45); color: #fff; border: none;
}
.mp-page[data-route="pages/me/footprint"] .edit-ok.disabled{ background: #c8d3cc; color: #fff; }
.mp-page[data-route="pages/me/footprint"] .done-empty{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: rgba(255,255,255,.8); padding: calc(30 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] /* ===== 想打清单 ===== */
.want-scroll{
  position: absolute; top: calc(170 * var(--rpx)); left: 0; right: 0; bottom: 0;
}
.mp-page[data-route="pages/me/footprint"] .want-list{ padding: calc(8 * var(--rpx)) calc(24 * var(--rpx)) calc(calc(40 * var(--rpx)) + env(safe-area-inset-bottom)); }
.mp-page[data-route="pages/me/footprint"] .want-card{
  display: flex; gap: calc(20 * var(--rpx));
  background: #fff; border-radius: calc(18 * var(--rpx)); padding: calc(20 * var(--rpx));
  margin-bottom: calc(20 * var(--rpx));
  box-shadow: 0 calc(4 * var(--rpx)) calc(16 * var(--rpx)) rgba(0,0,0,.05);
}
.mp-page[data-route="pages/me/footprint"] .want-img{ width: calc(180 * var(--rpx)); height: calc(130 * var(--rpx)); border-radius: calc(12 * var(--rpx)); flex-shrink: 0; background: #eee; }
.mp-page[data-route="pages/me/footprint"] .want-body{ flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: space-between; }
.mp-page[data-route="pages/me/footprint"] .want-name{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mp-page[data-route="pages/me/footprint"] .want-meta{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .want-ops{ display: flex; gap: calc(14 * var(--rpx)); margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .wop{
  padding: calc(14 * var(--rpx)) calc(24 * var(--rpx)); border-radius: calc(34 * var(--rpx)); font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1));
  background: #f2f3f2; color: #666;
}
.mp-page[data-route="pages/me/footprint"] .wop.main{ background: #21a45d; color: #fff; }
.mp-page[data-route="pages/me/footprint"] .wop.del{ background: #fff; color: #bbb; border: calc(1 * var(--rpx)) solid #eee; }
.mp-page[data-route="pages/me/footprint"] .want-empty{ text-align: center; padding: calc(140 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .we-t{ font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pages/me/footprint"] .we-s{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin: calc(16 * var(--rpx)) 0 calc(40 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .we-btn{
  display: inline-block; padding: calc(20 * var(--rpx)) calc(60 * var(--rpx)); border-radius: calc(44 * var(--rpx));
  background: #21a45d; color: #fff; font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/me/footprint"] /* 编辑弹层 */
.edit-mask{
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,.5); z-index: 100;
  display: flex; align-items: flex-end;
}
.mp-page[data-route="pages/me/footprint"] .edit-sheet{
  width: 100%;
  background: #fff; border-radius: calc(28 * var(--rpx)) calc(28 * var(--rpx)) 0 0;
  padding: calc(24 * var(--rpx)) calc(32 * var(--rpx)) calc(calc(32 * var(--rpx)) + env(safe-area-inset-bottom));
}
.mp-page[data-route="pages/me/footprint"] .edit-bar{
  width: calc(60 * var(--rpx)); height: calc(6 * var(--rpx)); background: #ddd; border-radius: calc(4 * var(--rpx));
  margin: 0 auto calc(24 * var(--rpx));
}
.mp-page[data-route="pages/me/footprint"] .edit-title{ font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; text-align: center; }
.mp-page[data-route="pages/me/footprint"] .edit-course{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #666; text-align: center; margin: calc(12 * var(--rpx)) 0 calc(32 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .edit-row{
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(28 * var(--rpx)) 0; border-bottom: calc(1 * var(--rpx)) solid #f0f0f0;
}
.mp-page[data-route="pages/me/footprint"] .edit-label{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/me/footprint"] .edit-val{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/me/footprint"] .edit-val.ph{ color: #bbb; }
.mp-page[data-route="pages/me/footprint"] .edit-input{
  flex: 1; text-align: right;
  font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); color: #333;
}
.mp-page[data-route="pages/me/footprint"] .edit-btns{ display: flex; gap: calc(24 * var(--rpx)); margin-top: calc(40 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .edit-cancel,.mp-page[data-route="pages/me/footprint"] .edit-ok{
  flex: 1; height: calc(96 * var(--rpx)); line-height: calc(96 * var(--rpx));
  text-align: center; border-radius: calc(48 * var(--rpx)); font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/me/footprint"] .edit-cancel{ background: #f4f5f4; color: #555; }
.mp-page[data-route="pages/me/footprint"] .edit-ok{ background: #21a45d; color: #fff; }
.mp-page[data-route="pages/me/footprint"] /* ===== 添加球场弹层 ===== */
.add-sheet{
  width: 100%; max-height: 86dvh;
  background: #fff; border-radius: calc(28 * var(--rpx)) calc(28 * var(--rpx)) 0 0;
  padding: calc(24 * var(--rpx)) calc(32 * var(--rpx)) calc(calc(32 * var(--rpx)) + env(safe-area-inset-bottom));
  display: flex; flex-direction: column;
  box-sizing: border-box;
}
.mp-page[data-route="pages/me/footprint"] .add-search{
  display: flex; align-items: center; gap: calc(12 * var(--rpx));
  background: #f4f5f4; border-radius: calc(40 * var(--rpx)); padding: calc(20 * var(--rpx)) calc(28 * var(--rpx));
  flex-shrink: 0;
}
.mp-page[data-route="pages/me/footprint"] .as-ico{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/footprint"] .as-input{ flex: 1; font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/me/footprint"] .as-ph{ color: #bbb; }
.mp-page[data-route="pages/me/footprint"] .as-clear{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; padding: 0 calc(8 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/me/footprint"] /* ㊿+90 AI 识别 mp-icon：并入搜索框右侧（替换原定位按钮） */
.as-ai{ width: calc(56 * var(--rpx)); height: calc(56 * var(--rpx)); border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; background: #eaf6ee; }
.mp-page[data-route="pages/me/footprint"] .as-ai:active{ background: #d4ecdd; }
.mp-page[data-route="pages/me/footprint"] .as-ai-ico{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1; }
.mp-page[data-route="pages/me/footprint"] /* 弹窗标题与搜索框间距 */
.add-title{ margin-bottom: calc(28 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .add-list{ margin-top: calc(20 * var(--rpx)); max-height: 52dvh; }
.mp-page[data-route="pages/me/footprint"] .al-note{
  text-align: center; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; font-weight: 600;
  padding: calc(12 * var(--rpx)) 0 calc(18 * var(--rpx));
}
.mp-page[data-route="pages/me/footprint"] .al-item{
  display: flex; align-items: center; gap: calc(22 * var(--rpx));
  padding: calc(24 * var(--rpx)) 0; border-bottom: calc(1 * var(--rpx)) solid #f2f2f2;
}
.mp-page[data-route="pages/me/footprint"] .al-img{ width: calc(116 * var(--rpx)); height: calc(88 * var(--rpx)); border-radius: calc(12 * var(--rpx)); flex-shrink: 0; background: #eee; }
.mp-page[data-route="pages/me/footprint"] .al-main{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/me/footprint"] .al-name{
  font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); color: #222; font-weight: 600;
  overflow: hidden; white-space: nowrap;
}
.mp-page[data-route="pages/me/footprint"] .al-name-t{
  display: inline-block;
  white-space: nowrap;
}
.mp-page[data-route="pages/me/footprint"] .al-name-t.scroll{
  animation: alNameScroll 8s linear infinite;
}

@keyframes alNameScroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-100%); }
}
.mp-page[data-route="pages/me/footprint"] .al-sub{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .al-tag{
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); padding: calc(16 * var(--rpx)) calc(26 * var(--rpx)); border-radius: calc(32 * var(--rpx)); flex-shrink: 0;
}
.mp-page[data-route="pages/me/footprint"] .al-tag.add{ background: #21a45d; color: #fff; }
.mp-page[data-route="pages/me/footprint"] .al-tag.cancel{ background: #fff; color: #999; border: calc(1 * var(--rpx)) solid #ddd; }
.mp-page[data-route="pages/me/footprint"] .al-tag.done{ background: #eaf6ee; color: #21a45d; }
.mp-page[data-route="pages/me/footprint"] .al-tag.want{ background: #fff4e5; color: #e8890c; }
.mp-page[data-route="pages/me/footprint"] /* ㊿+90 行尾「打过/想打」双按钮 */
.al-actions{ display: flex; align-items: center; gap: calc(14 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pages/me/footprint"] .al-btn{
  min-width: calc(96 * var(--rpx)); text-align: center;
  padding: calc(14 * var(--rpx)) calc(22 * var(--rpx)); border-radius: calc(30 * var(--rpx));
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1));
  background: #f4f5f4; color: #666; border: calc(1 * var(--rpx)) solid #e8e9e8;
}
.mp-page[data-route="pages/me/footprint"] .al-btn.on{ color: #fff; font-weight: 600; border-color: transparent; }
.mp-page[data-route="pages/me/footprint"] .al-done.on{ background: #21a45d; }
.mp-page[data-route="pages/me/footprint"] .al-want.on{ background: #e8890c; }
.mp-page[data-route="pages/me/footprint"] .al-empty{ text-align: center; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #aaa; padding: calc(70 * var(--rpx)) calc(20 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .al-more{ text-align: center; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9; padding: calc(28 * var(--rpx)) calc(20 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .al-end{ text-align: center; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; padding: calc(24 * var(--rpx)) calc(20 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] /* ㊿+90 AI 识别入口已并入搜索框，独立入口行样式下线 */
.ai-note{
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #888;
  padding: calc(6 * var(--rpx)) 0 calc(14 * var(--rpx));
}
.mp-page[data-route="pages/me/footprint"] /* ㊿+89 粘贴文字识别弹层 */
.ai-textarea{
  width: 100%; height: calc(320 * var(--rpx)); box-sizing: border-box;
  background: #f4f5f4; border-radius: calc(16 * var(--rpx)); padding: calc(20 * var(--rpx)) calc(24 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #333; line-height: 1.6;
}
.mp-page[data-route="pages/me/footprint"] .ai-textarea-ph{ color: #bbb; }
.mp-page[data-route="pages/me/footprint"] .ai-item{
  display: flex; align-items: center; gap: calc(22 * var(--rpx));
  padding: calc(24 * var(--rpx)) 0; border-bottom: calc(1 * var(--rpx)) solid #f2f2f2;
}
.mp-page[data-route="pages/me/footprint"] .ai-check{
  width: calc(44 * var(--rpx)); height: calc(44 * var(--rpx)); border-radius: 50%; flex-shrink: 0;
  border: calc(2 * var(--rpx)) solid #d4ddd6; color: #fff; background: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700;
}
.mp-page[data-route="pages/me/footprint"] .ai-check.yes{ background: #21a45d; border-color: #21a45d; }
.mp-page[data-route="pages/me/footprint"] .ai-check.hide{ visibility: hidden; }
.mp-page[data-route="pages/me/footprint"] .ai-item.on .al-name{ color: #1c7a45; }
.mp-page[data-route="pages/me/footprint"] .ai-nomatch{ color: #e8890c; }
.mp-page[data-route="pages/me/footprint"] /* ===== 成就 / 全网比拼 / 英雄榜（点击勋章图标展开，默认收起） ===== */
.achv-mini{
  margin-top: calc(14 * var(--rpx));
  background: rgba(255,255,255,.96); border-radius: calc(26 * var(--rpx));
  box-shadow: 0 calc(6 * var(--rpx)) calc(20 * var(--rpx)) rgba(0,0,0,.10);
  padding: calc(20 * var(--rpx)) calc(22 * var(--rpx)); box-sizing: border-box;
}
.mp-page[data-route="pages/me/footprint"] .achv-bar{ height: calc(12 * var(--rpx)); border-radius: calc(8 * var(--rpx)); background: #eee; overflow: hidden; }
.mp-page[data-route="pages/me/footprint"] .achv-fill{ height: 100%; border-radius: calc(8 * var(--rpx)); transition: width .4s ease; }
.mp-page[data-route="pages/me/footprint"] .achv-tip{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #888; margin: calc(12 * var(--rpx)) 0; }
.mp-page[data-route="pages/me/footprint"] .achv-pill{
  display: block; margin: calc(4 * var(--rpx)) 0 calc(16 * var(--rpx));
  background: #f4f5f4; border-radius: calc(32 * var(--rpx));
  padding: calc(18 * var(--rpx)) calc(24 * var(--rpx)); font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.mp-page[data-route="pages/me/footprint"] .achv-pill.cta{ background: #21a45d; color: #fff; }
.mp-page[data-route="pages/me/footprint"] .achv-pill .hl{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); color: #e8890c; }
.mp-page[data-route="pages/me/footprint"] .achv-pill.cta .hl{ color: #fff; }
.mp-page[data-route="pages/me/footprint"] .achv-btns{ display: flex; align-items: center; gap: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .achv-btn{
  flex: 1; text-align: center;
  background: #fff; border: calc(1 * var(--rpx)) solid #e2e8ec; border-radius: calc(32 * var(--rpx));
  padding: calc(18 * var(--rpx)) 0; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; font-weight: 700;
}
.mp-page[data-route="pages/me/footprint"] /* 离屏画布：仅用于生成海报，移出可视区 */
.poster-canvas{ position: fixed; left: -9999px; top: 0; width: 600px; height: 900px; }
.mp-page[data-route="pages/me/footprint"] /* ㊿+86 战绩海报预览弹层 */
.poster-mask{ display: flex; align-items: center; justify-content: center; padding: calc(40 * var(--rpx)); background: rgba(0,0,0,.82); }
.mp-page[data-route="pages/me/footprint"] .poster-card{ width: calc(680 * var(--rpx)); max-width: 92vw; border-radius: calc(24 * var(--rpx)); overflow: hidden; background: #f7f7f7; }
.mp-page[data-route="pages/me/footprint"] .poster-preview-img{ width: 100%; display: block; border-radius: calc(24 * var(--rpx)) calc(24 * var(--rpx)) 0 0; background: #fff; }
.mp-page[data-route="pages/me/footprint"] .poster-actions{
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(20 * var(--rpx)) calc(28 * var(--rpx)) calc(28 * var(--rpx)); background: #fff;
}
.mp-page[data-route="pages/me/footprint"] .poster-btn{
  flex-shrink: 0; padding: calc(14 * var(--rpx)) calc(32 * var(--rpx)); border-radius: calc(32 * var(--rpx));
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; line-height: 1;
}
.mp-page[data-route="pages/me/footprint"] .poster-close{ background: #f0f1f2; color: #555; }
.mp-page[data-route="pages/me/footprint"] .poster-switch{ background: #21a45d; color: #fff; }
.mp-page[data-route="pages/me/footprint"] .poster-hint{
  flex: 1; text-align: center; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999;
  padding: 0 calc(16 * var(--rpx));
}
.mp-page[data-route="pages/me/footprint"] /* 🌍 全球图入口（2026-10-20 改版）：与「● 中国」同一行右对齐（原浮在地图右上角，
   用户要求移到地区行右侧红圈位置——全球视角功能由 3D 全球足迹图接管） */
.globe-btn{
  /* 胶囊尺寸与左侧「● 中国」完全一致（2026-10-20 用户要求）：同 padding/字号/圆角 */
  flex-shrink: 0;
  background: rgba(11,18,32,.85); color: #ffd27d;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  padding: calc(18 * var(--rpx)) calc(26 * var(--rpx)); border-radius: calc(30 * var(--rpx));
  border: calc(1 * var(--rpx)) solid rgba(255,210,125,.5);
  box-shadow: 0 calc(4 * var(--rpx)) calc(16 * var(--rpx)) rgba(0,0,0,.25);
}
.mp-page[data-route="pages/me/footprint"] /* ＋ 添加入口（2026-10-20 改版）：精简圆钮，置于统计条上方（与统计条换位；
   原「＋ 添加球场」长按钮在 done-head 右侧，已移除） */
.add-fab{
  display: flex; align-items: center; justify-content: center;
  width: calc(72 * var(--rpx)); height: calc(72 * var(--rpx)); border-radius: 50%;
  margin: calc(18 * var(--rpx)) calc(8 * var(--rpx)) calc(14 * var(--rpx)) auto;
  background: #21a45d; color: #fff;
  font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; line-height: 1;
  box-shadow: 0 calc(6 * var(--rpx)) calc(16 * var(--rpx)) rgba(33,164,93,.32);
}
.mp-page[data-route="pages/me/footprint"] /* ===== 首次进入弹窗：介绍勋章按钮（2026-10-21 晚） ===== */
/* 弹窗期间勋章呼吸高亮，引导用户发现可点击 */
.tip-pulse{ animation: ftTipPulse 1.2s ease-in-out infinite; }

@keyframes ftTipPulse {
  0%, 100% { box-shadow: 0 calc(2 * var(--rpx)) calc(8 * var(--rpx)) rgba(0,0,0,.18); transform: scale(1); }
  50% { box-shadow: 0 calc(2 * var(--rpx)) calc(24 * var(--rpx)) rgba(33,164,93,.8); transform: scale(1.15); }
}
.mp-page[data-route="pages/me/footprint"] .tip-mask{
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,.55); z-index: 120;
  display: flex; align-items: center; justify-content: center;
}
.mp-page[data-route="pages/me/footprint"] .tip-card{
  width: 78%; max-width: calc(580 * var(--rpx)); box-sizing: border-box;
  background: #fff; border-radius: calc(24 * var(--rpx));
  padding: calc(48 * var(--rpx)) calc(40 * var(--rpx)) calc(calc(40 * var(--rpx)) + env(safe-area-inset-bottom));
  display: flex; flex-direction: column; align-items: stretch;
}
.mp-page[data-route="pages/me/footprint"] .tip-medal{
  width: calc(104 * var(--rpx)); height: calc(104 * var(--rpx)); border-radius: 50%;
  margin: 0 auto calc(24 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(60 * var(--rpx)) * var(--gf-fs, 1)); color: #fff;
  box-shadow: 0 calc(6 * var(--rpx)) calc(20 * var(--rpx)) rgba(0,0,0,.2);
}
.mp-page[data-route="pages/me/footprint"] .tip-title{ font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; text-align: center; }
.mp-page[data-route="pages/me/footprint"] .tip-p{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin: calc(20 * var(--rpx)) 0 calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .tip-li{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #444; line-height: 1.9; }
.mp-page[data-route="pages/me/footprint"] .tip-btns{ display: flex; gap: calc(24 * var(--rpx)); margin-top: calc(40 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .tip-btn{
  flex: 1; height: calc(92 * var(--rpx)); line-height: calc(92 * var(--rpx)); text-align: center;
  border-radius: calc(46 * var(--rpx)); font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/me/footprint"] .tip-btn.plain{ background: #f4f5f4; color: #555; }
.mp-page[data-route="pages/me/footprint"] .tip-btn.main{ background: #21a45d; color: #fff; font-weight: 600; }
.mp-page[data-route="pages/me/footprint"] /* ===== ㊿+95 头衔升级祝贺弹窗 + 屏幕礼花 ===== */
.cele-mask{
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0,0,0,.72);
  z-index: 1000;
}
.mp-page[data-route="pages/me/footprint"] .cele-confetti{
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  overflow: hidden; pointer-events: none;
}
.mp-page[data-route="pages/me/footprint"] .cele-piece{
  position: absolute; top: calc(-20 * var(--rpx));
  border-radius: calc(3 * var(--rpx));
  opacity: .92;
  animation-name: celeFall;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
}

@keyframes celeFall {
  0% { transform: translateY(0) rotate(0deg); opacity: 1; }
  100% { transform: translateY(120dvh) rotate(720deg); opacity: .2; }
}
.mp-page[data-route="pages/me/footprint"] .cele-card{
  position: relative; z-index: 10;
  width: 74%; max-width: calc(540 * var(--rpx)); box-sizing: border-box;
  background: #fff; border-radius: calc(28 * var(--rpx));
  padding: calc(56 * var(--rpx)) calc(44 * var(--rpx)) calc(calc(48 * var(--rpx)) + env(safe-area-inset-bottom));
  display: flex; flex-direction: column; align-items: center;
  text-align: center;
  box-shadow: 0 calc(20 * var(--rpx)) calc(60 * var(--rpx)) rgba(0,0,0,.35);
}
.mp-page[data-route="pages/me/footprint"] .cele-medal{
  width: calc(128 * var(--rpx)); height: calc(128 * var(--rpx)); border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(72 * var(--rpx)) * var(--gf-fs, 1)); color: #fff;
  box-shadow: 0 calc(10 * var(--rpx)) calc(30 * var(--rpx)) rgba(0,0,0,.22);
  margin-bottom: calc(32 * var(--rpx));
}
.mp-page[data-route="pages/me/footprint"] .cele-title{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); color: #888; }
.mp-page[data-route="pages/me/footprint"] .cele-name{ font-size: calc(calc(52 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #333; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .cele-desc{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .cele-btn{
  width: 100%; height: calc(92 * var(--rpx)); line-height: calc(92 * var(--rpx)); margin-top: calc(44 * var(--rpx));
  background: linear-gradient(135deg, #21a45d, #1b8f50);
  color: #fff; font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  border-radius: calc(46 * var(--rpx)); text-align: center;
}
.mp-page[data-route="pages/me/footprint"] /* ===== ㊿+103 一键打卡：附近大卡；㊿+105「球场打卡」长条胶囊已删（用户要求，统一走「＋」圆钮） ===== */
/* 添加弹窗附近大卡：最近球场 <3km 时首行渲染 */
.near-card{
  margin: calc(8 * var(--rpx)) calc(4 * var(--rpx)) calc(20 * var(--rpx));
  padding: calc(28 * var(--rpx)) calc(28 * var(--rpx)) calc(30 * var(--rpx));
  border-radius: calc(20 * var(--rpx));
  background: linear-gradient(135deg, #eaf7ef, #f6fbf7);
  border: calc(1 * var(--rpx)) solid rgba(33,164,93,.28);
}
.mp-page[data-route="pages/me/footprint"] .nc-t{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #173f32; }
.mp-page[data-route="pages/me/footprint"] .nc-sub{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #5b6f66; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/footprint"] .nc-btn{
  margin-top: calc(22 * var(--rpx)); height: calc(84 * var(--rpx)); line-height: calc(84 * var(--rpx)); text-align: center;
  border-radius: calc(42 * var(--rpx));
  background: #21a45d; color: #fff;
  font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700;
  box-shadow: 0 calc(6 * var(--rpx)) calc(16 * var(--rpx)) rgba(33,164,93,.28);
}
.mp-page[data-route="pages/me/footprint"] .nc-btn.done{ background: #f4f5f4; color: #21a45d; box-shadow: none; }

/* ===== pages/me/footmap-web.wxss ===== */
.mp-page[data-route="pages/me/footmap-web"] /* pages/me/footmap-web.wxss */
.page{ min-height: 100dvh; display: flex; align-items: center; justify-content: center; background: #0b1220; }
.mp-page[data-route="pages/me/footmap-web"] .err-box{ color: #cfe0ff; font-size: 15px; padding: 40px; text-align: center; }

/* ===== pages/me/hero.wxss ===== */
.mp-page[data-route="pages/me/hero"] /* pages/me/hero.wxss */
/* 【背景图为什么改成 mp-image 组件 —— 2026-10-07 二次修复】
   之前用 `background-image: url('/assets/img/hero-bg.jpg')` + `.hero::before` 暗色遮罩，
   真机预览仍是纯色 #1d3c2a。逐项排查结论：
     ① 图本身没问题：hero-bg.jpg 750×1334，RGB 标准差 60.5/60.2/68.7（远大于 0，不是纯色图），
        画面是蓝天+棕地+球员的真实航拍。
     ② hero.json 的 backgroundColor 已改 #1d3c2a，排除「窗口底色伪装成纯色」。
     ③ ⚠️ 真正原因：**WXSS 里的 `url()` 对本地 jpg 在真机不生效**。
        全项目其他 wxss 的 url() 全是 data-URI SVG（如 courses.wxss:105 的地图图标），
        只有这一处引用了本地图片文件 —— 而它恰好是唯一失效的那个。
   结论：小程序里「本地图片当 CSS 背景」不可靠，**改用 <image> 组件** 是唯一稳的做法。
   同理遮罩也从 ::before 改成真实的 <view>，不依赖伪元素。 */
.hero{
  position: relative;
  min-height: 100dvh;
  /* 兜底色：即使 <image> 加载失败，底色也与主题一致不刺眼 */
  background: #1d3c2a;
  padding: 0 calc(24 * var(--rpx)) calc(calc(40 * var(--rpx)) + env(safe-area-inset-bottom));
  box-sizing: border-box;
  overflow: hidden;   /* 让背景图不溢出到页面外 */
}
.mp-page[data-route="pages/me/hero"] /* 背景图层：<image> 组件铺满整个页面。
   ⚠️ 这里用 left/top/right/bottom 四边定位而不是 `width/height:100%`——
   父级 .hero 只有 min-height（高度由内容撑开），此时子元素的 `height:100%`
   在小程序里可能解析不出高度而整块塌掉；四边定位则总能铺满父级实际高度。 */
.hero-bg{
  position: absolute;
  left: 0; top: 0; right: 0; bottom: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  /* 背景图铺满的关键：mode=aspectFill（保持比例填满、长边溢出裁切） */
  pointer-events: none;
}
.mp-page[data-route="pages/me/hero"] /* 暗色渐变遮罩：保证白色标题与卡片文字可读（真实球场照偏亮） */
.hero-mask{
  position: absolute;
  left: 0; top: 0; right: 0; bottom: 0;
  z-index: 0;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(9, 28, 18, .72) 0%, rgba(9, 28, 18, .52) 40%, rgba(9, 28, 18, .66) 100%);
}
.mp-page[data-route="pages/me/hero"] /* 遮罩之上所有内容浮到上面一层。
   ⚠️ 原来写的是 `.hero > mp-view:not(.hero-bg):not(.hero-mask)`，
   但微信小程序 WXSS 对 :not() 支持不稳定，一旦不解析就整层失效、
   内容会被遮罩压住变暗。改为给内容层显式加 .hero-content，最稳。 */
.hero-content{ position: relative; z-index: 1; }
.mp-page[data-route="pages/me/hero"] .hero-hd{ padding: calc(52 * var(--rpx)) calc(12 * var(--rpx)) calc(24 * var(--rpx)); }
.mp-page[data-route="pages/me/hero"] /* 背景换成真实球场照（深绿）后，压在遮罩上的文字必须用浅色，否则看不清 */
.hero-eyebrow{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); letter-spacing: calc(4 * var(--rpx)); color: #e8c877; font-weight: 700;
  text-transform: uppercase; opacity: .95;
}
.mp-page[data-route="pages/me/hero"] .hero-title{
  font-size: calc(calc(56 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 900; color: #ffffff; letter-spacing: calc(3 * var(--rpx));
  text-shadow: 0 calc(2 * var(--rpx)) calc(12 * var(--rpx)) rgba(0,0,0,.45);
  margin-top: calc(10 * var(--rpx));
}
.mp-page[data-route="pages/me/hero"] .hero-sub{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: rgba(255,255,255,.78); margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/me/hero"] /* 我的战绩卡：白卡 + 暖金描边 */
.me-card{
  display: flex; align-items: center; gap: calc(22 * var(--rpx));
  margin-top: calc(30 * var(--rpx)); padding: calc(24 * var(--rpx)) calc(26 * var(--rpx));
  background: rgba(255,255,255,.92);
  border: calc(1 * var(--rpx)) solid rgba(230,200,119,.6);
  border-radius: calc(26 * var(--rpx));
  box-shadow: 0 calc(8 * var(--rpx)) calc(26 * var(--rpx)) rgba(120,90,40,.12);
}
.mp-page[data-route="pages/me/hero"] .me-card.cta{ background: rgba(232,246,236,.94); border-color: rgba(33,164,93,.45); }
.mp-page[data-route="pages/me/hero"] .me-medal{
  width: calc(96 * var(--rpx)); height: calc(96 * var(--rpx)); border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(50 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; box-shadow: 0 calc(4 * var(--rpx)) calc(14 * var(--rpx)) rgba(120,90,40,.22);
}
.mp-page[data-route="pages/me/hero"] .me-medal.ghost{ background: #e5f2e8; }
.mp-page[data-route="pages/me/hero"] .me-main{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/me/hero"] .me-row{ display: flex; align-items: center; gap: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/me/hero"] .me-badge{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #1d3c2a; }
.mp-page[data-route="pages/me/hero"] .me-rank{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #8a5d10; background: rgba(255,214,107,.35);
  padding: calc(2 * var(--rpx)) calc(14 * var(--rpx)); border-radius: calc(16 * var(--rpx)); border: calc(1 * var(--rpx)) solid rgba(196,150,58,.5);
}
.mp-page[data-route="pages/me/hero"] .me-pct{ font-size: calc(calc(25 * var(--rpx)) * var(--gf-fs, 1)); color: #5c6b57; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/hero"] .me-pct .me-hl{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #c07f1f; }
.mp-page[data-route="pages/me/hero"] /* 榜单容器：白色暖面板 */
.hero-list{
  margin-top: calc(26 * var(--rpx));
  background: rgba(255,255,255,.94);
  border: calc(1 * var(--rpx)) solid rgba(230,200,119,.55);
  border-radius: calc(26 * var(--rpx)); overflow: hidden;
  box-shadow: 0 calc(10 * var(--rpx)) calc(30 * var(--rpx)) rgba(120,90,40,.12);
}
.mp-page[data-route="pages/me/hero"] /* 前三名领奖台：暖金渐变 */
.pod{
  position: relative;
  display: flex; align-items: center; gap: calc(22 * var(--rpx));
  padding: calc(22 * var(--rpx)) calc(24 * var(--rpx)); border-bottom: calc(1 * var(--rpx)) solid rgba(196,150,58,.18);
  background: linear-gradient(90deg, rgba(255,214,107,.28), rgba(255,214,107,.06));
}
.mp-page[data-route="pages/me/hero"] .pod-rank{
  width: calc(56 * var(--rpx)); text-align: center; flex-shrink: 0;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800;
}
.mp-page[data-route="pages/me/hero"] .pod-rank.r1{ color: #c07f1f; font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/hero"] .pod-rank.r2{ color: #6e7b8c; font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/hero"] .pod-rank.r3{ color: #a5652a; font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/hero"] .pod-ava{
  width: calc(84 * var(--rpx)); height: calc(84 * var(--rpx)); border-radius: 50%; flex-shrink: 0;
  background: #e8ddc8; color: #1d3c2a; display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700;
}
.mp-page[data-route="pages/me/hero"] .pod-ava-txt{ border: calc(2 * var(--rpx)) solid rgba(196,150,58,.6); }
.mp-page[data-route="pages/me/hero"] .pod-main{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/me/hero"] .pod-name{
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #1d3c2a;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.mp-page[data-route="pages/me/hero"] .pod-me{
  display: inline-block; margin-left: calc(10 * var(--rpx)); padding: calc(2 * var(--rpx)) calc(12 * var(--rpx));
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: #21a45d; border-radius: calc(16 * var(--rpx)); vertical-align: middle;
}
.mp-page[data-route="pages/me/hero"] .pod-badge{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #7c6a52; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/hero"] .pod-medal{ margin-right: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/hero"] .pod-count{ flex-shrink: 0; font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #c07f1f; }
.mp-page[data-route="pages/me/hero"] .pod-unit{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #9b8a6e; font-weight: 500; }
.mp-page[data-route="pages/me/hero"] .pod-flag{ position: absolute; right: calc(22 * var(--rpx)); top: calc(14 * var(--rpx)); font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/hero"] .pod-flag.silver{ filter: grayscale(.2); }
.mp-page[data-route="pages/me/hero"] .pod-flag.bronze{ filter: sepia(.4) hue-rotate(-20deg); }
.mp-page[data-route="pages/me/hero"] /* 常规行（第 4 名起） */
.hero-row{
  display: flex; align-items: center; gap: calc(22 * var(--rpx));
  padding: calc(22 * var(--rpx)) calc(24 * var(--rpx)); border-bottom: calc(1 * var(--rpx)) solid rgba(196,150,58,.14);
}
.mp-page[data-route="pages/me/hero"] .hero-row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/me/hero"] .hero-row.me{ background: rgba(33,164,93,.10); }
.mp-page[data-route="pages/me/hero"] .hr-rank{
  width: calc(56 * var(--rpx)); text-align: center; flex-shrink: 0;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #a5947a;
}
.mp-page[data-route="pages/me/hero"] .hr-ava{
  width: calc(80 * var(--rpx)); height: calc(80 * var(--rpx)); border-radius: 50%; flex-shrink: 0;
  background: #e8ddc8; color: #1d3c2a; display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700;
}
.mp-page[data-route="pages/me/hero"] .hr-ava-txt{ border: calc(2 * var(--rpx)) solid rgba(196,150,58,.55); }
.mp-page[data-route="pages/me/hero"] .hr-main{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/me/hero"] .hr-name{
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #1d3c2a;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.mp-page[data-route="pages/me/hero"] .hr-me{
  display: inline-block; margin-left: calc(10 * var(--rpx)); padding: calc(2 * var(--rpx)) calc(12 * var(--rpx));
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; background: #21a45d; border-radius: calc(16 * var(--rpx)); vertical-align: middle;
}
.mp-page[data-route="pages/me/hero"] .hr-badge{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #7c6a52; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/hero"] .hr-medal{ margin-right: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/me/hero"] .hr-count{ flex-shrink: 0; font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #c07f1f; }
.mp-page[data-route="pages/me/hero"] .hr-unit{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #9b8a6e; font-weight: 500; }
.mp-page[data-route="pages/me/hero"] .hero-empty{ text-align: center; color: #5c6b57; padding: calc(120 * var(--rpx)) calc(30 * var(--rpx)); }
.mp-page[data-route="pages/me/hero"] .he-t{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #1d3c2a; }
.mp-page[data-route="pages/me/hero"] .he-s{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); margin-top: calc(16 * var(--rpx)); line-height: 1.6; color: #7c6a52; }
.mp-page[data-route="pages/me/hero"] .hero-loading{ text-align: center; color: #7c6a52; padding: calc(80 * var(--rpx)); font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/me/hero"] .hero-foot{
  margin: calc(32 * var(--rpx)) auto 0; text-align: center;
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #1d3c2a; font-weight: 700;
  background: rgba(255,255,255,.9); border: calc(1 * var(--rpx)) solid rgba(230,200,119,.65);
  border-radius: calc(40 * var(--rpx)); padding: calc(24 * var(--rpx));
  box-shadow: 0 calc(6 * var(--rpx)) calc(20 * var(--rpx)) rgba(120,90,40,.10);
}
.mp-page[data-route="pages/me/hero"] /* 背景图加载失败时的显式提示（只在 onBgError 触发后出现）
   目的：把「静默变纯色」变成「看得见的报错」，下次不用再靠猜。 */
.bg-warn{
  margin: calc(20 * var(--rpx)) calc(12 * var(--rpx)) 0;
  padding: calc(12 * var(--rpx)) calc(16 * var(--rpx));
  background: rgba(255, 77, 77, .92);
  color: #fff;
  border-radius: calc(10 * var(--rpx));
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1));
  line-height: 1.5;
}

/* ===== pages/commission/commission.wxss ===== */
.mp-page[data-route="pages/commission/commission"] /* pages/commission/commission.wxss */
.page{ background: #f5f6f7; min-height: 100dvh; padding-bottom: calc(40 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] /* 抵扣金头部 */
.wallet{
  background: linear-gradient(135deg, #1a7a44, #21a45d);
  color: #fff; padding: calc(48 * var(--rpx)) calc(40 * var(--rpx)) calc(40 * var(--rpx));
}
.mp-page[data-route="pages/commission/commission"] .w-label{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); opacity: .9; }
.mp-page[data-route="pages/commission/commission"] .w-num{ font-size: calc(calc(72 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; margin: calc(12 * var(--rpx)) 0 calc(8 * var(--rpx)); letter-spacing: calc(1 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .w-sub{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); opacity: .85; }
.mp-page[data-route="pages/commission/commission"] .w-actions{ display: flex; gap: calc(24 * var(--rpx)); margin-top: calc(32 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .w-btn{
  flex: 1; text-align: center; padding: calc(18 * var(--rpx)) 0; border-radius: calc(40 * var(--rpx));
  background: #fff; color: #1a7a44; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
}
.mp-page[data-route="pages/commission/commission"] .w-btn.ghost{ background: rgba(255,255,255,.18); color: #fff; }
.mp-page[data-route="pages/commission/commission"] /* 分区块 */
.sec{ margin: calc(24 * var(--rpx)); background: #fff; border-radius: calc(20 * var(--rpx)); padding: calc(28 * var(--rpx)) calc(28 * var(--rpx)) calc(12 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .sec-head{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #222; margin-bottom: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .sec-tip{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #9aa0a8; font-weight: 400; margin-left: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .empty{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #9aa0a8; padding: calc(24 * var(--rpx)) 0 calc(28 * var(--rpx)); line-height: 1.6; }
.mp-page[data-route="pages/commission/commission"] .c-item{ display: flex; align-items: center; justify-content: space-between; padding: calc(22 * var(--rpx)) 0; border-bottom: calc(1 * var(--rpx)) solid #f2f3f5; }
.mp-page[data-route="pages/commission/commission"] .ci-main{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/commission/commission"] .ci-course{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #222; font-weight: 500; }
.mp-page[data-route="pages/commission/commission"] .ci-sub{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #9aa0a8; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .ci-money{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #1a7a44; }
.mp-page[data-route="pages/commission/commission"] .ci-money.minus{ color: #e0533d; }
.mp-page[data-route="pages/commission/commission"] .ci-note{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #9aa0a8; padding: calc(12 * var(--rpx)) 0 calc(20 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] /* 规则 */
.rule{ margin: calc(24 * var(--rpx)); background: #fff; border-radius: calc(20 * var(--rpx)); padding: calc(28 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .rule-t{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #222; margin-bottom: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .rule-row{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #555; line-height: 1.9; }
.mp-page[data-route="pages/commission/commission"] .rule-sec .rule-row{
  display: flex; align-items: flex-start; padding: calc(10 * var(--rpx)) 0;
  line-height: 1.55;
}
.mp-page[data-route="pages/commission/commission"] .rule-sec .rule-k{ flex: none; width: calc(170 * var(--rpx)); color: #333; font-weight: 500; }
.mp-page[data-route="pages/commission/commission"] .rule-sec .rule-v{ flex: 1; }
.mp-page[data-route="pages/commission/commission"] .hl{ color: #1a7a44; font-weight: 700; }
.mp-page[data-route="pages/commission/commission"] /* 提现弹层 */
.wd-mask{ position: fixed; left: 0; right: 0; top: 0; bottom: 0; background: rgba(0,0,0,.45); z-index: 50; }
.mp-page[data-route="pages/commission/commission"] .wd-sheet{
  position: absolute; left: 0; right: 0; bottom: 0; background: #fff;
  border-radius: calc(28 * var(--rpx)) calc(28 * var(--rpx)) 0 0; padding: calc(36 * var(--rpx)) calc(40 * var(--rpx)) calc(40 * var(--rpx));
}
.mp-page[data-route="pages/commission/commission"] .wd-title{ text-align: center; font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #222; }
.mp-page[data-route="pages/commission/commission"] .wd-balance{ text-align: center; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #9aa0a8; margin: calc(12 * var(--rpx)) 0 calc(24 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .wd-input{
  background: #f5f6f7; border-radius: calc(14 * var(--rpx)); padding: calc(24 * var(--rpx)); font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); text-align: center;
}
.mp-page[data-route="pages/commission/commission"] .wd-msg{ color: #e0533d; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); text-align: center; margin-top: calc(12 * var(--rpx)); min-height: calc(30 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .wd-btns{ display: flex; gap: calc(20 * var(--rpx)); margin-top: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .wd-cancel,.mp-page[data-route="pages/commission/commission"] .wd-ok{ flex: 1; text-align: center; padding: calc(22 * var(--rpx)) 0; border-radius: calc(40 * var(--rpx)); font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/commission/commission"] .wd-cancel{ background: #f2f3f5; color: #555; }
.mp-page[data-route="pages/commission/commission"] .wd-ok{ background: #21a45d; color: #fff; font-weight: 600; }
.mp-page[data-route="pages/commission/commission"] .wd-note{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #9aa0a8; line-height: 1.6; margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] /* 弹层内规则 */
.wd-rule{ margin-top: calc(28 * var(--rpx)); padding-top: calc(24 * var(--rpx)); border-top: calc(1 * var(--rpx)) solid #f2f3f5; }
.mp-page[data-route="pages/commission/commission"] .wd-rule-t{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #222; margin-bottom: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/commission/commission"] .wd-rule-row{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #777; line-height: 1.8; }

/* ===== pages/location/location.wxss ===== */
.mp-page[data-route="pages/location/location"] /* pages/location/location.wxss */
.page{ display: flex; flex-direction: column; height: 100dvh; background: #fff; }
.mp-page[data-route="pages/location/location"] /* 顶部：搜索框 + 取消 */
.top-search{
  display: flex; align-items: center;
  padding: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0;
  flex-shrink: 0;
}
.mp-page[data-route="pages/location/location"] .search-box{
  flex: 1; display: flex; align-items: center;
  background: #f4f5f6;
  border-radius: calc(40 * var(--rpx));
  padding: calc(18 * var(--rpx)) calc(28 * var(--rpx));
}
.mp-page[data-route="pages/location/location"] .s-ico{
  width: calc(28 * var(--rpx)); height: calc(28 * var(--rpx));
  border: calc(3 * var(--rpx)) solid #b9bdc4;
  border-radius: 50%;
  position: relative;
  margin-right: calc(16 * var(--rpx));
  flex-shrink: 0;
}
.mp-page[data-route="pages/location/location"] .s-ico::after{
  content: '';
  position: absolute;
  right: calc(-10 * var(--rpx)); bottom: calc(-6 * var(--rpx));
  width: calc(14 * var(--rpx)); height: calc(3 * var(--rpx));
  background: #b9bdc4;
  transform: rotate(45deg);
  border-radius: calc(2 * var(--rpx));
}
.mp-page[data-route="pages/location/location"] .s-input{ flex: 1; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/location/location"] .s-ph{ color: #b9bdc4; }
.mp-page[data-route="pages/location/location"] .cancel{ flex-shrink: 0; margin-left: calc(24 * var(--rpx)); font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #3b7bff; }
.mp-page[data-route="pages/location/location"] /* 页签 */
.tabs{ display: flex; margin: calc(24 * var(--rpx)) calc(24 * var(--rpx)) 0; border-bottom: calc(1 * var(--rpx)) solid #f0f0f0; flex-shrink: 0; }
.mp-page[data-route="pages/location/location"] .tab{
  padding: 0 calc(24 * var(--rpx)) calc(20 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  color: #333;
  position: relative;
}
.mp-page[data-route="pages/location/location"] .tab.on{ color: #3b7bff; font-weight: 700; }
.mp-page[data-route="pages/location/location"] .tab.on::after{
  content: '';
  position: absolute;
  bottom: 0; left: 50%;
  transform: translateX(-50%);
  width: calc(48 * var(--rpx)); height: calc(6 * var(--rpx));
  border-radius: calc(3 * var(--rpx));
  background: #3b7bff;
}
.mp-page[data-route="pages/location/location"] /* 主体 */
.body{ flex: 1; min-height: 0; }
.mp-page[data-route="pages/location/location"] .sec{ padding: calc(30 * var(--rpx)) calc(32 * var(--rpx)) 0; }
.mp-page[data-route="pages/location/location"] .sec-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .clear{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #999; padding: 0 calc(8 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .isec-head{ display: flex; align-items: center; justify-content: space-between; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .isec-head .isec-t{ margin-bottom: 0; }
.mp-page[data-route="pages/location/location"] /* 当前定位（蓝色浅底卡） */
.cur-box{
  display: flex; align-items: center;
  background: #f2f7ff;
  border-radius: calc(14 * var(--rpx));
  padding: calc(22 * var(--rpx)) calc(24 * var(--rpx));
}
.mp-page[data-route="pages/location/location"] .cur-city{
  display: flex; align-items: center; flex-shrink: 0;
  font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); color: #3b7bff; font-weight: 600;
  margin-right: calc(24 * var(--rpx));
}
.mp-page[data-route="pages/location/location"] .cur-pin{
  width: calc(24 * var(--rpx)); height: calc(24 * var(--rpx));
  border: calc(4 * var(--rpx)) solid #3b7bff;
  border-radius: 50% 50% 50% 0;
  transform: rotate(-45deg);
  margin-right: calc(12 * var(--rpx));
  position: relative;
  flex-shrink: 0;
}
.mp-page[data-route="pages/location/location"] .cur-pin::after{
  content: '';
  position: absolute;
  left: 50%; top: 50%;
  width: calc(8 * var(--rpx)); height: calc(8 * var(--rpx));
  margin: calc(-4 * var(--rpx)) 0 0 calc(-4 * var(--rpx));
  background: #3b7bff;
  border-radius: 50%;
}
.mp-page[data-route="pages/location/location"] .cur-detail{
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #6b87b8; line-height: 1.5;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.mp-page[data-route="pages/location/location"] /* 国内热门城市：4 列网格 */
.grid4{ display: flex; flex-wrap: wrap; gap: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .g4-item{
  width: calc((100% - calc(54 * var(--rpx))) / 4);
  box-sizing: border-box;
  text-align: center;
  background: #f4f5f6;
  border-radius: calc(12 * var(--rpx));
  padding: calc(22 * var(--rpx)) 0;
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1));
  color: #333;
}
.mp-page[data-route="pages/location/location"] /* 城市标签 chips */
.chips{ display: flex; flex-wrap: wrap; gap: calc(20 * var(--rpx)); padding-bottom: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .chip{
  background: #f4f5f6;
  border-radius: calc(12 * var(--rpx));
  padding: calc(16 * var(--rpx)) calc(32 * var(--rpx));
  font-size: calc(calc(27 * var(--rpx)) * var(--gf-fs, 1));
  color: #333;
}
.mp-page[data-route="pages/location/location"] .history-empty{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #b9bdc4; padding: calc(6 * var(--rpx)) 0 calc(10 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] /* 字母分组（国内省市） */
.letter-sec{ padding: calc(10 * var(--rpx)) calc(32 * var(--rpx)) 0; }
.mp-page[data-route="pages/location/location"] .letter-head{
  padding: calc(16 * var(--rpx)) calc(8 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 700;
  color: #222;
}
.mp-page[data-route="pages/location/location"] .city-row{
  padding: calc(26 * var(--rpx)) calc(8 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  color: #333;
  border-bottom: calc(1 * var(--rpx)) solid #f5f5f5;
}
.mp-page[data-route="pages/location/location"] /* 右侧字母索引 */
.idx{
  position: fixed;
  right: calc(8 * var(--rpx)); top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  z-index: 10;
}
.mp-page[data-route="pages/location/location"] .idx-l{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1));
  color: #3b7bff;
  text-align: center;
  padding: calc(5 * var(--rpx)) calc(12 * var(--rpx));
}
.mp-page[data-route="pages/location/location"] /* ===== 海外：左侧分类 + 右侧面板 ===== */
.intl-wrap{ flex: 1; min-height: 0; display: flex; }
.mp-page[data-route="pages/location/location"] .side{
  width: calc(176 * var(--rpx)); flex-shrink: 0;
  background: #f6f7f9;
  height: 100%;
}
.mp-page[data-route="pages/location/location"] .side-item{
  padding: calc(34 * var(--rpx)) calc(20 * var(--rpx));
  font-size: calc(calc(27 * var(--rpx)) * var(--gf-fs, 1));
  color: #555;
  position: relative;
}
.mp-page[data-route="pages/location/location"] .side-item.on{
  background: #fff;
  color: #3b7bff;
  font-weight: 700;
}
.mp-page[data-route="pages/location/location"] .intl-body{ flex: 1; min-width: 0; height: 100%; background: #fff; }
.mp-page[data-route="pages/location/location"] .isec{ padding: calc(30 * var(--rpx)) calc(28 * var(--rpx)) 0; }
.mp-page[data-route="pages/location/location"] .isec-t{ font-size: calc(calc(29 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] /* 海外热门城市：3 列网格 */
.grid3{ display: flex; flex-wrap: wrap; gap: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .g3-item{
  width: calc((100% - calc(36 * var(--rpx))) / 3);
  box-sizing: border-box;
  text-align: center;
  background: #f4f5f6;
  border-radius: calc(12 * var(--rpx));
  padding: calc(22 * var(--rpx)) 0;
  font-size: calc(calc(27 * var(--rpx)) * var(--gf-fs, 1));
  color: #333;
}
.mp-page[data-route="pages/location/location"] .g3-item.more{ color: #3b7bff; }
.mp-page[data-route="pages/location/location"] /* 免签/落地签 */
.visa-head{ display: flex; align-items: center; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .visa-country{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222; margin-right: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .visa-badge{
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #3b7bff;
  border: calc(2 * var(--rpx)) solid #9cc2ff; border-radius: calc(6 * var(--rpx));
  padding: calc(2 * var(--rpx)) calc(10 * var(--rpx));
}
.mp-page[data-route="pages/location/location"] .visa-cards{ display: flex; gap: calc(18 * var(--rpx)); margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .visa-card{
  position: relative;
  width: calc((100% - calc(18 * var(--rpx))) / 2);
  height: calc(180 * var(--rpx));
  border-radius: calc(14 * var(--rpx));
  overflow: hidden;
}
.mp-page[data-route="pages/location/location"] .vc-img{ width: 100%; height: 100%; }
.mp-page[data-route="pages/location/location"] .vc-mask{
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 40%, rgba(0,0,0,0.55) 100%);
}
.mp-page[data-route="pages/location/location"] .vc-name{
  position: absolute; left: calc(18 * var(--rpx)); bottom: calc(12 * var(--rpx));
  color: #fff; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700;
  text-shadow: 0 calc(2 * var(--rpx)) calc(6 * var(--rpx)) rgba(0,0,0,0.5);
}
.mp-page[data-route="pages/location/location"] /* 国家列表 */
.country-row{
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(26 * var(--rpx)) calc(8 * var(--rpx));
  border-bottom: calc(1 * var(--rpx)) solid #f5f5f5;
}
.mp-page[data-route="pages/location/location"] .ctry-name{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/location/location"] .ctry-count{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pages/location/location"] /* 海外字母分组 */
.letter-sec-i{ margin-bottom: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .letter-head-i{
  padding: calc(14 * var(--rpx)) calc(8 * var(--rpx));
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #222;
}
.mp-page[data-route="pages/location/location"] /* 热搜 */
.sz-item{
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(30 * var(--rpx)) calc(32 * var(--rpx));
  border-bottom: calc(1 * var(--rpx)) solid #f5f5f5;
}
.mp-page[data-route="pages/location/location"] .sz-name{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-page[data-route="pages/location/location"] .sz-price{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #ff6b2b; font-weight: 700; }
.mp-page[data-route="pages/location/location"] .sz-price .rmb{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/location/location"] .sz-price .per{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; font-weight: 400; }
.mp-page[data-route="pages/location/location"] .empty{ text-align: center; color: #999; padding: calc(120 * var(--rpx)) 0; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pages/location/location"] .pad-bottom{ height: calc(60 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] /* 「全部球场」入口卡 */
.all-entry{
  display: flex; align-items: center;
  padding: calc(28 * var(--rpx)) calc(30 * var(--rpx));
  background: linear-gradient(135deg, #f2fbf6, #eaf6ef);
  border: calc(2 * var(--rpx)) solid #d6ece0;
  border-radius: calc(18 * var(--rpx));
}
.mp-page[data-route="pages/location/location"] .ae-main{ flex: 1; font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #1f7a4d; }
.mp-page[data-route="pages/location/location"] .ae-sub{ flex: 1.4; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #7b8b83; margin-left: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .ae-go{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; font-weight: 600; }
.mp-page[data-route="pages/location/location"] .all-row{ display: flex; gap: calc(20 * var(--rpx)); margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .all-opt{
  flex: 1; text-align: center;
  padding: calc(22 * var(--rpx)) 0; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #444;
  background: #f6f7f8; border-radius: calc(14 * var(--rpx));
}
.mp-page[data-route="pages/location/location"] /* ===== 搜索联想面板 ===== */
.suggest{ flex: 1; min-height: 0; background: #fff; }
.mp-page[data-route="pages/location/location"] .sg-item{
  display: flex; align-items: center;
  padding: calc(24 * var(--rpx)) calc(32 * var(--rpx)); border-bottom: calc(1 * var(--rpx)) solid #f0f1f3;
}
.mp-page[data-route="pages/location/location"] .sg-ico{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); margin-right: calc(20 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .sg-main{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/location/location"] .sg-name{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #222; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mp-page[data-route="pages/location/location"] .sg-sub{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/location/location"] .sg-arrow{ color: #ccc; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); }

/* ===== pages/login/login.wxss ===== */
.mp-page[data-route="pages/login/login"] /* pages/login/login.wxss */
/* pages/login/login.wxss —— 携程风浅色授权登录页 */
.mp-page{ background: #f5f8ff; }
.mp-page[data-route="pages/login/login"] .page{
  position: relative; min-height: 100dvh;
  background: linear-gradient(180deg, #e8f1ff 0%, #f5f9ff 34%, #ffffff 78%);
}
.mp-page[data-route="pages/login/login"] /* 返回按钮：top 由 utils/navbar.js 按**胶囊按钮**算出（安卓上 env(safe-area-inset-top) 恒为 0，
   原写法会让按钮落进系统状态栏，触摸被系统吃掉 → 点不动）。兜底 calc(88 * var(--rpx)) 不会再压状态栏。 */
.nav-back{
  position: fixed; top: var(--nav-top, calc(env(safe-area-inset-top) + calc(88 * var(--rpx)))); left: calc(30 * var(--rpx)); z-index: 3;
  width: calc(60 * var(--rpx)); height: calc(60 * var(--rpx)); line-height: calc(56 * var(--rpx)); text-align: center;
  color: #333; font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
}
.mp-page[data-route="pages/login/login"] /* 触摸热区：向下/左右扩到 ≈44px，不向状态栏扩 */
.nav-back::after{
  content: '';
  position: absolute;
  left: calc(-12 * var(--rpx)); right: calc(-12 * var(--rpx)); top: 0; bottom: calc(-12 * var(--rpx));
  border-radius: 50%;
}
.mp-page[data-route="pages/login/login"] .center{ position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; padding-top: calc(180 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] /* 顶部提示条（微信登录被拒等场景的说明）
   ⚠️ margin-top 必须用 --nav-safe-top（真实状态栏 px）：用 env() 时安卓恒为 0，
      提示条会顶到状态栏下面、与返回按钮重叠。 */
.notice{
  position: relative; z-index: 3;
  margin: calc(var(--nav-safe-top, env(safe-area-inset-top)) + calc(96 * var(--rpx))) calc(40 * var(--rpx)) 0;
  padding: calc(20 * var(--rpx)) calc(24 * var(--rpx)); border-radius: calc(12 * var(--rpx));
  background: #fff7e0; color: #8a6d3b; border: calc(1 * var(--rpx)) solid #ffe1a8;
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); line-height: calc(36 * var(--rpx));
}
.mp-page[data-route="pages/login/login"] /* 头像按钮：只做透明点击外壳（flex 居中），圆形/白边/阴影全部放在内层包裹视图上。
   直接在 mp-image 上加 border-radius + 在 mp-button 上定位角标，真机受 mp-button 默认样式与
   iOS 圆角渲染影响会出现椭圆/错位（2026-10-06 用户实测），故全部收敛到内层盒子。 */
.avatar-btn{
  display: flex; align-items: center; justify-content: center;
  width: calc(200 * var(--rpx)); height: calc(200 * var(--rpx)); min-height: 0;
  margin: 0 auto; padding: 0; background: transparent;
  border: none; line-height: 1; border-radius: 50%;
}
.mp-page[data-route="pages/login/login"] .avatar-btn::after{ border: none; }
.mp-page[data-route="pages/login/login"] .avatar-box{ position: relative; width: calc(180 * var(--rpx)); height: calc(180 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .avatar-ring{
  width: calc(180 * var(--rpx)); height: calc(180 * var(--rpx)); border-radius: 50%; overflow: hidden;
  border: calc(6 * var(--rpx)) solid #fff; box-sizing: border-box;
  box-shadow: 0 calc(8 * var(--rpx)) calc(30 * var(--rpx)) rgba(46, 108, 230, 0.16);
}
.mp-page[data-route="pages/login/login"] .avatar{ width: 100%; height: 100%; display: block; }
.mp-page[data-route="pages/login/login"] .avatar-badge{
  position: absolute; right: 0; bottom: 0; width: calc(52 * var(--rpx)); height: calc(52 * var(--rpx));
  line-height: calc(50 * var(--rpx)); text-align: center; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
  background: #3670f0; color: #fff; border-radius: 50%; border: calc(4 * var(--rpx)) solid #fff;
  box-sizing: border-box; z-index: 2;
}
.mp-page[data-route="pages/login/login"] /* 居中"资料卡"：头像 + 昵称 + 说明，统一对齐 */
.profile-card{
  width: 100%; display: flex; flex-direction: column; align-items: center;
  margin: calc(8 * var(--rpx)) 0 calc(4 * var(--rpx));
}
.mp-page[data-route="pages/login/login"] .pick-hint{ color: #8a94a6; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); margin-top: calc(18 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .pick-tip{ color: #aab3c2; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .nick-input{
  margin-top: calc(20 * var(--rpx)); width: calc(440 * var(--rpx)); height: calc(72 * var(--rpx)); line-height: calc(72 * var(--rpx));
  background: #ffffff; border: calc(1 * var(--rpx)) solid #e3eaf5; border-radius: calc(36 * var(--rpx));
  color: #222; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); text-align: center;
}
.mp-page[data-route="pages/login/login"] .nick-input::placeholder{ color: #b6c0cf; }
.mp-page[data-route="pages/login/login"] .nick-ph{ color: #b6c0cf; }
.mp-page[data-route="pages/login/login"] .safe{ color: #333; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; margin-top: calc(32 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .tip{ color: #8a94a6; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] /* 按钮：携程蓝 */
.btn{
  width: calc(620 * var(--rpx)); height: calc(96 * var(--rpx)); line-height: calc(96 * var(--rpx));
  border-radius: calc(16 * var(--rpx)); padding: 0; margin: 0; text-align: center;
  font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
}
.mp-page[data-route="pages/login/login"] .btn::after{ border: none; }
.mp-page[data-route="pages/login/login"] .btn.primary{
  margin-top: calc(72 * var(--rpx));
  background: #3670f0; color: #fff;
  box-shadow: 0 calc(10 * var(--rpx)) calc(24 * var(--rpx)) rgba(54, 112, 240, 0.28);
}
.mp-page[data-route="pages/login/login"] .btn.primary[disabled]{ background: #a9c3f5; color: #fff; }
.mp-page[data-route="pages/login/login"] .btn.outline{
  margin-top: calc(28 * var(--rpx));
  background: #fff; color: #3670f0;
  border: calc(2 * var(--rpx)) solid #3670f0; box-sizing: border-box;
}
.mp-page[data-route="pages/login/login"] .link-login{ color: #3670f0; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); margin-top: calc(44 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .link-login.sub{ margin-top: calc(24 * var(--rpx)); font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #8a94a6; }
.mp-page[data-route="pages/login/login"] .bind-phone{ padding-top: calc(220 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .bind-phone .btn.primary{ margin-top: calc(60 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] /* 其他手机号登录面板 */
.manual{
  margin-top: calc(44 * var(--rpx)); width: calc(620 * var(--rpx));
  background: #ffffff; border: calc(1 * var(--rpx)) solid #e3eaf5; border-radius: calc(20 * var(--rpx)); padding: calc(30 * var(--rpx)) calc(28 * var(--rpx));
  box-sizing: border-box; box-shadow: 0 calc(8 * var(--rpx)) calc(26 * var(--rpx)) rgba(46, 108, 230, 0.08);
}
.mp-page[data-route="pages/login/login"] .m-input{
  height: calc(84 * var(--rpx)); background: #f4f7fd; border-radius: calc(12 * var(--rpx));
  padding: 0 calc(24 * var(--rpx)); font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); box-sizing: border-box;
}
.mp-page[data-route="pages/login/login"] /* 锁定态输入框（2026-10-15：微信授权号预填锁定，用户只输验证码） */
.m-input.locked{ color: #6b7688; background: #e9eef8; }
.mp-page[data-route="pages/login/login"] .m-row{ display: flex; gap: calc(20 * var(--rpx)); margin-top: calc(22 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .m-input.code{ flex: 1; }
.mp-page[data-route="pages/login/login"] .m-send{
  width: calc(200 * var(--rpx)); height: calc(84 * var(--rpx)); line-height: calc(80 * var(--rpx)); text-align: center;
  background: #fff; border: calc(2 * var(--rpx)) solid #3670f0; color: #3670f0;
  border-radius: calc(12 * var(--rpx)); font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); box-sizing: border-box; flex-shrink: 0;
}
.mp-page[data-route="pages/login/login"] .m-login{
  margin-top: calc(26 * var(--rpx)); height: calc(88 * var(--rpx)); line-height: calc(88 * var(--rpx)); text-align: center;
  background: #3670f0; color: #fff; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; border-radius: calc(16 * var(--rpx));
}
.mp-page[data-route="pages/login/login"] /* 底部：协议 */
.bottom{ position: fixed; left: 0; right: 0; bottom: calc(env(safe-area-inset-bottom) + calc(40 * var(--rpx))); z-index: 2; }
.mp-page[data-route="pages/login/login"] .agree{ display: flex; align-items: center; justify-content: center; }
.mp-page[data-route="pages/login/login"] .checkbox{
  width: calc(32 * var(--rpx)); height: calc(32 * var(--rpx)); border-radius: 50%; border: calc(2 * var(--rpx)) solid #c3ccdb;
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #fff; text-align: center; line-height: calc(30 * var(--rpx)); flex-shrink: 0; box-sizing: border-box;
}
.mp-page[data-route="pages/login/login"] .checkbox.on{ background: #3670f0; border-color: #3670f0; color: #fff; }
.mp-page[data-route="pages/login/login"] .agree-txt{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #6b7688; margin-left: calc(12 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .link{ color: #3670f0; }
.mp-page[data-route="pages/login/login"] /* ===== 登录页简化改版（2026-10-07）=====
   首屏从「头像+昵称+登录」三段式改为「logo + 手机号 + 一键登录」，
   头像昵称挪到登录后到「我的」页补填，登录从 5 步降到 1-2 步。 */
/* 品牌 logo */
.brand-logo{
  width: calc(120 * var(--rpx));
  height: calc(120 * var(--rpx));
  border-radius: calc(26 * var(--rpx));
  margin: 0 auto calc(64 * var(--rpx));
  display: block;
}
.mp-page[data-route="pages/login/login"] /* ===== 首屏改版：验证码登录为主（2026-10-07）===== */
/* logo 下方品牌名（2026-10-17 随 logo 收敛同步精简化）*/
.brand-name{
  font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600;
  color: #111;
  letter-spacing: calc(6 * var(--rpx));
  margin-bottom: calc(8 * var(--rpx));
}
.mp-page[data-route="pages/login/login"] /* 主按钮下方的说明文案 */
.login-note{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  color: #9a9a9a;
  margin-top: calc(28 * var(--rpx));
}
.mp-page[data-route="pages/login/login"] /* ===== 2026-10-15 下午：首屏布局对齐参考设计稿 =====
   结构：上 1/4 处 logo + 账号标识（老用户=脱敏手机号）→ 弹性间隔 →
   协议行（紧贴按钮上方）→ 主按钮（授权手机登陆）→ 描边按钮（短信验证码登录）→
   灰色说明。左右留白与参考稿一致（按钮 calc(620 * var(--rpx)) = 两侧各 ≈32px）。 */
/* ===== 2026-10-17：logo 收敛（用户定案「不要太大显得不高级」）=====
   calc(180 * var(--rpx)) → calc(108 * var(--rpx))，圆角同步收敛；品牌名字号/字距走精致路线；
   logo 变小结余的纵向空间转给弹性间隔，按钮位置不飘。 */
.login-v2{ padding-top: calc(200 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .brand-logo.lg{
  width: calc(108 * var(--rpx));
  height: calc(108 * var(--rpx));
  border-radius: calc(24 * var(--rpx));
  margin-bottom: calc(28 * var(--rpx));
}
.mp-page[data-route="pages/login/login"] .v2-gap{ height: calc(170 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] /* 协议行从「页面底部固定」上移为按钮上方的普通行，左对齐、与按钮同宽 */
.agree-inline{
  width: calc(620 * var(--rpx));
  margin: 0 auto;
  justify-content: flex-start;
}
.mp-page[data-route="pages/login/login"] .agree-inline .agree-txt{ margin-left: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .login-v2 .btn.primary{ margin-top: calc(24 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .login-v2 .btn.outline{ margin-top: calc(30 * var(--rpx)); }
.mp-page[data-route="pages/login/login"] .login-v2 .login-note{ margin-top: calc(36 * var(--rpx)); }

/* ===== pages/service/service.wxss ===== */
.mp-page[data-route="pages/service/service"] /* pages/service/service.wxss */
.page{ min-height: 100dvh; background: #f5f6f7; padding: calc(40 * var(--rpx)) calc(32 * var(--rpx)) calc(calc(60 * var(--rpx)) + env(safe-area-inset-bottom)); box-sizing: border-box; }
.mp-page[data-route="pages/service/service"] .hero{ display: flex; flex-direction: column; align-items: center; padding: calc(50 * var(--rpx)) 0 calc(40 * var(--rpx)); }
.mp-page[data-route="pages/service/service"] .hero-ico{
  width: calc(120 * var(--rpx)); height: calc(120 * var(--rpx)); border-radius: 50%;
  background: #eaf6ee; color: #21a45d; font-size: calc(calc(60 * var(--rpx)) * var(--gf-fs, 1));
  display: flex; align-items: center; justify-content: center; margin-bottom: calc(22 * var(--rpx));
}
.mp-page[data-route="pages/service/service"] .hero-t{ font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #222; }
.mp-page[data-route="pages/service/service"] .hero-s{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/service/service"] /* 主通道：微信客服按钮（去掉默认 mp-button 样式） */
.cs-btn{
  width: 100%; margin: calc(10 * var(--rpx)) 0 0; padding: calc(40 * var(--rpx)) 0;
  background: linear-gradient(135deg, #25b865, #1c9a52);
  border-radius: calc(24 * var(--rpx)); color: #fff;
  display: flex; flex-direction: column; align-items: center; gap: calc(6 * var(--rpx));
  box-shadow: 0 calc(10 * var(--rpx)) calc(30 * var(--rpx)) rgba(33,164,93,.28);
  line-height: 1.3;
}
.mp-page[data-route="pages/service/service"] .cs-btn::after{ border: none; }
.mp-page[data-route="pages/service/service"] .cs-ico{ font-size: calc(calc(52 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1; }
.mp-page[data-route="pages/service/service"] .cs-t{ font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pages/service/service"] .cs-sub{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); opacity: .9; }
.mp-page[data-route="pages/service/service"] .tips{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #b0b6bd; text-align: center; margin: calc(22 * var(--rpx)) calc(10 * var(--rpx)) 0; line-height: 1.5; }
.mp-page[data-route="pages/service/service"] .card{
  background: #fff; border-radius: calc(20 * var(--rpx)); margin-top: calc(36 * var(--rpx)); padding: calc(12 * var(--rpx)) calc(32 * var(--rpx));
  box-shadow: 0 calc(6 * var(--rpx)) calc(20 * var(--rpx)) rgba(0,0,0,.04);
}
.mp-page[data-route="pages/service/service"] .row{ display: flex; align-items: center; justify-content: space-between; padding: calc(26 * var(--rpx)) 0; border-bottom: calc(1 * var(--rpx)) solid #f2f3f2; }
.mp-page[data-route="pages/service/service"] .row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/service/service"] .k{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #666; }
.mp-page[data-route="pages/service/service"] .v{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #222; font-weight: 600; }
.mp-page[data-route="pages/service/service"] .acts{ display: flex; gap: calc(24 * var(--rpx)); margin-top: calc(36 * var(--rpx)); }
.mp-page[data-route="pages/service/service"] .act{
  flex: 1; height: calc(96 * var(--rpx)); line-height: calc(96 * var(--rpx)); text-align: center;
  background: #21a45d; color: #fff; border-radius: calc(48 * var(--rpx)); font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
}
.mp-page[data-route="pages/service/service"] .act.ghost{ background: #fff; color: #21a45d; border: calc(1 * var(--rpx)) solid #21a45d; }
.mp-page[data-route="pages/service/service"] /* ===== 兜底通道：留言（云端落库 → 后台「客服消息」页，一定收得到）===== */
.msg-card{ padding: calc(30 * var(--rpx)) calc(32 * var(--rpx)) calc(34 * var(--rpx)); }
.mp-page[data-route="pages/service/service"] .mc-head{ margin-bottom: calc(22 * var(--rpx)); }
.mp-page[data-route="pages/service/service"] .mc-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 800; color: #222; }
.mp-page[data-route="pages/service/service"] .mc-s{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #9aa0a6; margin-top: calc(8 * var(--rpx)); line-height: 1.5; }
.mp-page[data-route="pages/service/service"] .mc-order{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; background: #eaf6ee;
  border-radius: calc(8 * var(--rpx)); padding: calc(10 * var(--rpx)) calc(16 * var(--rpx)); margin-bottom: calc(18 * var(--rpx));
}
.mp-page[data-route="pages/service/service"] .mc-ta{
  width: 100%; box-sizing: border-box; min-height: calc(170 * var(--rpx));
  background: #f7f8f8; border-radius: calc(14 * var(--rpx)); padding: calc(22 * var(--rpx)) calc(24 * var(--rpx));
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #222; line-height: 1.6;
}
.mp-page[data-route="pages/service/service"] .mc-ph{ color: #b7bcc2; }
.mp-page[data-route="pages/service/service"] .mc-count{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #c2c7cc; text-align: right; margin: calc(8 * var(--rpx)) calc(4 * var(--rpx)) calc(18 * var(--rpx)); }
.mp-page[data-route="pages/service/service"] .mc-in{
  width: 100%; box-sizing: border-box; height: calc(88 * var(--rpx));
  background: #f7f8f8; border-radius: calc(14 * var(--rpx)); padding: 0 calc(24 * var(--rpx));
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #222;
}
.mp-page[data-route="pages/service/service"] .mc-btn{
  margin-top: calc(26 * var(--rpx)); height: calc(92 * var(--rpx)); line-height: calc(92 * var(--rpx)); text-align: center;
  background: #21a45d; color: #fff; border-radius: calc(46 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700;
}
.mp-page[data-route="pages/service/service"] .mc-btn.off{ opacity: .55; }
.mp-page[data-route="pages/service/service"] /* 我的留言（含客服回复） */
.mine-card{ padding: calc(30 * var(--rpx)) calc(32 * var(--rpx)) calc(32 * var(--rpx)); }
.mp-page[data-route="pages/service/service"] .mine-item{ background: #f7f8f8; border-radius: calc(14 * var(--rpx)); padding: calc(20 * var(--rpx)) calc(22 * var(--rpx)); margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pages/service/service"] .mi-top{ display: flex; align-items: center; justify-content: space-between; }
.mp-page[data-route="pages/service/service"] .mi-time{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #9aa0a6; }
.mp-page[data-route="pages/service/service"] .mi-state{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); border-radius: calc(6 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(12 * var(--rpx)); }
.mp-page[data-route="pages/service/service"] .mi-state.wait{ color: #b8860b; background: #fdf6e3; }
.mp-page[data-route="pages/service/service"] .mi-state.ok{ color: #21a45d; background: #eaf6ee; }
.mp-page[data-route="pages/service/service"] .mi-content{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; margin-top: calc(12 * var(--rpx)); line-height: 1.6; word-break: break-all; }
.mp-page[data-route="pages/service/service"] .mi-reply{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #21a45d; background: #f0faf4;
  border-radius: calc(10 * var(--rpx)); padding: calc(14 * var(--rpx)) calc(18 * var(--rpx)); margin-top: calc(12 * var(--rpx)); line-height: 1.6; word-break: break-all;
}

/* ===== pages/manager/manager.wxss ===== */
.mp-page[data-route="pages/manager/manager"] /* pages/manager/manager.wxss */
/* pages/manager/manager.wxss —— 客户经理面板
   视觉参考：用户截图（底部上滑的白色圆角面板 / 左上 ✕ / 居中标题 / 两张卡片）。
   🔴 字号铁律：所有 font-size 必须走 calc(Nrpx * var(--gf-fs,.mp-page[data-route="pages/manager/manager"] 1))，禁写死 rpx。
   🔴 顶部定位用 --mgr-safe-top（真实状态栏 px，由 wxml 注入 navx.statusBarHeight），
      禁用 env(safe-area-inset-top) —— 安卓恒 0，会把内容顶进状态栏（见 utils/navbar.js）。 */

/* 页面本身透明：露出的部分就是遮罩色，营造「面板盖在上一页之上」的观感 */
/* 🔴 隐藏态（show=false）：关掉 pointer-events + visibility:hidden，
   否则这个 fixed 全屏根元素会盖在宿主页之上、吞掉所有触摸，导致首页划不动/点不动。
   .in（show=true）才恢复可见与交互；独立页 manager 始终 show=true，无副作用。 */
.page{ position: fixed; left: 0; right: 0; top: 0; bottom: 0; visibility: hidden; pointer-events: none; }
.mp-page[data-route="pages/manager/manager"] .page.in{ visibility: visible; pointer-events: auto; }
.mp-page[data-route="pages/manager/manager"] /* ===== 遮罩：点击面板以外的区域收起 ===== */
.mgr-mask{
  position: fixed; left: 0; right: 0; top: 0; bottom: 0;
  background: rgba(0, 0, 0, .45);
  opacity: 0;
  /* 🔴 与 components/manager-sheet 对齐：必须盖住 custom-tab-bar(1000)，
     否则第二条电话线路整行被 tab bar 压住、点不到（2026-10-12 用户反馈）。 */
  z-index: 1100;
}
.mp-page[data-route="pages/manager/manager"] .mgr-mask.in{ animation: mgrMaskIn .28s ease forwards; }
.mp-page[data-route="pages/manager/manager"] /* ===== 面板本体 ===== */
.mgr-sheet{
  position: fixed; left: 0; right: 0; bottom: 0;
  z-index: 1101;
  /* 🔴 不设 top：高度随内容自适应（头部 + 两张卡片），下方露出遮罩 ——
     曾因撑满整屏在卡片下留出一大块空白（2026-10-11 用户反馈砍掉） */
  background: #fff;
  border-radius: calc(28 * var(--rpx)) calc(28 * var(--rpx)) 0 0;
  overflow: hidden;
  display: flex; flex-direction: column;
  /* 🔴 与组件版 components/manager-sheet 保持一致：底部留白含安全区，
     否则 custom-tab-bar(1000) 会盖住第二条电话线路（2026-10-12 用户反馈） */
  padding-bottom: calc(calc(88 * var(--rpx)) + env(safe-area-inset-bottom));
  box-sizing: border-box;
  transform: translateY(100%);                     /* 初始在屏幕外 */
}
.mp-page[data-route="pages/manager/manager"] .mgr-sheet.in{ animation: mgrSheetUp .34s cubic-bezier(.22, .8, .3, 1) forwards; }


@keyframes mgrSheetUp { from { transform: translateY(100%); } to { transform: translateY(0); } }

@keyframes mgrMaskIn  { from { opacity: 0; } to { opacity: 1; } }
.mp-page[data-route="pages/manager/manager"] /* ===== 头部：左 ✕ + 居中标题（与截图一致） ===== */
.mgr-head{
  position: relative; flex: 0 0 auto;
  height: calc(104 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
}
.mp-page[data-route="pages/manager/manager"] .mgr-title{ font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #1a1a1a; }
.mp-page[data-route="pages/manager/manager"] /* ✕ 用两条线画（字符 ✕ 在不同机型字体/粗细不一致）；热区 calc(88 * var(--rpx)) ≈ 44px */
.mgr-close{ position: absolute; left: calc(12 * var(--rpx)); top: 50%; width: calc(88 * var(--rpx)); height: calc(88 * var(--rpx)); margin-top: calc(-44 * var(--rpx)); }
.mp-page[data-route="pages/manager/manager"] .mgr-close::before,.mp-page[data-route="pages/manager/manager"] .mgr-close::after{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(34 * var(--rpx)); height: calc(3 * var(--rpx)); margin: calc(-1.5 * var(--rpx)) 0 0 calc(-17 * var(--rpx));
  background: #3a3f45; border-radius: calc(2 * var(--rpx));
}
.mp-page[data-route="pages/manager/manager"] .mgr-close::before{ transform: rotate(45deg); }
.mp-page[data-route="pages/manager/manager"] .mgr-close::after{ transform: rotate(-45deg); }
.mp-page[data-route="pages/manager/manager"] /* ===== 卡片之间的浅灰分隔（截图里卡片之间是灰缝，不是描边） ===== */
.mgr-gap{ flex: 0 0 auto; height: calc(18 * var(--rpx)); background: #f2f3f5; }
.mp-page[data-route="pages/manager/manager"] /* ===== 卡片 ===== */
.mgr-card{
  flex: 0 0 auto;
  display: flex; align-items: center;
  padding: calc(40 * var(--rpx)) calc(32 * var(--rpx));
  background: #fff;
}
.mp-page[data-route="pages/manager/manager"] .mgr-card-col{ flex-direction: column; align-items: stretch; }
.mp-page[data-route="pages/manager/manager"] .mgr-card-row{ display: flex; align-items: center; }
.mp-page[data-route="pages/manager/manager"] /* 🔴 flex 子项默认 min-width:auto → 文字长了会把图标挤出去，必须显式 min-width:0 */
.mgr-card-body{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/manager/manager"] .mgr-card-t{ font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #1a1a1a; }
.mp-page[data-route="pages/manager/manager"] .mgr-card-s{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #9aa0a6; margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/manager/manager"] .mgr-card-s2{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #3a3f45; margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pages/manager/manager"] /* ===== 图标：品牌绿圆底 + 白色图形（纯 CSS，零新增图片资源） ===== */
.mgr-ico{
  position: relative; flex: 0 0 calc(64 * var(--rpx));
  width: calc(64 * var(--rpx)); height: calc(64 * var(--rpx)); margin-left: calc(20 * var(--rpx));
  background: #21a45d; border-radius: 50%;
}
.mp-page[data-route="pages/manager/manager"] /* 卡片 1：对话气泡（圆角方块 + 左下小尾巴） */
.mgr-ico-chat::before{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(32 * var(--rpx)); height: calc(26 * var(--rpx)); margin: calc(-16 * var(--rpx)) 0 0 calc(-16 * var(--rpx));
  background: #fff; border-radius: calc(9 * var(--rpx));
}
.mp-page[data-route="pages/manager/manager"] .mgr-ico-chat::after{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: 0; height: 0; margin: calc(8 * var(--rpx)) 0 0 calc(-14 * var(--rpx));
  border: calc(6 * var(--rpx)) solid transparent; border-top-color: #fff; border-left-width: 0;
}
.mp-page[data-route="pages/manager/manager"] /* 卡片 2：听筒（斜杆 + 两端圆点 = 哑铃状，即听筒的抽象形） */
.mgr-ico-phone::before{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(30 * var(--rpx)); height: calc(10 * var(--rpx)); margin: calc(-5 * var(--rpx)) 0 0 calc(-15 * var(--rpx));
  background: #fff; border-radius: calc(5 * var(--rpx));
  transform: rotate(-45deg);
}
.mp-page[data-route="pages/manager/manager"] .mgr-ico-phone::after{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(17 * var(--rpx)); height: calc(17 * var(--rpx)); margin: calc(-19 * var(--rpx)) 0 0 calc(-19 * var(--rpx));
  background: #fff; border-radius: 50%;
  box-shadow: calc(21 * var(--rpx)) calc(21 * var(--rpx)) 0 0 #fff;
}
.mp-page[data-route="pages/manager/manager"] /* ===== 号码行（两行各自可点拨号） ===== */
.mgr-phones{ margin-top: calc(26 * var(--rpx)); }
.mp-page[data-route="pages/manager/manager"] /* 分隔线用独立节点：WXSS 对 :last-child 不可靠，靠行自身 border 会多一条 */
.mgr-phone-line{ height: calc(1 * var(--rpx)); background: #f0f1f3; }
.mp-page[data-route="pages/manager/manager"] .mgr-phone{ display: flex; align-items: center; padding: calc(24 * var(--rpx)) 0; }
.mp-page[data-route="pages/manager/manager"] .mgr-phone-ico{
  position: relative; flex: 0 0 calc(44 * var(--rpx));
  width: calc(44 * var(--rpx)); height: calc(44 * var(--rpx)); margin-right: calc(20 * var(--rpx));
  background: #21a45d; border-radius: 50%;
}
.mp-page[data-route="pages/manager/manager"] .mgr-phone-ico::before{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(20 * var(--rpx)); height: calc(7 * var(--rpx)); margin: calc(-3.5 * var(--rpx)) 0 0 calc(-10 * var(--rpx));
  background: #fff; border-radius: calc(4 * var(--rpx));
  transform: rotate(-45deg);
}
.mp-page[data-route="pages/manager/manager"] .mgr-phone-ico::after{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(12 * var(--rpx)); height: calc(12 * var(--rpx)); margin: calc(-13 * var(--rpx)) 0 0 calc(-13 * var(--rpx));
  background: #fff; border-radius: 50%;
  box-shadow: calc(14 * var(--rpx)) calc(14 * var(--rpx)) 0 0 #fff;
}
.mp-page[data-route="pages/manager/manager"] .mgr-phone-num{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); color: #5a6068; }

/* ===== pages/me/home-course.wxss ===== */
.mp-page[data-route="pages/me/home-course"] /* pages/me/home-course.wxss */
/* pages/me/home-course.wxss —— 选择会员场 */
.page{ background: #f2f3f5; min-height: 100dvh; padding-bottom: calc(160 * var(--rpx)); }
.mp-page[data-route="pages/me/home-course"] /* ---------- 搜索栏 ---------- */
.bar{
  display: flex; align-items: center; gap: calc(16 * var(--rpx));
  padding: calc(20 * var(--rpx)) calc(24 * var(--rpx));
  background: #fff;
  position: sticky; top: 0; z-index: 10;
}
.mp-page[data-route="pages/me/home-course"] .kw{
  flex: 1; height: calc(72 * var(--rpx));
  background: #f2f3f5; border-radius: calc(36 * var(--rpx));
  padding: 0 calc(28 * var(--rpx));
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333;
}
.mp-page[data-route="pages/me/home-course"] .kw-ph{ color: #b4b4b4; }
.mp-page[data-route="pages/me/home-course"] .kw-btn{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a; flex-shrink: 0;
  padding: 0 calc(8 * var(--rpx));
}
.mp-page[data-route="pages/me/home-course"] .kw-btn.clr{ color: #999; }
.mp-page[data-route="pages/me/home-course"] /* ---------- 当前会员场 ---------- */
.cur{
  display: flex; align-items: center; gap: calc(14 * var(--rpx));
  margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0; padding: calc(22 * var(--rpx)) calc(26 * var(--rpx));
  background: #fff8e8; border-radius: calc(14 * var(--rpx));
}
.mp-page[data-route="pages/me/home-course"] .cur-l{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #a08a5c; flex-shrink: 0; }
.mp-page[data-route="pages/me/home-course"] .cur-n{
  flex: 1; min-width: 0;
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #7a6335; font-weight: 600;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.mp-page[data-route="pages/me/home-course"] .cur-x{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a;
  border: calc(2 * var(--rpx)) solid #e0c894; border-radius: calc(22 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(18 * var(--rpx));
  flex-shrink: 0;
}
.mp-page[data-route="pages/me/home-course"] /* ---------- 列表 ---------- */
.list{
  background: #fff; margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0;
  border-radius: calc(16 * var(--rpx)); overflow: hidden;
}
.mp-page[data-route="pages/me/home-course"] .it{
  display: flex; align-items: center; gap: calc(20 * var(--rpx));
  padding: calc(22 * var(--rpx)) calc(26 * var(--rpx));
  border-bottom: calc(2 * var(--rpx)) solid #f2f3f5;
}
.mp-page[data-route="pages/me/home-course"] .it:last-child{ border-bottom: none; }
.mp-page[data-route="pages/me/home-course"] .it.cur{ background: #fffaf0; }
.mp-page[data-route="pages/me/home-course"] .it-img{
  width: calc(110 * var(--rpx)); height: calc(82 * var(--rpx)); border-radius: calc(10 * var(--rpx));
  background: #eee; flex-shrink: 0;
}
.mp-page[data-route="pages/me/home-course"] .it-body{ flex: 1; min-width: 0; }
.mp-page[data-route="pages/me/home-course"] .it-n{ display: flex; align-items: center; gap: calc(10 * var(--rpx)); }
.mp-page[data-route="pages/me/home-course"] .it-name{
  flex: 1; min-width: 0;
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.mp-page[data-route="pages/me/home-course"] .it-tag{
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #b8944a;
  border: calc(2 * var(--rpx)) solid #e0c894; border-radius: calc(6 * var(--rpx)); padding: calc(2 * var(--rpx)) calc(8 * var(--rpx));
  flex-shrink: 0;
}
.mp-page[data-route="pages/me/home-course"] .it-c{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #9a9a9a; margin-top: calc(6 * var(--rpx));
}
.mp-page[data-route="pages/me/home-course"] .it-chk{ color: #b8944a; font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); flex-shrink: 0; }
.mp-page[data-route="pages/me/home-course"] .it-arr{ color: #c8c8c8; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); flex-shrink: 0; }
.mp-page[data-route="pages/me/home-course"] /* ---------- 空态 ---------- */
.empty{ padding: calc(120 * var(--rpx)) 0; text-align: center; }
.mp-page[data-route="pages/me/home-course"] .empty-t{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #b4b4b4; }
.mp-page[data-route="pages/me/home-course"] /* ---------- 底部确认栏（多选） ---------- */
.foot{
  position: fixed; left: 0; right: 0; bottom: 0;
  padding: calc(16 * var(--rpx)) calc(24 * var(--rpx)) calc(calc(16 * var(--rpx)) + env(safe-area-inset-bottom));
  background: #fff; box-shadow: 0 calc(-2 * var(--rpx)) calc(12 * var(--rpx)) rgba(0,0,0,.06);
}
.mp-page[data-route="pages/me/home-course"] .foot-btn{
  height: calc(88 * var(--rpx)); display: flex; align-items: center; justify-content: center;
  background: #b8944a; color: #fff; border-radius: calc(44 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
}
.mp-page[data-route="pages/me/home-course"] .foot-btn:active{ opacity: .85; }

/* ===== pages/me/address.wxss ===== */
.mp-page[data-route="pages/me/address"] /* pages/me/address.wxss */
/* pages/me/address.wxss —— 收货地址 */
.page{ background: #f2f3f5; min-height: 100dvh; padding: calc(24 * var(--rpx)) 0 calc(60 * var(--rpx)); }
.mp-page[data-route="pages/me/address"] .card{ background: #fff; margin: 0 calc(24 * var(--rpx)); border-radius: calc(16 * var(--rpx)); padding: 0 calc(28 * var(--rpx)); }
.mp-page[data-route="pages/me/address"] .row{
  display: flex; align-items: center; justify-content: space-between; gap: calc(20 * var(--rpx));
  min-height: calc(100 * var(--rpx)); padding: calc(22 * var(--rpx)) 0;
  border-bottom: calc(2 * var(--rpx)) solid #f2f3f5;
}
.mp-page[data-route="pages/me/address"] .row:last-child{ border-bottom: none; }
.mp-page[data-route="pages/me/address"] /* 多行字段（详细地址）：标签在上、输入在下，避免一行挤不下 */
.row.col{ display: block; padding: calc(26 * var(--rpx)) 0 calc(22 * var(--rpx)); }
.mp-page[data-route="pages/me/address"] .k{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; flex-shrink: 0;
}
.mp-page[data-route="pages/me/address"] .req{ color: #ff5a5a; margin-left: calc(4 * var(--rpx)); }
.mp-page[data-route="pages/me/address"] .in{
  flex: 1; min-width: 0; text-align: right;
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #555;
}
.mp-page[data-route="pages/me/address"] .ph{ color: #b4b4b4; }
.mp-page[data-route="pages/me/address"] .r{ display: flex; align-items: center; gap: calc(10 * var(--rpx)); min-width: 0; }
.mp-page[data-route="pages/me/address"] .v{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #555;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.mp-page[data-route="pages/me/address"] .arr{ color: #c8c8c8; font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); flex-shrink: 0; }
.mp-page[data-route="pages/me/address"] .ta{
  width: 100%; box-sizing: border-box;
  margin-top: calc(18 * var(--rpx)); min-height: calc(90 * var(--rpx));
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; line-height: 1.6;
}
.mp-page[data-route="pages/me/address"] .cnt{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #b4b4b4;
  text-align: right; margin-top: calc(8 * var(--rpx));
}
.mp-page[data-route="pages/me/address"] .tip{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #a0a0a0;
  margin: calc(24 * var(--rpx)) calc(40 * var(--rpx)) 0; line-height: 1.7;
}
.mp-page[data-route="pages/me/address"] .btn{
  margin: calc(48 * var(--rpx)) calc(48 * var(--rpx)) 0; height: calc(92 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
  background: #b8944a; color: #fff; border-radius: calc(46 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pages/me/address"] .btn.dis{ opacity: .6; }
.mp-page[data-route="pages/me/address"] .btn:active{ opacity: .85; }

/* ===== pkgcourse/pages/course/detail.wxss ===== */
.mp-page[data-route="pkgcourse/pages/course/detail"] /* pkgcourse/pages/course/detail.wxss */
/* pages/course/detail.wxss —— 按设计稿 12 大板块 */
.page{ padding-bottom: calc(200 * var(--rpx)); background: #f5f6f7; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- ① 图集 ---------- */
.gallery-wrap{ position: relative; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .gallery{ width: 100%; height: calc(560 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 🔴 2026-08-08 顶部对齐裁切（保护图上「必打榜」圆形标识）
   ⚠️ 不要改回 aspectFill：带圆形榜单标识的图是 1:1 正方形，这里容器是 750×560（1.34 横向），
   aspectFill 居中裁切会把顶部裁掉约 95px，圆形标识被切一半（用户截图反馈）。 */
.gallery-imgwrap{ width: 100%; height: 100%; overflow: hidden; background: #eef1ef; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .gallery-img{ display: block; width: 100%; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .g-play{
  position: absolute; left: 50%; top: 50%;
  width: calc(96 * var(--rpx)); height: calc(96 * var(--rpx)); margin: calc(-48 * var(--rpx)) 0 0 calc(-48 * var(--rpx));
  border-radius: 50%; background: rgba(0,0,0,0.35);
  color: #fff; font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); text-align: center; line-height: calc(96 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .g-count{
  position: absolute; right: calc(24 * var(--rpx)); bottom: calc(120 * var(--rpx));
  background: rgba(0,0,0,0.45); color: #fff;
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); padding: calc(6 * var(--rpx)) calc(18 * var(--rpx)); border-radius: calc(24 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 返回按钮：位置由 utils/navbar.js 按**胶囊按钮**算出（px），经 --nav-* 注入。
   🔴 2026-10-10 修「点击无法返回」（红米 K80）：
      原来 `top: calc(env(safe-area-inset-top) + calc(16 * var(--rpx)))`，而 env(safe-area-inset-top)
      **在安卓恒为 0** → top 只剩 calc(16 * var(--rpx))(≈8px)，整个圆落进系统状态栏，触摸被系统吃掉。
      兜底值刻意写成 calc(88 * var(--rpx))：万一 navx 未就绪，也**不会**退回压在状态栏里的位置。 */
.nav-back{
  position: absolute;
  top: var(--nav-top, calc(env(safe-area-inset-top) + calc(88 * var(--rpx))));
  left: var(--nav-left, calc(24 * var(--rpx)));
  width: var(--nav-size, calc(64 * var(--rpx)));
  height: var(--nav-size, calc(64 * var(--rpx)));
  box-sizing: border-box;
  z-index: 20;
  border-radius: 50%;
  background: rgba(0,0,0,0.3); color: #fff;
  font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1));
  display: flex; align-items: center; justify-content: center;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 触摸热区：视觉圆只有 32px，向外扩到 ≈44px（**只向下/左右扩**，不向状态栏扩） */
.nav-back::after{
  content: '';
  position: absolute;
  left: calc(-12 * var(--rpx)); right: calc(-12 * var(--rpx)); top: 0; bottom: calc(-12 * var(--rpx));
  border-radius: 50%;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- 通用卡片 / 红色角标 ---------- */
.card{ background: #fff; border-radius: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .blk{ margin: 0 calc(24 * var(--rpx)) calc(24 * var(--rpx)); padding: calc(34 * var(--rpx)) calc(28 * var(--rpx)) calc(28 * var(--rpx)); position: relative; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .flag{
  position: absolute; left: 0; top: calc(20 * var(--rpx));
  background: #fa5151; color: #fff;
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  padding: calc(8 * var(--rpx)) calc(22 * var(--rpx)) calc(8 * var(--rpx)) calc(20 * var(--rpx));
  border-radius: 0 calc(24 * var(--rpx)) calc(24 * var(--rpx)) 0;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .blk-t{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .blk-more{ float: right; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9; font-weight: 400; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- ② 标题卡 ---------- */
.head{ margin: calc(-80 * var(--rpx)) calc(24 * var(--rpx)) calc(24 * var(--rpx)); padding: calc(30 * var(--rpx)) calc(28 * var(--rpx)) calc(28 * var(--rpx)); position: relative; z-index: 2; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 球名（左）独占剩余宽度，至少可容纳9个汉字；右侧收藏+分享并排贴右 */
.head-top{ display: flex; align-items: center; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .head-name{ flex: 1 1 0; min-width: calc(360 * var(--rpx)); font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; line-height: 1.3; margin-right: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .head-en{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .head-acts{ display: flex; gap: calc(24 * var(--rpx)); align-items: center; flex: none; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 线条图标：固定盒尺寸防挤压，与球名首行对齐 */
.act-ico{
  width: calc(48 * var(--rpx)); height: calc(48 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1; color: #333; font-weight: 400;
  flex: none;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .act-ico.on{ color: #fa5151; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 分享按钮锁进 calc(48 * var(--rpx)) 外壳，杜绝 mp-button 默认样式把宽度撑开 */
.share-shell{ width: calc(48 * var(--rpx)); height: calc(48 * var(--rpx)); flex: none; overflow: visible; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .act-ico.share{
  display: block; width: 100%; height: 100%;
  padding: 0; margin: 0;
  background: transparent; border: none; border-radius: 0;
  line-height: 1; font-size: 0; overflow: visible;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .act-ico.share::after{ display: none; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .share-ico{
  width: calc(40 * var(--rpx)); height: calc(40 * var(--rpx)); display: block;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iIzMzMzMzMyIgZD0iTTE0IDlWNWw3IDctNyA3di00LjFjLTUgMC04LjUgMS42LTExIDUuMSAxLTUgNC0xMCAxMS0xMXoiLz48L3N2Zz4=");
  background-size: 100% 100%;
  background-repeat: no-repeat;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .head-stars{ display: flex; align-items: center; gap: calc(10 * var(--rpx)); margin-top: calc(18 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .star{
  width: calc(34 * var(--rpx)); height: calc(34 * var(--rpx)); border-radius: 50%; position: relative;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .star.f{ background: #21a45d; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .star.h{ background: linear-gradient(90deg, #21a45d 50%, #e2e4e6 50%); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .star.e{ background: #e2e4e6; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .star.f::after,.mp-page[data-route="pkgcourse/pages/course/detail"] .star.h::after{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(6 * var(--rpx)); height: calc(6 * var(--rpx)); margin: calc(-3 * var(--rpx)) 0 0 calc(-3 * var(--rpx));
  border-radius: 50%; background: rgba(255,255,255,0.9);
  box-shadow: calc(7 * var(--rpx)) calc(-4 * var(--rpx)) 0 rgba(255,255,255,0.75), calc(-6 * var(--rpx)) calc(5 * var(--rpx)) 0 rgba(255,255,255,0.75);
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .star.sm{ width: calc(24 * var(--rpx)); height: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .star.sm.f::after,.mp-page[data-route="pkgcourse/pages/course/detail"] .star.sm.h::after{ width: calc(4 * var(--rpx)); height: calc(4 * var(--rpx)); margin: calc(-2 * var(--rpx)) 0 0 calc(-2 * var(--rpx)); box-shadow: calc(5 * var(--rpx)) calc(-3 * var(--rpx)) 0 rgba(255,255,255,0.75), calc(-4 * var(--rpx)) calc(4 * var(--rpx)) 0 rgba(255,255,255,0.75); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .head-rating{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; margin-left: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .head-info{ display: flex; align-items: center; flex-wrap: wrap; margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .hi-item{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-right: calc(22 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .hi-call{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .hi-more{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9; margin-left: auto; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .head-honors{ display: flex; flex-wrap: wrap; gap: calc(14 * var(--rpx)); margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 🔴 2026-10-21 P1 ④：球会勾选的球场类型/地形多标签（类型在前、地形在后） */
.head-tags{ display: flex; flex-wrap: wrap; gap: calc(12 * var(--rpx)); margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .htag{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #2e7d4f;
  border: calc(2 * var(--rpx)) solid #bfe3cd; border-radius: calc(8 * var(--rpx));
  padding: calc(6 * var(--rpx)) calc(16 * var(--rpx)); background: #f4fbf7;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .htag-tt{ color: #8a6d1d; border-color: #e8d9a8; background: #fdfaf1; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .honor{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9;
  border: calc(2 * var(--rpx)) solid #bcd6f2; border-radius: calc(8 * var(--rpx));
  padding: calc(6 * var(--rpx)) calc(16 * var(--rpx)); background: #f7fbff;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- 地址卡：只显示国家 + 城市，右侧为地图入口 ---------- */
.addr{
  display: flex; align-items: center;
  position: relative; overflow: hidden;
  margin-top: calc(22 * var(--rpx)); padding: calc(26 * var(--rpx)) calc(22 * var(--rpx));
  background: #f5f7f6; border-radius: calc(14 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 背景地图纹样（浅绿地块 + 斜切边界），呼应设计稿的底图 */
.addr::before{
  content: ''; position: absolute; left: 0; top: 0; right: 0; bottom: 0;
  background-image:
    linear-gradient(112deg, rgba(214, 233, 221, 0) 0%, rgba(214, 233, 221, 0) 46%,
      rgba(214, 233, 221, .85) 46%, rgba(214, 233, 221, .85) 64%, rgba(199, 224, 207, .9) 64%),
    linear-gradient(198deg, rgba(233, 240, 235, 0) 0%, rgba(233, 240, 235, 0) 58%,
      rgba(233, 240, 235, .85) 58%);
  pointer-events: none;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .addr-body{ flex: 1; min-width: 0; position: relative; z-index: 1; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .addr-text{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; line-height: 1.4;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .addr-dist{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .addr-hint{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #f08300; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .addr-divider{ width: calc(2 * var(--rpx)); height: calc(64 * var(--rpx)); background: #e2e6e3; margin: 0 calc(22 * var(--rpx)); position: relative; z-index: 1; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .addr-map{ text-align: center; min-width: calc(134 * var(--rpx)); position: relative; z-index: 1; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .addr-ico{
  width: calc(48 * var(--rpx)); height: calc(48 * var(--rpx)); margin: 0 auto;
  border-radius: 50%; background: #e7eef8;
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); line-height: calc(48 * var(--rpx)); text-align: center;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .addr-map-txt{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #6b7f99; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- ③ 预订区：横向日期卡 + 天气行（无左侧角标） ---------- */
/* 已选开球日：始终显示所选日期（无论远近），红色强调，弥补日期条固定不平移时远期不在条上的情况 */
.day-sel{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-bottom: calc(14 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .day-sel-v{ color: #fa5151; font-weight: 700; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 无可预订时段的空态 */
.ses-empty{ text-align: center; padding: calc(40 * var(--rpx)) calc(24 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .ses-empty .se-title{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; margin-bottom: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .ses-empty .se-sub{ font-size: calc(calc(23 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 提前量提示（国内 12h / 海外 24h）：说明为什么「今天/明天上午」点不了 */
.lead-tip{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1));
  color: #a06a1b;
  background: #fff8e6;
  border: calc(1 * var(--rpx)) solid #f5e2b8;
  border-radius: calc(10 * var(--rpx));
  padding: calc(8 * var(--rpx)) calc(14 * var(--rpx));
  margin-bottom: calc(14 * var(--rpx));
  display: block;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 日期条滚动区 + 右侧固定「更多日期」卡 */
.day-row{ display: flex; align-items: flex-start; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .day-strip{ flex: 1; min-width: 0; white-space: nowrap; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .day-card{
  display: inline-block; vertical-align: top;
  box-sizing: border-box;
  width: calc(150 * var(--rpx)); height: calc(calc(162 * var(--rpx)) * var(--gf-fs, 1));
  text-align: center; padding-top: calc(20 * var(--rpx)); margin-right: calc(14 * var(--rpx));
  border-radius: calc(14 * var(--rpx));
  background: #f7f8fa; border: calc(2 * var(--rpx)) solid #eef0f3;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 选中态：品牌红底白字 */
.day-card.sel{ background: #fa5151; border-color: #fa5151; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .day-md{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; line-height: 1.3; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .day-label{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #888; margin-top: calc(8 * var(--rpx)); line-height: 1.3; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .day-price{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #ff7a45; margin-top: calc(8 * var(--rpx)); line-height: 1.3; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .day-yen{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 🔴 2026-10-09：电询球场日期卡没有价格行（.day-price 不渲染），
   卡片高度固定 calc(162 * var(--rpx))，不加居中会全部堆在顶部、下方留一大块空白。
   ⚠️⚠️ 必须是 **inline-flex**，不能写 display:flex ——
   .day-strip 是靠 `white-space:nowrap` + 卡片 `display:inline-block` 横向排开的，
   一旦改成块级 flex，每张卡独占一行 → 日期条直接变成竖排（真机已出现）。
   inline-flex 既保留行内流，又能用 flex 垂直居中。
   用 :not() 有兼容坑（见项目铁律），所以给不含价格行的卡加修饰类。 */
.day-card.noprice{
  display: inline-flex; flex-direction: column;
  justify-content: center; vertical-align: top;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .day-card.sel .day-md,.mp-page[data-route="pkgcourse/pages/course/detail"] .day-card.sel .day-label,.mp-page[data-route="pkgcourse/pages/course/detail"] .day-card.sel .day-price{ color: #fff; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 更多日期：固定在滚动区右侧的竖排文字窄卡，与日期卡同高（不随卡片滚动） */
.day-more{
  flex-shrink: 0;
  box-sizing: border-box;
  width: calc(88 * var(--rpx)); height: calc(calc(162 * var(--rpx)) * var(--gf-fs, 1));
  margin-left: calc(14 * var(--rpx));
  background: #fff; border: calc(2 * var(--rpx)) solid #eef0f3; border-radius: calc(14 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .day-more-txt{
  width: 1.1em; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
  color: #666; line-height: 1.3; white-space: normal; text-align: center;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 天气行：跟随所选日期 */
.book-weather{
  margin-top: calc(18 * var(--rpx));
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #666;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 「气候参考」标记（2026-10-11）：只用于「超出 16 天预报窗口」的日期。
   刻意做得比正文更轻 —— 它是**免责说明**，不是要抢视觉重心。 */
.book-weather .wx-tag{
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- ④ 时段报价 ---------- */
/* 顶部留白与底部一致（calc(28 * var(--rpx))）：原 34+10=calc(44 * var(--rpx)) 顶部空白过大（2026-10-06 用户反馈） */
.session{ margin-top: calc(24 * var(--rpx)); padding-top: calc(28 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 「时段」角标与时间条同一水平线：角标随顶部留白收紧上移；s-bar 左移贴近角标
   （角标宽约 calc(90 * var(--rpx)) + 内容盒左缘 calc(28 * var(--rpx))，留 calc(76 * var(--rpx)) 即与角标右缘间距约 calc(14 * var(--rpx))） */
.session .flag{ top: calc(36 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .s-head{ display: flex; align-items: center; padding-left: calc(76 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .s-bar{
  background: #eceff1; border-radius: calc(8 * var(--rpx));
  font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333;
  padding: calc(10 * var(--rpx)) calc(24 * var(--rpx)); line-height: 1.2;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .s-code{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; margin-left: auto; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 包含项 mp-icon 由后台按球场/时段勾选，最多 8 个 → 允许换行，确认/取消标签自动顺延 */
.s-icons{ display: flex; align-items: center; flex-wrap: wrap; gap: calc(10 * var(--rpx)); margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .s-confirm{
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9;
  border: calc(2 * var(--rpx)) solid #bcd6f2; border-radius: calc(6 * var(--rpx));
  padding: calc(4 * var(--rpx)) calc(12 * var(--rpx)); margin-left: calc(8 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .s-cancel{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; background: #f4f6f8; border-radius: calc(6 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(12 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .s-price{ display: flex; align-items: center; margin-top: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 标签列：2026-10-07 起宽度自适应（原先固定 calc(130 * var(--rpx)) 放不下「嘉宾价 + 省¥N」两个元素），
   折扣/省额角标作为行内小标签跟随其后。 */
.s-pl{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; width: auto; min-width: calc(130 * var(--rpx)); flex: none; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 等级折扣角标：如「95 折」，贴在「会员价」后面 */
.s-off{
  display: inline-block;
  margin-left: calc(8 * var(--rpx));
  padding: calc(1 * var(--rpx)) calc(8 * var(--rpx));
  border-radius: calc(6 * var(--rpx));
  background: #fff1f0;
  border: calc(1 * var(--rpx)) solid #ffccc7;
  color: #fa5151;
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600;
  vertical-align: middle;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 省额角标：如「省¥50」，贴在「嘉宾价」后面 */
.s-save{
  display: inline-block;
  margin-left: calc(8 * var(--rpx));
  color: #999;
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 400;
  vertical-align: middle;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .s-pv{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #fa5151; flex: 1; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 🔴 2026-10-26 价格占位（统一报价未就绪）：灰字占位，绝不先露基础价再跳档价 */
.s-pv-wait{ color: #c9cfcb; font-weight: 600; letter-spacing: calc(1 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .s-btn{
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #fa5151;
  border: calc(2 * var(--rpx)) solid #fa5151; border-radius: calc(32 * var(--rpx));
  padding: calc(8 * var(--rpx)) calc(40 * var(--rpx)); font-weight: 600;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .s-line{ border-bottom: calc(2 * var(--rpx)) dashed #eceff1; margin-top: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 时段汇总一行（后台配置的可预订窗口） */
.ses-note{
  margin: 0 calc(24 * var(--rpx)) calc(24 * var(--rpx)); padding: 0 calc(8 * var(--rpx));
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; line-height: 1.6;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .ses-note .sn-em{ color: #4a90d9; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- 报价包含项图标（彩色 emoji 版，与列表页一致） ---------- */
.qie{
  width: calc(44 * var(--rpx)); height: calc(40 * var(--rpx));
  border: calc(2 * var(--rpx)) solid #e3e5e8; border-radius: calc(8 * var(--rpx));
  background: #fafbfc;
  display: flex; align-items: center; justify-content: center;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .qie-emo{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 定制图片图标（球童费）：与 calc(28 * var(--rpx)) emoji 同尺寸，圆角贴合图标底图 */
/* #646（2026-10-18 晚）：球童定制图 calc(38 * var(--rpx))（30→44 真机偏大回调，用户确认口径），
   比同行 emoji（calc(28 * var(--rpx))）略大，人物图标作为定制图更醒目但不撑行 */
.qie-img{ width: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); height: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); border-radius: calc(8 * var(--rpx)); display: block; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- ⑤ 关联套票 ---------- */
.pkg{ display: flex; margin-top: calc(16 * var(--rpx)); padding-bottom: calc(20 * var(--rpx)); border-bottom: calc(2 * var(--rpx)) solid #f4f6f8; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .pkg:last-child{ border-bottom: none; padding-bottom: 0; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .pkg-img{ width: calc(200 * var(--rpx)); height: calc(150 * var(--rpx)); border-radius: calc(12 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .pkg-body{ flex: 1; margin-left: calc(20 * var(--rpx)); display: flex; flex-direction: column; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .pkg-name{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .pkg-quote{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .pkg-price{ margin-top: auto; text-align: right; display: flex; align-items: baseline; justify-content: flex-end; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .mp-badge{ background: #fa5151; color: #fff; font-size: calc(calc(18 * var(--rpx)) * var(--gf-fs, 1)); border-radius: calc(6 * var(--rpx)); padding: calc(2 * var(--rpx)) calc(10 * var(--rpx)); margin-right: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .pkg-rmb{ color: #ff6b2b; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .pkg-num{ color: #ff6b2b; font-size: calc(calc(36 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .pkg-qi{ color: #999; font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- ⑥ 预订须知 ---------- */
.notice-sec{ margin-top: calc(22 * var(--rpx)); padding-top: calc(20 * var(--rpx)); border-top: calc(1 * var(--rpx)) solid #f0f0f0; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .notice-sec:first-child{ margin-top: calc(4 * var(--rpx)); padding-top: 0; border-top: none; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .notice-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #fa5151; font-weight: 600; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .notice-p{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #555; line-height: 1.8; margin-top: calc(12 * var(--rpx)); text-align: justify; text-justify: inter-ideograph; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 折叠容器：默认截断前三行，展开后显示全部（与 .post-text 同款 line-clamp） */
.fold-clamp{
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .fold-open{ display: block; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 疑问解答 */
.faq-sec{ margin-top: calc(22 * var(--rpx)); padding-top: calc(20 * var(--rpx)); border-top: calc(1 * var(--rpx)) solid #f0f0f0; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .faq-sec:first-child{ margin-top: calc(4 * var(--rpx)); padding-top: 0; border-top: none; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .faq-qa{ margin-top: calc(18 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .faq-q{ font-size: calc(calc(29 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; line-height: 1.8; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .faq-a{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #555; line-height: 1.8; margin-top: calc(8 * var(--rpx)); text-align: justify; text-justify: inter-ideograph; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .faq-foot{ margin-top: calc(22 * var(--rpx)); padding-top: calc(18 * var(--rpx)); border-top: calc(1 * var(--rpx)) solid #f0f0f0;
  text-align: center; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; line-height: 1.8; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- ⑦ 球友动态瀑布流 ---------- */
.wf{ display: flex; gap: calc(18 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .wf-col{ flex: 1; display: flex; flex-direction: column; gap: calc(18 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .post{ background: #fff; border: calc(2 * var(--rpx)) solid #f0f1f3; border-radius: calc(14 * var(--rpx)); overflow: hidden; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .post-img{ width: 100%; display: block; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .post-text{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #333; line-height: 1.5; padding: calc(12 * var(--rpx)) calc(14 * var(--rpx)) 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .post-foot{ display: flex; align-items: center; padding: calc(12 * var(--rpx)) calc(14 * var(--rpx)) calc(16 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .post-avatar{ width: calc(36 * var(--rpx)); height: calc(36 * var(--rpx)); border-radius: 50%; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .post-user{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-left: calc(10 * var(--rpx)); flex: 1; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .post-like{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .wf-more{ text-align: center; color: #4a90d9; font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); margin-top: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- ⑧ 疑问解答 ---------- */
/* ---------- ⑨ 球场周边 ---------- */
.poi-tabs{ display: flex; gap: calc(40 * var(--rpx)); border-bottom: calc(2 * var(--rpx)) solid #f4f6f8; margin-bottom: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi-tab{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #666; padding: calc(10 * var(--rpx)) calc(4 * var(--rpx)) calc(16 * var(--rpx)); position: relative; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi-tab.on{ color: #21a45d; font-weight: 700; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi-tab.on::after{
  content: ''; position: absolute; left: 50%; bottom: 0;
  width: calc(40 * var(--rpx)); height: calc(6 * var(--rpx)); margin-left: calc(-20 * var(--rpx));
  background: #21a45d; border-radius: calc(3 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi{ display: flex; padding: calc(20 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f4f6f8; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi:last-child{ border-bottom: none; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi-ico{
  width: calc(100 * var(--rpx)); height: calc(100 * var(--rpx)); border-radius: calc(12 * var(--rpx)); flex-shrink: 0;
  background: #f0f7f3; display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(48 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi-body{ flex: 1; margin-left: calc(20 * var(--rpx)); min-width: 0; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi-name{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi-sub{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(8 * var(--rpx)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi-meta{ margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi-drive,.mp-page[data-route="pkgcourse/pages/course/detail"] .poi-dist{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-right: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .poi-empty{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; padding: calc(40 * var(--rpx)) 0; text-align: center; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- ⑩ 附近其他球场 ---------- */
.nc{ display: flex; padding: calc(22 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f4f6f8; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc:last-child{ border-bottom: none; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-img{ width: calc(220 * var(--rpx)); height: calc(220 * var(--rpx)); border-radius: calc(12 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-body{ flex: 1; margin-left: calc(20 * var(--rpx)); position: relative; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-name{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-en{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(2 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-stars{ display: flex; gap: calc(6 * var(--rpx)); margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-quote{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-icons{ display: flex; gap: calc(8 * var(--rpx)); justify-content: flex-end; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-bottom{ display: flex; align-items: center; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-drive,.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-dist{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-right: calc(18 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-price{ margin-left: auto; display: flex; align-items: baseline; color: #ff6b2b; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-price .rmb{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-price .num{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .nc-qi{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- ⑪ 价格说明 ---------- */
.price-note{ margin: calc(8 * var(--rpx)) calc(24 * var(--rpx)) calc(24 * var(--rpx)); padding: calc(8 * var(--rpx)) calc(12 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .pn-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; margin-bottom: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .pn-p{ font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #b3b7bc; line-height: 1.7; margin-bottom: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- ⑫ 品牌尾 ---------- */
.brand{ text-align: center; padding: calc(30 * var(--rpx)) 0 calc(60 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .brand-name{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #333; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .brand-slogan{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .brand-icons{ display: flex; justify-content: center; gap: calc(56 * var(--rpx)); margin-top: calc(30 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .bi-ico{ font-size: calc(calc(44 * var(--rpx)) * var(--gf-fs, 1)); filter: grayscale(100%); opacity: 0.55; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .brand-labels{ display: flex; justify-content: center; gap: calc(34 * var(--rpx)); margin-top: calc(14 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .bl{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #b3b7bc; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ---------- 底部按钮 ---------- */
.footer{
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 10;
  background: #fff;
  padding: calc(16 * var(--rpx)) calc(40 * var(--rpx)) calc(calc(16 * var(--rpx)) + env(safe-area-inset-bottom));
  box-shadow: 0 calc(-4 * var(--rpx)) calc(20 * var(--rpx)) rgba(0,0,0,0.06);
  display: flex; align-items: center; justify-content: space-between; gap: calc(20 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .tee-btn{
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  padding: 0 calc(32 * var(--rpx));
  margin: 0;
  background: #21a45d; color: #fff;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  border-radius: calc(44 * var(--rpx)); height: calc(88 * var(--rpx)); line-height: calc(88 * var(--rpx));
  box-sizing: border-box;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 足迹记录（打过 / 想打 / 客服） */
.fp-col{ display: flex; align-items: center; gap: calc(28 * var(--rpx)); flex-shrink: 0; padding-left: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .fp-op{ display: flex; flex-direction: column; align-items: center; gap: calc(2 * var(--rpx)); flex-shrink: 0; margin: 0; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .fp-ico{ font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); color: #bbb; line-height: 1.1; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .fp-t{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .fp-op.on .fp-ico{ color: #21a45d; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .fp-op.on .fp-t{ color: #21a45d; font-weight: 600; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 客服入口 = 微信客服按钮：去掉原生 mp-button 默认样式，沿用 .fp-op 外观 */
.fp-op.svc{
  background: transparent; padding: 0; margin: 0;
  width: auto; min-width: 0; min-height: 0; border-radius: 0;
  line-height: 1.2; font-size: inherit; color: inherit;
  display: flex; flex-direction: column; align-items: center; gap: calc(2 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .fp-op.svc::after{ border: none; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .tee-btn::after{ border: none; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ===== 纯会员制球场：订场入口改为「电询」（2026-10-07）=====
   这类球场平台无法在线展示订场价格、也订不到，
   隐藏价格与「预订」按钮，改为引导走客服电询。 */
/* 底部主按钮：电询态用琥珀色，与常规绿色「查看TeeTime」区分 */
.tee-btn.inquiry{ background: #d97706; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 时段价格区：不显示价格时的说明行 */
.s-price.inquiry-only{
  margin-top: calc(24 * var(--rpx));
  padding: calc(18 * var(--rpx)) calc(24 * var(--rpx));
  background: #fff7ed;
  border: calc(2 * var(--rpx)) solid #fde3b8;
  border-radius: calc(16 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .s-price.inquiry-only .s-pl{
  width: auto;
  color: #8a6d3b;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .s-price.inquiry-only .s-pv{
  flex: 1;
  color: #b45309;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 500;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ===== 会员价说明条（2026-10-07 会员价体系）=====
   位置：预订区（日期/天气）下方、时段报价卡上方。
   作用：一句话讲清双价口径，避免用户把「嘉宾价」误解成会员价、或反之。 */
.mp-note{
  margin: 0 calc(24 * var(--rpx)) calc(16 * var(--rpx));
  padding: calc(14 * var(--rpx)) calc(18 * var(--rpx));
  background: #f6faf8;
  border: calc(1 * var(--rpx)) solid #d5e6dc;
  border-radius: calc(14 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .mp-note-in{ display: flex; align-items: center; gap: calc(12 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .mp-note-lv{
  flex: none;
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1));
  color: #fff;
  background: #1d3c2a;
  border-radius: calc(8 * var(--rpx));
  padding: calc(3 * var(--rpx)) calc(12 * var(--rpx));
  font-weight: 600;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 未登录/L0 无折扣时用中性色，不制造「你亏了」的暗示 */
.mp-note-lv.plain{ color: #4a5a52; background: #e8efe9; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .mp-note-tx{
  flex: 1;
  min-width: 0;
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  color: #4a5a52;
  line-height: 1.4;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 关联套票卡的行程天数（2026-10-07 新增） */
.pkg-days{
  margin-left: calc(10 * var(--rpx));
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1));
  color: #8a8a8a;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ===== 关联套票卡片的规格摘要（2026-10-07）=====
   住打套票的核心卖点是「几场球 + 住几晚」，原来卡片只有标题/报价/价格，
   用户看不出这个套餐含几场、住几晚。现在加一行规格摘要。 */
.pkg-spec{
  margin-top: calc(6 * var(--rpx));
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1));
  color: #21a45d;
  line-height: 1.5;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] /* ===== 球场找不到的空态（2026-10-07）=====
   关键：不能用 courses[0] 冒充 —— 那会让整页显示别家球场的内容，
   用户看到的是「这家球场怎么没有关联套票」（真实踩过的坑）。 */
.cm-wrap{
  min-height: 100dvh;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  padding: 0 calc(60 * var(--rpx)) calc(calc(80 * var(--rpx)) + env(safe-area-inset-bottom));
  box-sizing: border-box; background: #f7f9f8;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .cm-ico{
  width: calc(88 * var(--rpx)); height: calc(88 * var(--rpx)); line-height: calc(88 * var(--rpx)); text-align: center;
  border-radius: 50%; background: #fdf0ee; color: #d9483b;
  font-size: calc(calc(48 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .cm-t{
  margin-top: calc(28 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .cm-s{
  margin-top: calc(12 * var(--rpx));
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; text-align: center; line-height: 1.6;
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .cm-btns{ margin-top: calc(44 * var(--rpx)); display: flex; gap: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .cm-btn{
  padding: calc(18 * var(--rpx)) calc(44 * var(--rpx)); border-radius: calc(999 * var(--rpx));
  background: #21a45d; color: #fff;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .cm-btn.plain{ background: #fff; color: #21a45d; border: calc(1 * var(--rpx)) solid #21a45d; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 2026-10-21：时段卡「特别说明」（订场补充说明，后台客服随时改） */
.s-remark{ margin-top: calc(14 * var(--rpx)); font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #8a6d1a; background: #fff8e6; border-radius: calc(10 * var(--rpx)); padding: calc(12 * var(--rpx)) calc(16 * var(--rpx)); line-height: 1.6; }
.mp-page[data-route="pkgcourse/pages/course/detail"] /* 🔴 2026-10-26 时段卡骨架：统一报价未就绪时占位，杜绝「先闪本地价再跳档价」 */
.ses-skel{ padding: calc(28 * var(--rpx)) calc(24 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/detail"] .ses-skel .skel-line{
  height: calc(26 * var(--rpx)); border-radius: calc(8 * var(--rpx)); background: #eef1ef; margin-bottom: calc(20 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/detail"] .ses-skel .skel-line:last-child{ margin-bottom: 0; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .ses-skel .w50{ width: 50%; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .ses-skel .w70{ width: 70%; }
.mp-page[data-route="pkgcourse/pages/course/detail"] .ses-skel .w90{ width: 90%; }

/* ===== pkgcourse/pages/course/info.wxss ===== */
.mp-page[data-route="pkgcourse/pages/course/info"] /* pkgcourse/pages/course/info.wxss */
/* pages/course/info.wxss —— 球场信息介绍页（详情·设施） */
/* 顶部导航为 fixed 不占流式高度，页面内容须整体下移其高度（16+64+16=calc(96 * var(--rpx)) + 状态栏）。
   🔴 2026-10-10：状态栏高度改用 --nav-safe-top（真实 px，由 wxml 从 utils/navbar.js 注入）。
      原来用 `env(safe-area-inset-top)`，**在安卓恒为 0** → 顶栏只剩 calc(96 * var(--rpx))(≈48px)，
      返回按钮被系统状态栏压住、点不动（红米 K80 实测）。 */
.page{
  background: #f5f6f7; padding-bottom: calc(200 * var(--rpx));
  padding-top: calc(var(--nav-safe-top, env(safe-area-inset-top)) + calc(96 * var(--rpx)));
}
.mp-page[data-route="pkgcourse/pages/course/info"] /* ---------- 顶部导航 ---------- */
.nav{
  position: fixed; left: 0; right: 0; top: 0; z-index: 100;
  background: #fff;
  padding: calc(var(--nav-safe-top, env(safe-area-inset-top)) + calc(16 * var(--rpx))) calc(24 * var(--rpx)) calc(16 * var(--rpx));
  display: flex; align-items: center;
  box-shadow: 0 calc(2 * var(--rpx)) calc(10 * var(--rpx)) rgba(0,0,0,0.04);
}
.mp-page[data-route="pkgcourse/pages/course/info"] .nav-back{
  width: calc(64 * var(--rpx)); height: calc(64 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
  font-size: calc(calc(48 * var(--rpx)) * var(--gf-fs, 1)); color: #333; line-height: 1;
}
.mp-page[data-route="pkgcourse/pages/course/info"] .nav-title{
  position: absolute; left: 50%; transform: translateX(-50%);
  font-size: calc(calc(34 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #222;
}
.mp-page[data-route="pkgcourse/pages/course/info"] /* ---------- 锚点 tab（吸顶） ---------- */
.tabs{
  position: sticky;
  top: calc(var(--nav-safe-top, env(safe-area-inset-top)) + calc(96 * var(--rpx)));
  z-index: 90;
  display: flex; justify-content: center; gap: calc(44 * var(--rpx));
  background: #fff;
  padding: calc(20 * var(--rpx)) calc(24 * var(--rpx));
  border-bottom: calc(2 * var(--rpx)) solid #f0f1f3;
}
.mp-page[data-route="pkgcourse/pages/course/info"] .tab{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #666; padding: calc(6 * var(--rpx)) calc(4 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .tab.on{ color: #21a45d; font-weight: 700; }
.mp-page[data-route="pkgcourse/pages/course/info"] /* ---------- 头部 ---------- */
.head{ background: #fff; padding: calc(28 * var(--rpx)) calc(32 * var(--rpx)) calc(30 * var(--rpx)); margin-top: calc(2 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .h-name{ font-size: calc(calc(40 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; line-height: 1.3; }
.mp-page[data-route="pkgcourse/pages/course/info"] .h-en{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .h-stars{ display: flex; align-items: center; gap: calc(8 * var(--rpx)); margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .star{ width: calc(30 * var(--rpx)); height: calc(30 * var(--rpx)); border-radius: 50%; position: relative; }
.mp-page[data-route="pkgcourse/pages/course/info"] .star.f{ background: #21a45d; }
.mp-page[data-route="pkgcourse/pages/course/info"] .star.h{ background: linear-gradient(90deg, #21a45d 50%, #e2e4e6 50%); }
.mp-page[data-route="pkgcourse/pages/course/info"] .star.e{ background: #e2e4e6; }
.mp-page[data-route="pkgcourse/pages/course/info"] .star.f::after,.mp-page[data-route="pkgcourse/pages/course/info"] .star.h::after{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(5 * var(--rpx)); height: calc(5 * var(--rpx)); margin: calc(-2.5 * var(--rpx)) 0 0 calc(-2.5 * var(--rpx));
  border-radius: 50%; background: rgba(255,255,255,0.9);
  box-shadow: calc(6 * var(--rpx)) calc(-4 * var(--rpx)) 0 rgba(255,255,255,0.75), calc(-5 * var(--rpx)) calc(4 * var(--rpx)) 0 rgba(255,255,255,0.75);
}
.mp-page[data-route="pkgcourse/pages/course/info"] .h-rating{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #333; margin-left: calc(6 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .h-brief{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; margin-top: calc(18 * var(--rpx)); line-height: 1.6; }
.mp-page[data-route="pkgcourse/pages/course/info"] /* ---------- 板块 ---------- */
.sec{ background: #fff; margin: calc(20 * var(--rpx)) calc(24 * var(--rpx)) 0; border-radius: calc(16 * var(--rpx)); padding: calc(28 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .sec-t{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .sec-p{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #555; line-height: 1.8; }
.mp-page[data-route="pkgcourse/pages/course/info"] /* 基本信息 key-value */
.kv{ display: flex; padding: calc(12 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #f4f6f8; }
.mp-page[data-route="pkgcourse/pages/course/info"] .kv:last-child{ border-bottom: none; }
.mp-page[data-route="pkgcourse/pages/course/info"] .k{ width: calc(180 * var(--rpx)); font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; flex-shrink: 0; }
.mp-page[data-route="pkgcourse/pages/course/info"] .v{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 500; }
.mp-page[data-route="pkgcourse/pages/course/info"] .kv-call{ background: #f7fbff; border-radius: calc(8 * var(--rpx)); padding-left: calc(12 * var(--rpx)); padding-right: calc(12 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .kv-tel{
  margin-left: auto; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #4a90d9; font-weight: 600;
  border: calc(2 * var(--rpx)) solid #bcd6f2; border-radius: calc(22 * var(--rpx)); padding: calc(2 * var(--rpx)) calc(18 * var(--rpx));
  align-self: center;
}
.mp-page[data-route="pkgcourse/pages/course/info"] /* 球场设施 */
.fac{ display: flex; align-items: flex-start; margin-bottom: calc(18 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .fac:last-child{ margin-bottom: 0; }
.mp-page[data-route="pkgcourse/pages/course/info"] .fac-ico{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); margin-right: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .fac-name{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; flex-shrink: 0; }
.mp-page[data-route="pkgcourse/pages/course/info"] .fac-items{ display: flex; flex-wrap: wrap; }
.mp-page[data-route="pkgcourse/pages/course/info"] .fac-item{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #666; margin-right: calc(16 * var(--rpx)); margin-bottom: calc(6 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] /* 预订须知 */
.rule{ display: flex; margin-bottom: calc(14 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .rule:last-child{ margin-bottom: 0; }
.mp-page[data-route="pkgcourse/pages/course/info"] .rule-n{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #555; margin-right: calc(8 * var(--rpx)); flex-shrink: 0; }
.mp-page[data-route="pkgcourse/pages/course/info"] .rule-t{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #555; line-height: 1.7; }
.mp-page[data-route="pkgcourse/pages/course/info"] /* 支付方式 */
.pays{ display: flex; flex-wrap: wrap; gap: calc(18 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .pay{
  color: #fff; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  padding: calc(10 * var(--rpx)) calc(26 * var(--rpx)); border-radius: calc(10 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/info"] /* 服务说明 */
.note-t{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #999; font-weight: 600; margin-bottom: calc(12 * var(--rpx)); }
.mp-page[data-route="pkgcourse/pages/course/info"] .note-t + .sec-p{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #b3b7bc; }
.mp-page[data-route="pkgcourse/pages/course/info"] /* ---------- 球场照片 ---------- */
.photos{ position: relative; }
.mp-page[data-route="pkgcourse/pages/course/info"] .photo-swiper{ width: 100%; height: calc(400 * var(--rpx)); border-radius: calc(14 * var(--rpx)); overflow: hidden; }
.mp-page[data-route="pkgcourse/pages/course/info"] .photo-img{ width: 100%; height: 100%; }
.mp-page[data-route="pkgcourse/pages/course/info"] .photo-count{
  position: absolute; left: calc(20 * var(--rpx)); bottom: calc(20 * var(--rpx));
  background: rgba(0,0,0,0.45); color: #fff;
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); padding: calc(4 * var(--rpx)) calc(16 * var(--rpx)); border-radius: calc(20 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/info"] /* ---------- 底部按钮 ---------- */
.footer{
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 10;
  background: #fff;
  padding: calc(16 * var(--rpx)) calc(40 * var(--rpx)) calc(calc(16 * var(--rpx)) + env(safe-area-inset-bottom));
  box-shadow: 0 calc(-4 * var(--rpx)) calc(20 * var(--rpx)) rgba(0,0,0,0.06);
  display: flex; justify-content: center;
}
.mp-page[data-route="pkgcourse/pages/course/info"] /* 自适应宽度：按文字内容撑开，水平居中 */
.tee-btn{
  display: inline-block;
  width: auto;
  padding: 0 calc(96 * var(--rpx));
  background: #21a45d; color: #fff;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
  border-radius: calc(44 * var(--rpx)); line-height: calc(88 * var(--rpx)); height: calc(88 * var(--rpx));
}
.mp-page[data-route="pkgcourse/pages/course/info"] .tee-btn::after{ border: none; }

/* ===== pkgclub/pages/bind/bind.wxss ===== */
.mp-page[data-route="pkgclub/pages/bind/bind"] /* pkgclub/pages/bind/bind.wxss */
/* pkgclub/pages/bind/bind.wxss —— 字号走 calc(Nrpx*var(--gf-fs,.mp-page[data-route="pkgclub/pages/bind/bind"] 1))（约束 1） */
.page{ min-height: 100dvh; background: #f5f6f7; padding: calc(24 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pkgclub/pages/bind/bind"] .card{ background: #fff; border-radius: calc(20 * var(--rpx)); padding: calc(32 * var(--rpx)) calc(28 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/bind/bind"] .t{ font-size: calc(calc(36 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; }
.mp-page[data-route="pkgclub/pages/bind/bind"] .s{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; line-height: 1.7; margin: calc(12 * var(--rpx)) 0 calc(28 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/bind/bind"] .fld{ margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/bind/bind"] .lab{ font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; color: #33413a; margin-bottom: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/bind/bind"] .inp{ background: #f4f6f5; border: calc(2 * var(--rpx)) solid #e2e8e4; border-radius: calc(14 * var(--rpx)); padding: calc(18 * var(--rpx)) calc(20 * var(--rpx)); font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); color: #1c2b24; }
.mp-page[data-route="pkgclub/pages/bind/bind"] .ph{ color: #a8b2ac; }
.mp-page[data-route="pkgclub/pages/bind/bind"] .row{ display: flex; gap: calc(20 * var(--rpx)); margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/bind/bind"] .btn{ flex: 1; text-align: center; background: #21a45d; color: #fff; font-size: calc(calc(32 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; padding: calc(22 * var(--rpx)) 0; border-radius: calc(999 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/bind/bind"] .btn.ghost{ background: #eef5f1; color: #1f7a46; }
.mp-page[data-route="pkgclub/pages/bind/bind"] .tip{ margin-top: calc(24 * var(--rpx)); font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #9aa49e; }
.mp-page[data-route="pkgclub/pages/bind/bind"] /* ㊿+61 同事转发邀请落地卡 */
.card.inv{ text-align: center; padding: calc(56 * var(--rpx)) calc(32 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/bind/bind"] .inv-emoji{ font-size: calc(88 * var(--rpx)); line-height: 1.2; }
.mp-page[data-route="pkgclub/pages/bind/bind"] .inv-from{ font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/bind/bind"] .inv-name{ color: #1f7a46; font-weight: 600; }
.mp-page[data-route="pkgclub/pages/bind/bind"] .inv-course{ font-size: calc(calc(40 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; margin: calc(12 * var(--rpx)) 0 calc(8 * var(--rpx)); line-height: 1.4; }
.mp-page[data-route="pkgclub/pages/bind/bind"] .inv-desc{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; line-height: 1.8; margin: calc(8 * var(--rpx)) 0 calc(32 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/bind/bind"] .card.inv .fld{ text-align: left; }
.mp-page[data-route="pkgclub/pages/bind/bind"] .inv-btn{ display: flex; align-items: center; justify-content: center; background: #21a45d; color: #fff; font-size: calc(calc(34 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; padding: calc(26 * var(--rpx)) 0; border-radius: calc(999 * var(--rpx)); margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/bind/bind"] .card.inv .tip{ text-align: center; }

/* ===== pkgclub/pages/service/service.wxss ===== */
.mp-page[data-route="pkgclub/pages/service/service"] /* pkgclub/pages/service/service.wxss */
/* pkgclub/pages/service/service.wxss */
.page{ min-height: 100dvh; background: #f5f6f7; padding: calc(24 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pkgclub/pages/service/service"] .card{ background: #fff; border-radius: calc(20 * var(--rpx)); padding: calc(32 * var(--rpx)) calc(28 * var(--rpx)); margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .card.center{ text-align: center; padding: calc(60 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .big{ font-size: calc(calc(64 * var(--rpx))*var(--gf-fs,1)); }
.mp-page[data-route="pkgclub/pages/service/service"] .t{ font-size: calc(calc(34 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .s{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; line-height: 1.7; margin: calc(12 * var(--rpx)) 0 calc(28 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .btn{ display: inline-block; background: #21a45d; color: #fff; font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; padding: calc(18 * var(--rpx)) calc(60 * var(--rpx)); border-radius: calc(999 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .btn.ghost{ background: #eef5f1; color: #1f7a46; }
.mp-page[data-route="pkgclub/pages/service/service"] .topbar{ display: flex; align-items: center; justify-content: space-between; padding: calc(8 * var(--rpx)) calc(6 * var(--rpx)) calc(20 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .top-t{ font-size: calc(calc(32 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; }
.mp-page[data-route="pkgclub/pages/service/service"] .top-add{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #1f7a46; background: #eef5f1; border-radius: calc(999 * var(--rpx)); padding: calc(10 * var(--rpx)) calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .loading{ text-align: center; color: #9aa49e; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); padding: calc(60 * var(--rpx)) 0; }
.mp-page[data-route="pkgclub/pages/service/service"] .course .c-head{ display: flex; align-items: baseline; gap: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .c-name{ font-size: calc(calc(32 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; }
.mp-page[data-route="pkgclub/pages/service/service"] .c-city{ font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #8b968f; }
.mp-page[data-route="pkgclub/pages/service/service"] .c-sub{ font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #9aa49e; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .c-row{ display: flex; gap: calc(20 * var(--rpx)); margin-top: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .c-btn{ flex: 1; text-align: center; background: #21a45d; color: #fff; font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; padding: calc(18 * var(--rpx)) 0; border-radius: calc(999 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .c-btn.ghost{ background: #eef5f1; color: #1f7a46; }
.mp-page[data-route="pkgclub/pages/service/service"] /* ㊿+54：查看平台详情（通栏次按钮） */
.c-btn.wide{ display: block; margin-top: calc(20 * var(--rpx)); background: #fff; color: #1f7a46; border: calc(2 * var(--rpx)) solid #cfe6d9; }
.mp-page[data-route="pkgclub/pages/service/service"] /* ㊿+58：邀请同事（微信分享 mp-button 需清默认样式） */
.c-invite{ display: flex; align-items: center; gap: calc(16 * var(--rpx)); margin-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .c-invite-btn{ flex: 1; margin: 0; padding: calc(16 * var(--rpx)) 0; line-height: 1.4; text-align: center; background: #eef5f1; color: #1f7a46; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; border-radius: calc(999 * var(--rpx)); border: none; }
.mp-page[data-route="pkgclub/pages/service/service"] .c-invite-btn::after{ border: none; }
.mp-page[data-route="pkgclub/pages/service/service"] .c-invite-copy{ font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #2f6fb3; padding: calc(16 * var(--rpx)) calc(8 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] /* ㊿+53 新订单订阅卡 */
.subcard{ border: calc(2 * var(--rpx)) solid #ffe1a8; background: #fffaf0; }
.mp-page[data-route="pkgclub/pages/service/service"] .sub-t{ font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; }
.mp-page[data-route="pkgclub/pages/service/service"] /* ㊿+63：订单处理入口待确认角标 */
.sub-badge{ margin-left: calc(16 * var(--rpx)); background: #e5533d; color: #fff; font-size: calc(calc(22 * var(--rpx))*var(--gf-fs,1)); font-weight: 400; border-radius: calc(999 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(16 * var(--rpx)); vertical-align: middle; }
.mp-page[data-route="pkgclub/pages/service/service"] .sub-s{ font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; line-height: 1.7; margin: calc(10 * var(--rpx)) 0 calc(20 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/service/service"] .subbtn{ display: block; text-align: center; padding: calc(18 * var(--rpx)) 0; }

/* ===== pkgclub/pages/form/form.wxss ===== */
.mp-page[data-route="pkgclub/pages/form/form"] /* pkgclub/pages/form/form.wxss */
/* pkgclub/pages/form/form.wxss */
/* 2026-10-22 版面重排：模块编号头（①结算价②挂牌价③相册④基本信息折叠） */
.sec-head{ display: flex; align-items: flex-start; gap: calc(16 * var(--rpx)); margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .sec-head.tap{ margin-bottom: 0; }
.mp-page[data-route="pkgclub/pages/form/form"] .sec-no{ flex: none; width: calc(44 * var(--rpx)); height: calc(44 * var(--rpx)); border-radius: 50%; background: #e3f3ea; color: #1f7a46; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; display: flex; align-items: center; justify-content: center; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .sec-main{ flex: 1; min-width: 0; }
.mp-page[data-route="pkgclub/pages/form/form"] .sec-head .sec-t{ margin-bottom: calc(4 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .sec-sub{ font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #8b968f; line-height: 1.5; }
.mp-page[data-route="pkgclub/pages/form/form"] .sec-toggle{ flex: none; color: #1f7a46; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); padding: calc(8 * var(--rpx)) 0 calc(8 * var(--rpx)) calc(16 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .info-body{ padding-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .sub-t{ font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #33413a; margin: calc(28 * var(--rpx)) 0 calc(16 * var(--rpx)); padding-top: calc(24 * var(--rpx)); border-top: calc(2 * var(--rpx)) solid #eef2f0; }
.mp-page[data-route="pkgclub/pages/form/form"] .same{ display: flex; align-items: center; gap: calc(14 * var(--rpx)); font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); color: #33413a; }
.mp-page[data-route="pkgclub/pages/form/form"] .page{ min-height: 100dvh; background: #f5f6f7; padding: calc(24 * var(--rpx)); box-sizing: border-box; padding-bottom: calc(60 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .loading{ text-align: center; color: #9aa49e; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); padding: calc(60 * var(--rpx)) 0; }
.mp-page[data-route="pkgclub/pages/form/form"] .card{ background: #fff; border-radius: calc(20 * var(--rpx)); padding: calc(32 * var(--rpx)) calc(28 * var(--rpx)); margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .card.center{ text-align: center; padding: calc(60 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .big{ font-size: calc(calc(64 * var(--rpx))*var(--gf-fs,1)); }
.mp-page[data-route="pkgclub/pages/form/form"] .t{ font-size: calc(calc(34 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .s{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; line-height: 1.7; margin: calc(12 * var(--rpx)) 0 calc(28 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .btn{ display: inline-block; background: #21a45d; color: #fff; font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; padding: calc(18 * var(--rpx)) calc(60 * var(--rpx)); border-radius: calc(999 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .btn.ghost{ background: #eef5f1; color: #1f7a46; }
.mp-page[data-route="pkgclub/pages/form/form"] .pend{ background: #fff8e6; color: #8a6d1a; font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); border-radius: calc(14 * var(--rpx)); padding: calc(16 * var(--rpx)) calc(20 * var(--rpx)); margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .sec-t{ font-size: calc(calc(32 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .hint{ font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #8b968f; line-height: 1.6; margin: calc(-8 * var(--rpx)) 0 calc(20 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .fld{ margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .lab{ font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; color: #33413a; margin-bottom: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] /* 🔴 2026-10-22 真机报障：输入框高度塌陷、文字被裁 ——
   小程序原生 mp-input 只吃显式 height，padding 撑不高；统一钉 calc(88 * var(--rpx)) 行高盒。 */
.inp{ background: #f4f6f5; border: calc(2 * var(--rpx)) solid #e2e8e4; border-radius: calc(14 * var(--rpx)); padding: 0 calc(20 * var(--rpx)); height: calc(88 * var(--rpx)); line-height: calc(88 * var(--rpx)); font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); color: #1c2b24; box-sizing: border-box; }
.mp-page[data-route="pkgclub/pages/form/form"] .inp.picker{ display: flex; align-items: center; justify-content: space-between; line-height: normal; }
.mp-page[data-route="pkgclub/pages/form/form"] .inp.sm{ width: calc(180 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .inp.grow{ flex: 1; }
.mp-page[data-route="pkgclub/pages/form/form"] .ph{ color: #a8b2ac; }
.mp-page[data-route="pkgclub/pages/form/form"] .ta{ width: 100%; background: #f4f6f5; border: calc(2 * var(--rpx)) solid #e2e8e4; border-radius: calc(14 * var(--rpx)); padding: calc(16 * var(--rpx)) calc(20 * var(--rpx)); font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); color: #1c2b24; min-height: calc(200 * var(--rpx)); line-height: 1.6; box-sizing: border-box; }
.mp-page[data-route="pkgclub/pages/form/form"] .row2{ display: flex; gap: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .row2-i{ flex: 1; }
.mp-page[data-route="pkgclub/pages/form/form"] .row2-i.sm{ flex: none; width: calc(200 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] /* 2026-10-22：价格/最低售价/货币 同行三格；日历选择器占位样式 */
.row3{ display: flex; gap: calc(14 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .row3-i{ flex: 1; min-width: 0; }
.mp-page[data-route="pkgclub/pages/form/form"] .row3-i.sm{ flex: none; width: calc(150 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .rpick{ flex: 1; min-width: 0; }
.mp-page[data-route="pkgclub/pages/form/form"] .rpick .inp{ width: 100%; }
.mp-page[data-route="pkgclub/pages/form/form"] .inp.dim{ color: #a8b2ac; }
.mp-page[data-route="pkgclub/pages/form/form"] .rate-clr{ flex: none; align-self: center; color: #c0564b; font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); padding: calc(8 * var(--rpx)) calc(4 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .chips{ display: flex; flex-wrap: wrap; gap: calc(14 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .chip{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #4c5a52; background: #f2f5f3; border: calc(2 * var(--rpx)) solid #e2e8e4; border-radius: calc(999 * var(--rpx)); padding: calc(10 * var(--rpx)) calc(26 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .chip.on{ background: #e3f3ea; border-color: #21a45d; color: #1f7a46; font-weight: 600; }
.mp-page[data-route="pkgclub/pages/form/form"] .rate{ background: #fafcfb; border: calc(2 * var(--rpx)) solid #e6ece8; border-radius: calc(16 * var(--rpx)); padding: calc(20 * var(--rpx)); margin-bottom: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .rate-top{ display: flex; justify-content: space-between; align-items: center; margin-bottom: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .rate-t{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; color: #33413a; }
.mp-page[data-route="pkgclub/pages/form/form"] .rate-del{ font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #c0564b; padding: calc(4 * var(--rpx)) calc(12 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .rate-dates{ display: flex; gap: calc(16 * var(--rpx)); margin: calc(12 * var(--rpx)) 0; }
.mp-page[data-route="pkgclub/pages/form/form"] .rate-dates .inp{ flex: 1; min-width: 0; }
.mp-page[data-route="pkgclub/pages/form/form"] .rate .chips{ margin: calc(8 * var(--rpx)) 0 calc(12 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .rate-foot{ display: flex; gap: calc(16 * var(--rpx)); align-items: center; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .addrow{ text-align: center; color: #1f7a46; font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); border: calc(2 * var(--rpx)) dashed #b9d8c6; border-radius: calc(14 * var(--rpx)); padding: calc(18 * var(--rpx)) 0; }
.mp-page[data-route="pkgclub/pages/form/form"] .photos{ display: flex; flex-wrap: wrap; gap: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .ph-item{ position: relative; width: calc(150 * var(--rpx)); height: calc(150 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .ph-img{ width: calc(150 * var(--rpx)); height: calc(150 * var(--rpx)); border-radius: calc(12 * var(--rpx)); background: #eef1ef; }
.mp-page[data-route="pkgclub/pages/form/form"] .ph-del{ position: absolute; top: calc(-12 * var(--rpx)); right: calc(-12 * var(--rpx)); width: calc(40 * var(--rpx)); height: calc(40 * var(--rpx)); line-height: calc(40 * var(--rpx)); text-align: center; background: #c0564b; color: #fff; font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); border-radius: 50%; }
.mp-page[data-route="pkgclub/pages/form/form"] .ph-add{ width: calc(150 * var(--rpx)); height: calc(150 * var(--rpx)); border: calc(2 * var(--rpx)) dashed #b9d8c6; border-radius: calc(12 * var(--rpx)); color: #1f7a46; font-size: calc(calc(60 * var(--rpx))*var(--gf-fs,1)); display: flex; align-items: center; justify-content: center; }
.mp-page[data-route="pkgclub/pages/form/form"] .submit{ background: #21a45d; color: #fff; text-align: center; font-size: calc(calc(34 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; padding: calc(24 * var(--rpx)) 0; border-radius: calc(999 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .submit.off{ opacity: 0.6; }
.mp-page[data-route="pkgclub/pages/form/form"] .foot-tip{ text-align: center; color: #9aa49e; font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-mask{ position: fixed; z-index: 100; top: 0; right: 0; bottom: 0; left: 0; background: rgba(15,35,26,.58); display: flex; align-items: center; justify-content: center; padding: calc(36 * var(--rpx)) calc(24 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-panel{ width: 100%; max-height: 90dvh; background: #fff; border-radius: calc(24 * var(--rpx)); padding: calc(30 * var(--rpx)) calc(28 * var(--rpx)); box-sizing: border-box; display: flex; flex-direction: column; }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-title{ text-align: center; color: #14352b; font-size: calc(calc(36 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-sub{ color: #7b8780; font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); line-height: 1.6; text-align: center; margin: calc(12 * var(--rpx)) 0 calc(22 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-scroll{ height: 58dvh; min-height: calc(360 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-row{ display: flex; align-items: flex-start; gap: calc(20 * var(--rpx)); padding: calc(18 * var(--rpx)) 0; border-bottom: calc(2 * var(--rpx)) solid #eef2f0; }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-label{ flex: none; width: calc(176 * var(--rpx)); color: #68766e; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-value{ flex: 1; min-width: 0; color: #1c2b24; font-size: calc(calc(27 * var(--rpx))*var(--gf-fs,1)); line-height: 1.6; white-space: pre-wrap; word-break: break-all; }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-photos{ flex: 1; display: flex; flex-wrap: wrap; gap: calc(12 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-photo{ width: calc(132 * var(--rpx)); height: calc(100 * var(--rpx)); border-radius: calc(10 * var(--rpx)); background: #eef1ef; }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-empty{ text-align: center; color: #9aa49e; padding: calc(60 * var(--rpx)) 0; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-actions{ display: flex; gap: calc(18 * var(--rpx)); padding-top: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-btn{ flex: 1; text-align: center; border-radius: calc(999 * var(--rpx)); padding: calc(20 * var(--rpx)) 0; font-size: calc(calc(29 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-btn.back{ color: #1f7a46; background: #eef5f1; }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-btn.confirm{ color: #fff; background: #21a45d; }
.mp-page[data-route="pkgclub/pages/form/form"] .preview-btn.off{ opacity: .55; }
.mp-page[data-route="pkgclub/pages/form/form"] /* ===== 自定义日期/时间弹窗（替代系统原生 mp-picker） ===== */
.dt-mask{ position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 80; display: flex; align-items: center; justify-content: center; }
.mp-page[data-route="pkgclub/pages/form/form"] .dt-box{ width: calc(640 * var(--rpx)); background: #fff; border-radius: calc(20 * var(--rpx)); overflow: hidden; }
.mp-page[data-route="pkgclub/pages/form/form"] .dt-head{ display: flex; justify-content: space-between; align-items: center; padding: calc(26 * var(--rpx)) calc(28 * var(--rpx)); font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; border-bottom: calc(1 * var(--rpx)) solid #eee; }
.mp-page[data-route="pkgclub/pages/form/form"] .dt-x{ font-size: calc(calc(40 * var(--rpx))*var(--gf-fs,1)); color: #999; padding: 0 calc(8 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .dt-pv{ height: calc(420 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .dt-cell{ height: 44px; line-height: 44px; text-align: center; font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); }
.mp-page[data-route="pkgclub/pages/form/form"] .dt-foot{ display: flex; gap: calc(20 * var(--rpx)); padding: calc(22 * var(--rpx)) calc(28 * var(--rpx)) calc(28 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .dt-btn{ flex: 1; text-align: center; padding: calc(18 * var(--rpx)) 0; border-radius: calc(12 * var(--rpx)); font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); }
.mp-page[data-route="pkgclub/pages/form/form"] .dt-btn.plain{ background: #f2f3f5; color: #333; }
.mp-page[data-route="pkgclub/pages/form/form"] .dt-btn.ok{ background: #21a45d; color: #fff; }
.mp-page[data-route="pkgclub/pages/form/form"] /* ===== 与果夫结算价（2026-10-25 合并到挂牌价每行） ===== */
.se{ margin: calc(10 * var(--rpx)) 0 calc(6 * var(--rpx)); background: #f0f7ff; border: calc(1 * var(--rpx)) solid #bcd6f5; border-radius: calc(12 * var(--rpx)); padding: calc(14 * var(--rpx)) calc(16 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .se-t{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; color: #2f6fb3; margin-bottom: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .se-row{ display: flex; align-items: center; gap: calc(10 * var(--rpx)); margin-bottom: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .se-row:last-child{ margin-bottom: 0; }
.mp-page[data-route="pkgclub/pages/form/form"] .se-row .inp{ flex: 1; min-width: 0; }
.mp-page[data-route="pkgclub/pages/form/form"] .se-eq{ color: #666; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); }
.mp-page[data-route="pkgclub/pages/form/form"] .inp.ro{ background: #f7f9f8; color: #1f7a46; font-weight: 600; }
.mp-page[data-route="pkgclub/pages/form/form"] /* 时间平铺网格（2026-10-25 晚：点选即定，15 分钟一档） */
.dt-grid{ height: calc(480 * var(--rpx)); padding: calc(12 * var(--rpx)) calc(20 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pkgclub/pages/form/form"] .dt-gcell{ display: inline-block; width: 25%; box-sizing: border-box; padding: calc(16 * var(--rpx)) 0; text-align: center; font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); color: #333; border-radius: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/form/form"] .dt-gcell.on{ background: #21a45d; color: #fff; font-weight: 600; }

/* ===== pkgclub/pages/history/history.wxss ===== */
.mp-page[data-route="pkgclub/pages/history/history"] /* pkgclub/pages/history/history.wxss */
/* pkgclub/pages/history/history.wxss */
.page{ min-height: 100dvh; background: #f5f6f7; padding: calc(24 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pkgclub/pages/history/history"] .loading{ text-align: center; color: #9aa49e; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); padding: calc(60 * var(--rpx)) 0; }
.mp-page[data-route="pkgclub/pages/history/history"] .card{ background: #fff; border-radius: calc(20 * var(--rpx)); padding: calc(32 * var(--rpx)) calc(28 * var(--rpx)); margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/history/history"] .card.center{ text-align: center; padding: calc(60 * var(--rpx)) calc(40 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/history/history"] .big{ font-size: calc(calc(64 * var(--rpx))*var(--gf-fs,1)); }
.mp-page[data-route="pkgclub/pages/history/history"] .t{ font-size: calc(calc(34 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; margin-top: calc(12 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/history/history"] .s{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; line-height: 1.7; margin: calc(12 * var(--rpx)) 0 calc(28 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/history/history"] .btn{ display: inline-block; background: #21a45d; color: #fff; font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); font-weight: 600; padding: calc(18 * var(--rpx)) calc(60 * var(--rpx)); border-radius: calc(999 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/history/history"] .btn.ghost{ background: #eef5f1; color: #1f7a46; }
.mp-page[data-route="pkgclub/pages/history/history"] .it-head{ display: flex; justify-content: space-between; align-items: flex-start; }
.mp-page[data-route="pkgclub/pages/history/history"] .it-no{ font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; }
.mp-page[data-route="pkgclub/pages/history/history"] .it-time{ font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #8b968f; margin-top: calc(6 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/history/history"] .it-by{ font-size: calc(calc(22 * var(--rpx))*var(--gf-fs,1)); color: #9aa49e; margin-top: calc(4 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/history/history"] .it-right{ text-align: right; }
.mp-page[data-route="pkgclub/pages/history/history"] .badge{ display: inline-block; font-size: calc(calc(22 * var(--rpx))*var(--gf-fs,1)); border-radius: calc(999 * var(--rpx)); padding: calc(6 * var(--rpx)) calc(18 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/history/history"] .st-pending{ background: #fff8e6; color: #8a6d1a; }
.mp-page[data-route="pkgclub/pages/history/history"] .st-approved{ background: #e3f3ea; color: #1f7a46; }
.mp-page[data-route="pkgclub/pages/history/history"] .st-rejected{ background: #fdeaea; color: #b3453c; }
.mp-page[data-route="pkgclub/pages/history/history"] .st-superseded{ background: #eef1f3; color: #6b7670; }
.mp-page[data-route="pkgclub/pages/history/history"] .st-cancelled{ background: #eef1f3; color: #6b7670; }
.mp-page[data-route="pkgclub/pages/history/history"] .it-fold{ font-size: calc(calc(22 * var(--rpx))*var(--gf-fs,1)); color: #1f7a46; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/history/history"] .it-lines{ margin-top: calc(20 * var(--rpx)); border-top: calc(2 * var(--rpx)) solid #eef1ef; padding-top: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/history/history"] .ln{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #4c5a52; line-height: 1.8; }
.mp-page[data-route="pkgclub/pages/history/history"] .ln.none{ color: #9aa49e; }

/* ===== pkgclub/pages/orders/orders.wxss ===== */
.mp-page[data-route="pkgclub/pages/orders/orders"] /* pkgclub/pages/orders/orders.wxss */
/* pkgclub/pages/orders/orders.wxss —— 球会销售订单列表（㊿+63） */
/* 🔴 约束 1：字号一律 calc(Nrpx*var(--gf-fs,.mp-page[data-route="pkgclub/pages/orders/orders"] 1))，跟随微信系统字号 */
.page{ min-height: 100dvh; background: #f5f6f7; padding: calc(24 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .card{ background: #fff; border-radius: calc(20 * var(--rpx)); padding: calc(32 * var(--rpx)) calc(28 * var(--rpx)); margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/orders/orders"] .card.center{ text-align: center; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .big{ font-size: calc(calc(64 * var(--rpx))*var(--gf-fs,1)); margin-bottom: calc(12 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/orders/orders"] .t{ font-size: calc(calc(34 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; margin-bottom: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/orders/orders"] .s{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; line-height: 1.7; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .loading{ text-align: center; color: #9aa49e; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); padding: calc(80 * var(--rpx)) 0; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .btn{ display: inline-block; margin-top: calc(24 * var(--rpx)); background: #21a45d; color: #fff; font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); padding: calc(16 * var(--rpx)) calc(56 * var(--rpx)); border-radius: calc(999 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/orders/orders"] .btn.ghost{ background: #eef5f1; color: #1f7a46; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .tabs{ display: flex; background: #fff; border-radius: calc(16 * var(--rpx)); padding: calc(8 * var(--rpx)); margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/orders/orders"] .tab{ flex: 1; text-align: center; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; padding: calc(16 * var(--rpx)) 0; border-radius: calc(12 * var(--rpx)); position: relative; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .tab.on{ background: #e3f3ea; color: #1f7a46; font-weight: 600; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .badge{ position: absolute; top: calc(2 * var(--rpx)); right: calc(8 * var(--rpx)); min-width: calc(30 * var(--rpx)); height: calc(30 * var(--rpx)); line-height: calc(30 * var(--rpx)); border-radius: calc(999 * var(--rpx)); background: #e5533d; color: #fff; font-size: calc(calc(20 * var(--rpx))*var(--gf-fs,1)); text-align: center; padding: 0 calc(6 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/orders/orders"] .order .o-head{ display: flex; justify-content: space-between; align-items: center; margin-bottom: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-date{ font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-time{ font-weight: 400; color: #6b7670; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-state{ font-size: calc(calc(22 * var(--rpx))*var(--gf-fs,1)); padding: calc(6 * var(--rpx)) calc(16 * var(--rpx)); border-radius: calc(999 * var(--rpx)); background: #f2f4f3; color: #6b7670; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-state.st-pending{ background: #fff3e0; color: #c47f17; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-state.st-awaiting{ background: #e8f0fe; color: #3367c9; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-state.st-confirmed{ background: #e3f3ea; color: #1f7a46; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-state.st-canceled{ background: #f2f4f3; color: #9aa49e; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-course{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; margin-bottom: calc(12 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-row{ display: flex; justify-content: space-between; align-items: center; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-guest{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #1c2b24; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-amt{ font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; }
.mp-page[data-route="pkgclub/pages/orders/orders"] .o-tip{ margin-top: calc(16 * var(--rpx)); font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #c47f17; }

/* ===== pkgclub/pages/order-detail/order-detail.wxss ===== */
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] /* pkgclub/pages/order-detail/order-detail.wxss */
/* pkgclub/pages/order-detail/order-detail.wxss —— 球会销售订单详情（㊿+63） */
/* 🔴 约束 1：字号一律 calc(Nrpx*var(--gf-fs,.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] 1))，跟随微信系统字号 */
.page{ min-height: 100dvh; background: #f5f6f7; padding: calc(24 * var(--rpx)); box-sizing: border-box; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .loading{ text-align: center; color: #9aa49e; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); padding: calc(80 * var(--rpx)) 0; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .card{ background: #fff; border-radius: calc(20 * var(--rpx)); padding: calc(32 * var(--rpx)) calc(28 * var(--rpx)); margin-bottom: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .card.center{ text-align: center; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .c-t{ font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; margin-bottom: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .c-s{ font-size: calc(calc(24 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; line-height: 1.7; margin-top: calc(10 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .c-s.ok{ color: #1f7a46; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .c-s.warn{ color: #c47f17; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .s{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; line-height: 1.7; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .banner{ border-radius: calc(20 * var(--rpx)); padding: calc(36 * var(--rpx)) calc(28 * var(--rpx)); margin-bottom: calc(24 * var(--rpx)); background: #fff3e0; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .banner.st-confirmed{ background: #e3f3ea; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .banner.st-awaiting{ background: #e8f0fe; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .banner.st-canceled,.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .banner.st-no_slot{ background: #f2f4f3; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .b-state{ font-size: calc(calc(36 * var(--rpx))*var(--gf-fs,1)); font-weight: 700; color: #1c2b24; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .b-sub{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #6b7670; margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .kv{ display: flex; justify-content: space-between; align-items: flex-start; padding: calc(12 * var(--rpx)) 0; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .kv .k{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #9aa49e; flex-shrink: 0; margin-right: calc(24 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .kv .v{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #1c2b24; text-align: right; flex: 1; word-break: break-all; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .kv .v.mute{ color: #9aa49e; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .kv .v.link{ color: #1f7a46; font-weight: 600; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .alt{ display: flex; justify-content: space-between; align-items: center; background: #f4f6f5; border-radius: calc(12 * var(--rpx)); padding: calc(18 * var(--rpx)) calc(20 * var(--rpx)); margin-bottom: calc(12 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .alt-txt{ font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #1c2b24; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .alt-pick{ font-size: calc(calc(22 * var(--rpx))*var(--gf-fs,1)); color: #1f7a46; font-weight: 600; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .btn{ display: block; text-align: center; font-size: calc(calc(28 * var(--rpx))*var(--gf-fs,1)); padding: calc(22 * var(--rpx)) 0; border-radius: calc(999 * var(--rpx)); margin-top: calc(20 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .btn.solid{ background: #21a45d; color: #fff; font-weight: 600; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .btn.solid.small{ padding: calc(16 * var(--rpx)) 0; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .btn.ghost{ background: #eef5f1; color: #1f7a46; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .btn.danger-ghost{ background: #fbf1ef; color: #b64a32; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .btn.dis{ opacity: .45; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .adjust{ margin-top: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .pick-row{ display: flex; align-items: center; margin: calc(16 * var(--rpx)) 0; }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .pick{ flex: 1; background: #f4f6f5; border: calc(2 * var(--rpx)) solid #e2e8e4; border-radius: calc(14 * var(--rpx)); padding: calc(18 * var(--rpx)) calc(20 * var(--rpx)); font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); color: #1c2b24; text-align: center; margin-right: calc(16 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .slot{ margin-bottom: calc(8 * var(--rpx)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .slot-x{ width: calc(56 * var(--rpx)); text-align: center; color: #b64a32; font-size: calc(calc(30 * var(--rpx))*var(--gf-fs,1)); }
.mp-page[data-route="pkgclub/pages/order-detail/order-detail"] .slot-add{ text-align: center; color: #1f7a46; font-size: calc(calc(26 * var(--rpx))*var(--gf-fs,1)); padding: calc(16 * var(--rpx)) 0; }

/* ===== components/course-card/course-card.wxss ===== */
.mp-custom-components-course-card-course-card /* components/course-card/course-card.wxss */
.cc{ display: flex; padding: calc(20 * var(--rpx)); margin-bottom: calc(20 * var(--rpx)); }
.mp-custom-components-course-card-course-card .cc-img{ width: calc(220 * var(--rpx)); height: calc(220 * var(--rpx)); border-radius: calc(12 * var(--rpx)); flex-shrink: 0; background: #eee; }
.mp-custom-components-course-card-course-card .cc-body{ flex: 1; margin-left: calc(20 * var(--rpx)); display: flex; flex-direction: column; min-width: 0; }
.mp-custom-components-course-card-course-card .cc-name{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.mp-custom-components-course-card-course-card .cc-badge{ margin-top: calc(6 * var(--rpx)); align-self: flex-start; font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #8a5a00; background: linear-gradient(90deg,#fff3d6,#ffe9b8); border: calc(1 * var(--rpx)) solid #f0d9a0; border-radius: calc(6 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(10 * var(--rpx)); }
.mp-custom-components-course-card-course-card .cc-meta{ margin-top: calc(8 * var(--rpx)); display: flex; align-items: center; }
.mp-custom-components-course-card-course-card .cc-region{ color: #888; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); margin-left: calc(16 * var(--rpx)); }
.mp-custom-components-course-card-course-card .cc-tags{ margin-top: calc(10 * var(--rpx)); display: flex; flex-wrap: wrap; gap: calc(8 * var(--rpx)); }
.mp-custom-components-course-card-course-card .cc-tag{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #3b6d11; background: #eef4e6; border-radius: calc(6 * var(--rpx)); padding: calc(4 * var(--rpx)) calc(10 * var(--rpx)); margin-right: calc(8 * var(--rpx)); }
.mp-custom-components-course-card-course-card .cc-bottom{ margin-top: auto; display: flex; align-items: flex-end; justify-content: space-between; }
.mp-custom-components-course-card-course-card .cc-holes{ color: #999; font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); }
.mp-custom-components-course-card-course-card .cc-unit{ color: #999; font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); margin-left: calc(4 * var(--rpx)); }
.mp-custom-components-course-card-course-card /* 电询球场：不露 ¥0，与列表页/首页口径一致 */
.price .inquiry{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #d97706; font-weight: 600; }

/* ===== components/date-picker/date-picker.wxss ===== */
.mp-custom-components-date-picker-date-picker /* components/date-picker/date-picker.wxss */
/* 上拉日期选择弹层 */
.dp-mask{
  position: fixed; inset: 0;
  background: rgba(0, 0, 0, 0.5);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s;
  z-index: 1000;
}
.mp-custom-components-date-picker-date-picker .dp-mask.on{ opacity: 1; visibility: visible; }
.mp-custom-components-date-picker-date-picker .dp-sheet{
  position: fixed;
  left: 0; right: 0; bottom: 0;
  background: #fff;
  border-radius: calc(28 * var(--rpx)) calc(28 * var(--rpx)) 0 0;
  transform: translateY(100%);
  transition: transform 0.3s ease;
  z-index: 1001;
  display: flex;
  flex-direction: column;
  height: 72dvh;
}
.mp-custom-components-date-picker-date-picker .dp-sheet.on{ transform: translateY(0); }
.mp-custom-components-date-picker-date-picker /* 嵌入模式（2026-10-09）：宿主弹层内复用同款日历。
   去掉弹壳的固定定位/圆角/高度，flex 撑满宿主容器（.bk-calwrap 之类）。 */
.dp-sheet.emb{
  position: static;
  height: auto;
  max-height: none;
  transform: none;
  border-radius: 0;
  z-index: auto;
  background: transparent;
  /* 🔴 2026-10-09：宿主给组件标签写了 flex:1/min-height:0，
     组件**根节点**就是 .dp-sheet，必须自己也撑满组件标签给的可用高度，
     否则内部 .dp-body（scroll-view）仍然按内容全高算 → 滑不动。 */
  flex: 1;
  min-height: 0;
  width: 100%;
  display: flex;
  flex-direction: column;
  /* 兜底：内容再长也不许顶破宿主弹层 */
  overflow: hidden;
  padding-top: calc(8 * var(--rpx));
}
.mp-custom-components-date-picker-date-picker /* 标题 */
.dp-head{
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(36 * var(--rpx)) 0 calc(28 * var(--rpx));
  flex-shrink: 0;
}
.mp-custom-components-date-picker-date-picker .dp-title{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #222; }
.mp-custom-components-date-picker-date-picker /* 价格口径说明行（2026-10-08）：告诉用户日历里的数字是「会员价」还是「嘉宾价」，
   不写任何计算方式（无折扣率/公式）。 */
.dp-note{
  display: flex; align-items: center; gap: calc(12 * var(--rpx));
  margin: calc(-8 * var(--rpx)) calc(36 * var(--rpx)) calc(8 * var(--rpx));
  padding: calc(12 * var(--rpx)) calc(18 * var(--rpx));
  background: #fdf6e6; border-radius: calc(12 * var(--rpx));
}
.mp-custom-components-date-picker-date-picker .dp-note-k{
  flex: none;
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #fff;
  background: #d9483b; border-radius: calc(6 * var(--rpx)); padding: calc(2 * var(--rpx)) calc(10 * var(--rpx)); font-weight: 600;
}
.mp-custom-components-date-picker-date-picker .dp-note-t{
  flex: 1; min-width: 0;
  font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1)); color: #8a6d2f; line-height: 1.5;
}
.mp-custom-components-date-picker-date-picker /* 天气来源说明（2026-10-11）：比价格口径行更轻，纯文字、不抢视觉重心。
   flex-shrink:0 —— 它和 .dp-week 一样是不可压缩的「头部 chrome」，
   下面的 .dp-body 才是滚动区（见 .dp-sheet.emb 的注释）。 */
.dp-src{
  flex-shrink: 0;
  margin: calc(-2 * var(--rpx)) calc(36 * var(--rpx)) calc(8 * var(--rpx));
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1));
  color: #999;
  line-height: 1.5;
}
.mp-custom-components-date-picker-date-picker .dp-close{
  position: absolute;
  right: calc(36 * var(--rpx)); top: 50%;
  transform: translateY(-50%);
  width: calc(44 * var(--rpx)); height: calc(44 * var(--rpx));
}
.mp-custom-components-date-picker-date-picker .dp-x1,.mp-custom-components-date-picker-date-picker .dp-x2{
  position: absolute;
  left: 50%; top: 50%;
  width: calc(32 * var(--rpx)); height: calc(3 * var(--rpx));
  background: #999;
  border-radius: calc(2 * var(--rpx));
}
.mp-custom-components-date-picker-date-picker .dp-x1{ transform: translate(-50%, -50%) rotate(45deg); }
.mp-custom-components-date-picker-date-picker .dp-x2{ transform: translate(-50%, -50%) rotate(-45deg); }
.mp-custom-components-date-picker-date-picker /* 周头 */
.dp-week{
  display: flex;
  padding: 0 calc(20 * var(--rpx)) calc(16 * var(--rpx));
  border-bottom: calc(1 * var(--rpx)) solid #f0f0f0;
  flex-shrink: 0;
}
.mp-custom-components-date-picker-date-picker .dp-wh{ flex: 1; text-align: center; font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; }
.mp-custom-components-date-picker-date-picker .dp-wh.we{ color: #ff7a45; }
.mp-custom-components-date-picker-date-picker /* 月份列表 */
/* 🔴 2026-10-09：滚动区必须显式声明纵向滚动内容高度来源。
   flex:1 + min-height:0 是让 mp-scroll-view 拿到「父容器确定高度 − 其它 chrome」的行程；
   缺 min-height:0 时 flex item 不会收缩到内容高度以下，scroll-view 会拿到全高 → 滑不动。 */
.dp-body{ flex: 1; min-height: 0; height: 100%; }
.mp-custom-components-date-picker-date-picker .dp-month{ margin-bottom: calc(10 * var(--rpx)); }
.mp-custom-components-date-picker-date-picker .dp-mtitle{
  background: #f5f5f5;
  padding: calc(20 * var(--rpx)) calc(32 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600;
  color: #333;
}
.mp-custom-components-date-picker-date-picker /* 日期网格 */
.dp-grid{ display: flex; flex-wrap: wrap; padding: calc(16 * var(--rpx)) calc(20 * var(--rpx)) calc(8 * var(--rpx)); }
.mp-custom-components-date-picker-date-picker .dp-cell{
  width: calc(100% / 7);
  display: flex;
  justify-content: center;
  padding: calc(8 * var(--rpx)) 0;
}
.mp-custom-components-date-picker-date-picker .dp-day{
  width: calc(88 * var(--rpx));
  min-height: calc(96 * var(--rpx));
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  color: #333;
  border-radius: calc(14 * var(--rpx));
  padding: calc(8 * var(--rpx)) 0;
  box-sizing: border-box;
}
.mp-custom-components-date-picker-date-picker .dp-day.we{ color: #ff7a45; }
.mp-custom-components-date-picker-date-picker .dp-day.dis{ color: #c8c8c8; }
.mp-custom-components-date-picker-date-picker /* 日期数字 */
.dp-d{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); line-height: 1.15; }
.mp-custom-components-date-picker-date-picker /* 每天天气（详情页传入 weathers 时显示） */
.dp-w{ font-size: calc(calc(18 * var(--rpx)) * var(--gf-fs, 1)); color: #6f8a9e; line-height: 1.25; margin-top: calc(2 * var(--rpx)); }
.mp-custom-components-date-picker-date-picker .dp-day.dis .dp-w{ color: #cccccc; }
.mp-custom-components-date-picker-date-picker /* 每日最低价（详情页传入 prices 时显示） */
.dp-p{ font-size: calc(calc(18 * var(--rpx)) * var(--gf-fs, 1)); color: #ff6b2b; line-height: 1.25; margin-top: calc(2 * var(--rpx)); }
.mp-custom-components-date-picker-date-picker /* 今天：蓝色徽标 */
.dp-day.today{
  background: #3b7bff;
  color: #fff;
  border-radius: calc(16 * var(--rpx));
}
.mp-custom-components-date-picker-date-picker .dp-day.today .dp-w{ color: rgba(255, 255, 255, 0.92); }
.mp-custom-components-date-picker-date-picker .dp-day.today .dp-p{ color: #fff; }
.mp-custom-components-date-picker-date-picker .dp-t2{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #3b7bff; line-height: 1.15; margin-top: calc(2 * var(--rpx)); font-weight: 500; }
.mp-custom-components-date-picker-date-picker .dp-day.today .dp-t2{ color: rgba(255, 255, 255, 0.95); }
.mp-custom-components-date-picker-date-picker .dp-day.sel .dp-t2{ color: rgba(255, 255, 255, 0.95); }
.mp-custom-components-date-picker-date-picker /* 已选日期：绿框高亮（与旧套餐日历 .bm-cell.sel 同视觉，嵌入模式由宿主传 selected）
   🔴 2026-10-09：原来 wxml 里 sel 的条件带 `&& !cell.today`，
   导致「今天」永远拿不到选中态，且今天恒为蓝底、视觉上盖过选中态 ——
   用户点了别的日期，回头看到高亮还留在今天，误以为没生效。
   现在：① sel 不再排除 today；② today 未被选中时才上蓝底；
        ③ 选中态加粗到整格实心绿，明显强于蓝底。 */
.dp-day.sel{
  background: #21a45d;
  box-shadow: inset 0 0 0 calc(3 * var(--rpx)) #21a45d;
}
.mp-custom-components-date-picker-date-picker .dp-day.sel .dp-d,.mp-custom-components-date-picker-date-picker .dp-day.sel .dp-t2{ color: #fff; font-weight: 700; }
.mp-custom-components-date-picker-date-picker .dp-day.sel .dp-w{ color: rgba(255, 255, 255, 0.92); }
.mp-custom-components-date-picker-date-picker .dp-day.sel .dp-p{ color: #fff; }
.mp-custom-components-date-picker-date-picker .dp-pad{ height: calc(40 * var(--rpx)); }

/* ===== components/filter-panel/filter-panel.wxss ===== */
.mp-custom-components-filter-panel-filter-panel /* components/filter-panel/filter-panel.wxss */
/* 筛选下拉面板 */
.fp-mask{
  position: fixed;
  left: 0; right: 0; top: 0; bottom: 0;
  background: rgba(0, 0, 0, 0.35);
  z-index: 40;
}
.mp-custom-components-filter-panel-filter-panel .fp{
  position: fixed;
  left: 0; right: 0; bottom: 0;
  background: #fff;
  border-radius: calc(20 * var(--rpx)) calc(20 * var(--rpx)) 0 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  z-index: 50;
  animation: fpIn 0.22s ease-out;
}

@keyframes fpIn { from { opacity: 0; transform: translateY(calc(-14 * var(--rpx))); } to { opacity: 1; transform: none; } }
.mp-custom-components-filter-panel-filter-panel .fp-body{ flex: 1; display: flex; overflow: hidden; }
.mp-custom-components-filter-panel-filter-panel /* 左侧分类导航 */
.side{
  width: calc(176 * var(--rpx));
  flex-shrink: 0;
  height: 100%;
  background: #f4f5f6;
}
.mp-custom-components-filter-panel-filter-panel .side-item{
  height: calc(100 * var(--rpx));
  line-height: calc(100 * var(--rpx));
  text-align: center;
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1));
  color: #555;
  position: relative;
}
.mp-custom-components-filter-panel-filter-panel .side-item.on{ background: #fff; color: #111; font-weight: 700; }
.mp-custom-components-filter-panel-filter-panel .side-item.on::before{
  content: '';
  position: absolute;
  left: 0; top: calc(26 * var(--rpx)); bottom: calc(26 * var(--rpx));
  width: calc(6 * var(--rpx));
  border-radius: calc(3 * var(--rpx));
  background: #21a45d;
}
.mp-custom-components-filter-panel-filter-panel /* 右侧分组 */
.main{ flex: 1; min-width: 0; height: 100%; background: #fff; }
.mp-custom-components-filter-panel-filter-panel .grp{ padding: calc(8 * var(--rpx)) calc(24 * var(--rpx)) 0 calc(32 * var(--rpx)); }
.mp-custom-components-filter-panel-filter-panel .grp-head{ display: flex; align-items: center; padding: calc(28 * var(--rpx)) 0 calc(18 * var(--rpx)); }
.mp-custom-components-filter-panel-filter-panel .grp-title{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #111; }
.mp-custom-components-filter-panel-filter-panel .grp-toggle{ margin-left: auto; font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #3b7bff; }
.mp-custom-components-filter-panel-filter-panel .opts{ display: flex; flex-wrap: wrap; gap: calc(18 * var(--rpx)); }
.mp-custom-components-filter-panel-filter-panel .opt{
  width: calc((100% - calc(36 * var(--rpx))) / 3);
  box-sizing: border-box;
  min-height: calc(76 * var(--rpx));
  padding: calc(10 * var(--rpx)) calc(8 * var(--rpx));
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  background: #f4f5f6;
  border-radius: calc(8 * var(--rpx));
  font-size: calc(calc(25 * var(--rpx)) * var(--gf-fs, 1));
  color: #333;
  line-height: 1.3;
  word-break: break-all;
}
.mp-custom-components-filter-panel-filter-panel .opt.on{ background: #21a45d; color: #fff; font-weight: 600; }
.mp-custom-components-filter-panel-filter-panel .opt.hide{ display: none; }
.mp-custom-components-filter-panel-filter-panel .pad-bottom{ height: calc(40 * var(--rpx)); }
.mp-custom-components-filter-panel-filter-panel /* 底部 重置/确认 */
.footbar{
  display: flex;
  gap: calc(24 * var(--rpx));
  padding: calc(16 * var(--rpx)) calc(24 * var(--rpx)) calc(calc(16 * var(--rpx)) + env(safe-area-inset-bottom));
  background: #fff;
  border-top: calc(1 * var(--rpx)) solid #f0f0f0;
  flex-shrink: 0;
}
.mp-custom-components-filter-panel-filter-panel .fbtn{
  flex: 1;
  height: calc(84 * var(--rpx));
  line-height: calc(84 * var(--rpx));
  text-align: center;
  border-radius: calc(12 * var(--rpx));
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600;
}
.mp-custom-components-filter-panel-filter-panel .fbtn.reset{ background: #fff; color: #333; border: calc(1 * var(--rpx)) solid #ddd; }
.mp-custom-components-filter-panel-filter-panel .fbtn.ok{ background: #21a45d; color: #fff; }

/* ===== components/manager-sheet/manager-sheet.wxss ===== */
.mp-custom-components-manager-sheet-manager-sheet /* components/manager-sheet/manager-sheet.wxss */
/* pages/manager/manager.wxss —— 客户经理面板
   视觉参考：用户截图（底部上滑的白色圆角面板 / 左上 ✕ / 居中标题 / 两张卡片）。
   🔴 字号铁律：所有 font-size 必须走 calc(Nrpx * var(--gf-fs,.mp-custom-components-manager-sheet-manager-sheet 1))，禁写死 rpx。
   🔴 顶部定位用 --mgr-safe-top（真实状态栏 px，由 wxml 注入 navx.statusBarHeight），
      禁用 env(safe-area-inset-top) —— 安卓恒 0，会把内容顶进状态栏（见 utils/navbar.js）。 */

/* 页面本身透明：露出的部分就是遮罩色，营造「面板盖在上一页之上」的观感 */
/* 🔴 隐藏态（show=false）：关掉 pointer-events + visibility:hidden，
   否则这个 fixed 全屏根元素会盖在宿主页之上、吞掉所有触摸，导致首页划不动/点不动。
   .in（show=true）才恢复可见与交互；独立页 manager 始终 show=true，无副作用。 */
.page{ position: fixed; left: 0; right: 0; top: 0; bottom: 0; visibility: hidden; pointer-events: none; }
.mp-custom-components-manager-sheet-manager-sheet .page.in{ visibility: visible; pointer-events: auto; }
.mp-custom-components-manager-sheet-manager-sheet /* ===== 遮罩：点击面板以外的区域收起 ===== */
.mgr-mask{
  position: fixed; left: 0; right: 0; top: 0; bottom: 0;
  background: rgba(0, 0, 0, .45);
  opacity: 0;
  /* 🔴 模态半屏弹层要盖住 custom-tab-bar(1000)：
     曾压在 tab bar 之下(500/501)，第二条电话线路整行被 tab bar 盖住（2026-10-12 用户反馈）。
     宿主页 sticky 头最高 z-index=100 → 1100 稳压一切页面内容 */
  z-index: 1100;
}
.mp-custom-components-manager-sheet-manager-sheet .mgr-mask.in{ animation: mgrMaskIn .28s ease forwards; }
.mp-custom-components-manager-sheet-manager-sheet /* ===== 面板本体 ===== */
.mgr-sheet{
  position: fixed; left: 0; right: 0; bottom: 0;
  z-index: 1101;
  /* 🔴 不设 top：高度随内容自适应（头部 + 两张卡片），下方露出遮罩 ——
     曾因撑满整屏在卡片下留出一大块空白（2026-10-11 用户反馈砍掉） */
  background: #fff;
  border-radius: calc(28 * var(--rpx)) calc(28 * var(--rpx)) 0 0;
  overflow: hidden;
  display: flex; flex-direction: column;
  /* 底部留白 = calc(88 * var(--rpx)) + iPhone 底部小黑条安全区（env 禁令只针对顶部，底部可用）——
     盖住 tab bar 后若不加，号码行会贴到屏幕底边；2026-10-12 用户反馈贴底 → 40→calc(88 * var(--rpx)) */
  padding-bottom: calc(calc(88 * var(--rpx)) + env(safe-area-inset-bottom));
  box-sizing: border-box;
  transform: translateY(100%);                     /* 初始在屏幕外 */
}
.mp-custom-components-manager-sheet-manager-sheet .mgr-sheet.in{ animation: mgrSheetUp .34s cubic-bezier(.22, .8, .3, 1) forwards; }


@keyframes mgrSheetUp { from { transform: translateY(100%); } to { transform: translateY(0); } }

@keyframes mgrMaskIn  { from { opacity: 0; } to { opacity: 1; } }
.mp-custom-components-manager-sheet-manager-sheet /* ===== 头部：左 ✕ + 居中标题（与截图一致） ===== */
.mgr-head{
  position: relative; flex: 0 0 auto;
  height: calc(104 * var(--rpx));
  display: flex; align-items: center; justify-content: center;
}
.mp-custom-components-manager-sheet-manager-sheet .mgr-title{ font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #1a1a1a; }
.mp-custom-components-manager-sheet-manager-sheet /* ✕ 用两条线画（字符 ✕ 在不同机型字体/粗细不一致）；热区 calc(88 * var(--rpx)) ≈ 44px */
.mgr-close{ position: absolute; left: calc(12 * var(--rpx)); top: 50%; width: calc(88 * var(--rpx)); height: calc(88 * var(--rpx)); margin-top: calc(-44 * var(--rpx)); }
.mp-custom-components-manager-sheet-manager-sheet .mgr-close::before,.mp-custom-components-manager-sheet-manager-sheet .mgr-close::after{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(34 * var(--rpx)); height: calc(3 * var(--rpx)); margin: calc(-1.5 * var(--rpx)) 0 0 calc(-17 * var(--rpx));
  background: #3a3f45; border-radius: calc(2 * var(--rpx));
}
.mp-custom-components-manager-sheet-manager-sheet .mgr-close::before{ transform: rotate(45deg); }
.mp-custom-components-manager-sheet-manager-sheet .mgr-close::after{ transform: rotate(-45deg); }
.mp-custom-components-manager-sheet-manager-sheet /* ===== 卡片之间的浅灰分隔（截图里卡片之间是灰缝，不是描边） ===== */
.mgr-gap{ flex: 0 0 auto; height: calc(18 * var(--rpx)); background: #f2f3f5; }
.mp-custom-components-manager-sheet-manager-sheet /* ===== 卡片 ===== */
.mgr-card{
  flex: 0 0 auto;
  display: flex; align-items: center;
  padding: calc(40 * var(--rpx)) calc(32 * var(--rpx));
  background: #fff;
}
.mp-custom-components-manager-sheet-manager-sheet .mgr-card-col{ flex-direction: column; align-items: stretch; }
.mp-custom-components-manager-sheet-manager-sheet .mgr-card-row{ display: flex; align-items: center; }
.mp-custom-components-manager-sheet-manager-sheet /* 🔴 flex 子项默认 min-width:auto → 文字长了会把图标挤出去，必须显式 min-width:0 */
.mgr-card-body{ flex: 1; min-width: 0; }
.mp-custom-components-manager-sheet-manager-sheet .mgr-card-t{ font-size: calc(calc(38 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 700; color: #1a1a1a; }
.mp-custom-components-manager-sheet-manager-sheet .mgr-card-s{ font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #9aa0a6; margin-top: calc(14 * var(--rpx)); }
.mp-custom-components-manager-sheet-manager-sheet .mgr-card-s2{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #3a3f45; margin-top: calc(14 * var(--rpx)); }
.mp-custom-components-manager-sheet-manager-sheet /* ===== 图标：品牌绿圆底 + 白色图形（纯 CSS，零新增图片资源） ===== */
.mgr-ico{
  position: relative; flex: 0 0 calc(64 * var(--rpx));
  width: calc(64 * var(--rpx)); height: calc(64 * var(--rpx)); margin-left: calc(20 * var(--rpx));
  background: #21a45d; border-radius: 50%;
}
.mp-custom-components-manager-sheet-manager-sheet /* 卡片 1：对话气泡（圆角方块 + 左下小尾巴） */
.mgr-ico-chat::before{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(32 * var(--rpx)); height: calc(26 * var(--rpx)); margin: calc(-16 * var(--rpx)) 0 0 calc(-16 * var(--rpx));
  background: #fff; border-radius: calc(9 * var(--rpx));
}
.mp-custom-components-manager-sheet-manager-sheet .mgr-ico-chat::after{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: 0; height: 0; margin: calc(8 * var(--rpx)) 0 0 calc(-14 * var(--rpx));
  border: calc(6 * var(--rpx)) solid transparent; border-top-color: #fff; border-left-width: 0;
}
.mp-custom-components-manager-sheet-manager-sheet /* 卡片 2：听筒（斜杆 + 两端圆点 = 哑铃状，即听筒的抽象形） */
.mgr-ico-phone::before{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(30 * var(--rpx)); height: calc(10 * var(--rpx)); margin: calc(-5 * var(--rpx)) 0 0 calc(-15 * var(--rpx));
  background: #fff; border-radius: calc(5 * var(--rpx));
  transform: rotate(-45deg);
}
.mp-custom-components-manager-sheet-manager-sheet .mgr-ico-phone::after{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(17 * var(--rpx)); height: calc(17 * var(--rpx)); margin: calc(-19 * var(--rpx)) 0 0 calc(-19 * var(--rpx));
  background: #fff; border-radius: 50%;
  box-shadow: calc(21 * var(--rpx)) calc(21 * var(--rpx)) 0 0 #fff;
}
.mp-custom-components-manager-sheet-manager-sheet /* ===== 号码行（两行各自可点拨号） ===== */
.mgr-phones{ margin-top: calc(26 * var(--rpx)); }
.mp-custom-components-manager-sheet-manager-sheet /* 分隔线用独立节点：WXSS 对 :last-child 不可靠，靠行自身 border 会多一条 */
.mgr-phone-line{ height: calc(1 * var(--rpx)); background: #f0f1f3; }
.mp-custom-components-manager-sheet-manager-sheet .mgr-phone{ display: flex; align-items: center; padding: calc(24 * var(--rpx)) 0; }
.mp-custom-components-manager-sheet-manager-sheet .mgr-phone-ico{
  position: relative; flex: 0 0 calc(44 * var(--rpx));
  width: calc(44 * var(--rpx)); height: calc(44 * var(--rpx)); margin-right: calc(20 * var(--rpx));
  background: #21a45d; border-radius: 50%;
}
.mp-custom-components-manager-sheet-manager-sheet .mgr-phone-ico::before{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(20 * var(--rpx)); height: calc(7 * var(--rpx)); margin: calc(-3.5 * var(--rpx)) 0 0 calc(-10 * var(--rpx));
  background: #fff; border-radius: calc(4 * var(--rpx));
  transform: rotate(-45deg);
}
.mp-custom-components-manager-sheet-manager-sheet .mgr-phone-ico::after{
  content: ''; position: absolute; left: 50%; top: 50%;
  width: calc(12 * var(--rpx)); height: calc(12 * var(--rpx)); margin: calc(-13 * var(--rpx)) 0 0 calc(-13 * var(--rpx));
  background: #fff; border-radius: 50%;
  box-shadow: calc(14 * var(--rpx)) calc(14 * var(--rpx)) 0 0 #fff;
}
.mp-custom-components-manager-sheet-manager-sheet .mgr-phone-num{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); color: #5a6068; }

/* ===== components/slot-choice/slot-choice.wxss ===== */
.mp-custom-components-slot-choice-slot-choice /* components/slot-choice/slot-choice.wxss */
/* 待选候选球位卡 —— 从 pages/orders/track.wxss 整段迁入（2026-10-11），
   两页共用同一份样式，别再在页面里另写一份。
   🔴 字号一律 calc(Nrpx * var(--gf-fs,.mp-custom-components-slot-choice-slot-choice 1))：--gf-fs 由页面根节点提供，
      自定义组件同样能继承（CSS 自定义属性跨组件继承）。 */
:host{ display: block; }
.mp-custom-components-slot-choice-slot-choice .slotcard{
  /* 🔴 只给下外边距：.page 自带 padding: calc(24 * var(--rpx))，卡片若再加左右 margin 会比别的卡窄一截 */
  margin: 0 0 calc(20 * var(--rpx));
  padding: calc(24 * var(--rpx));
  background: #fff8ec;
  border: calc(2 * var(--rpx)) solid #ffd9a0;
  border-radius: calc(20 * var(--rpx));
  box-sizing: border-box;
}
.mp-custom-components-slot-choice-slot-choice .slotcard-h{ display: flex; flex-direction: column; gap: calc(6 * var(--rpx)); }
.mp-custom-components-slot-choice-slot-choice .slotcard-t{
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1));
  font-weight: 600; color: #8a5a00; line-height: 1.5;
}
.mp-custom-components-slot-choice-slot-choice .slotcard-sub{
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #a67c3d;
}
.mp-custom-components-slot-choice-slot-choice .slotcard-tip{
  margin-top: calc(12 * var(--rpx)); padding: calc(12 * var(--rpx)) calc(16 * var(--rpx));
  background: #fff; border-radius: calc(10 * var(--rpx));
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #8a5a00; line-height: 1.6;
}
.mp-custom-components-slot-choice-slot-choice /* 候选选项：整行可点，横向排布 */
.slot-opt{
  display: flex; align-items: center; gap: calc(16 * var(--rpx));
  margin-top: calc(16 * var(--rpx)); padding: calc(20 * var(--rpx)) calc(22 * var(--rpx));
  background: #fff; border: calc(2 * var(--rpx)) solid #f0e0c8; border-radius: calc(14 * var(--rpx));
  min-height: calc(96 * var(--rpx));
  box-sizing: border-box;
}
.mp-custom-components-slot-choice-slot-choice .slot-opt.on{ border-color: #ff9f1a; background: #fffdf7; box-shadow: inset 0 0 0 calc(2 * var(--rpx)) #ff9f1a; }
.mp-custom-components-slot-choice-slot-choice .slot-dot{
  width: calc(20 * var(--rpx)); height: calc(20 * var(--rpx)); border-radius: 50%;
  border: calc(3 * var(--rpx)) solid #d9c3a3; flex-shrink: 0;
}
.mp-custom-components-slot-choice-slot-choice .slot-opt.on .slot-dot{ border-color: #ff9f1a; background: #ff9f1a; }
.mp-custom-components-slot-choice-slot-choice /* 🔴 flex 子项默认 min-width:auto，长文案会把行撑破 → 显式 min-width:0 */
.slot-main{ flex: 1; min-width: 0; }
.mp-custom-components-slot-choice-slot-choice .slot-date{
  font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); color: #333; font-weight: 600; line-height: 1.4;
}
.mp-custom-components-slot-choice-slot-choice .slot-week{ font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1)); color: #999; font-weight: 400; }
.mp-custom-components-slot-choice-slot-choice .slot-time{
  font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); color: #ff7a45; font-weight: 700; line-height: 1.3;
}
.mp-custom-components-slot-choice-slot-choice .slot-check{ font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); color: #ff9f1a; font-weight: 700; flex-shrink: 0; }
.mp-custom-components-slot-choice-slot-choice .slotcard-btns{ display: flex; gap: calc(16 * var(--rpx)); margin-top: calc(22 * var(--rpx)); }
.mp-custom-components-slot-choice-slot-choice .slot-btn{
  flex: 1; height: calc(84 * var(--rpx)); line-height: calc(84 * var(--rpx)); text-align: center;
  border-radius: calc(12 * var(--rpx)); font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600;
}
.mp-custom-components-slot-choice-slot-choice .slot-btn.ghost{ background: #fff; color: #8a5a00; border: calc(2 * var(--rpx)) solid #e0cba6; }
.mp-custom-components-slot-choice-slot-choice .slot-btn.solid{ background: #ff9f1a; color: #fff; }
.mp-custom-components-slot-choice-slot-choice .slot-btn.dis{ background: #e8e8e8; color: #999; }
.mp-custom-components-slot-choice-slot-choice .slotcard-note{
  margin-top: calc(14 * var(--rpx)); font-size: calc(calc(22 * var(--rpx)) * var(--gf-fs, 1));
  color: #a67c3d; line-height: 1.6;
}

/* ===== components/time-picker/time-picker.wxss ===== */
.mp-custom-components-time-picker-time-picker /* components/time-picker/time-picker.wxss */
/* 开球时间 SKU 弹层（与 date-picker 同款外壳） */
.tp-mask{
  position: fixed; inset: 0;
  background: rgba(0, 0, 0, 0.5);
  opacity: 0; visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s;
  z-index: 1000;
}
.mp-custom-components-time-picker-time-picker .tp-mask.on{ opacity: 1; visibility: visible; }
.mp-custom-components-time-picker-time-picker .tp-sheet{
  position: fixed; left: 0; right: 0; bottom: 0;
  background: #fff;
  border-radius: calc(28 * var(--rpx)) calc(28 * var(--rpx)) 0 0;
  transform: translateY(100%);
  transition: transform 0.3s ease;
  z-index: 1001;
  display: flex; flex-direction: column;
  height: 78dvh;
}
.mp-custom-components-time-picker-time-picker .tp-sheet.on{ transform: translateY(0); }
.mp-custom-components-time-picker-time-picker .tp-head{
  position: relative;
  display: flex; align-items: center; justify-content: center;
  padding: calc(36 * var(--rpx)) 0 calc(12 * var(--rpx));
  flex-shrink: 0;
}
.mp-custom-components-time-picker-time-picker .tp-title{ font-size: calc(calc(32 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #222; }
.mp-custom-components-time-picker-time-picker .tp-close{
  position: absolute; right: calc(36 * var(--rpx)); top: calc(34 * var(--rpx));
  width: calc(44 * var(--rpx)); height: calc(44 * var(--rpx));
}
.mp-custom-components-time-picker-time-picker .tp-x1,.mp-custom-components-time-picker-time-picker .tp-x2{
  position: absolute; left: 50%; top: 50%;
  width: calc(32 * var(--rpx)); height: calc(3 * var(--rpx));
  background: #999; border-radius: calc(2 * var(--rpx));
}
.mp-custom-components-time-picker-time-picker .tp-x1{ transform: translate(-50%, -50%) rotate(45deg); }
.mp-custom-components-time-picker-time-picker .tp-x2{ transform: translate(-50%, -50%) rotate(-45deg); }
.mp-custom-components-time-picker-time-picker .tp-date{
  text-align: center;
  font-size: calc(calc(30 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #333;
  padding: calc(8 * var(--rpx)) 0 calc(20 * var(--rpx));
  border-bottom: calc(1 * var(--rpx)) solid #f0f0f0;
  flex-shrink: 0;
}
.mp-custom-components-time-picker-time-picker .tp-body{ flex: 1; min-height: 0; }
.mp-custom-components-time-picker-time-picker .tp-gname{
  display: flex;
  align-items: center;
  background: #f5f5f5;
  padding: calc(16 * var(--rpx)) calc(32 * var(--rpx));
  font-size: calc(calc(26 * var(--rpx)) * var(--gf-fs, 1)); color: #666;
}
.mp-custom-components-time-picker-time-picker .tp-gt{ flex: none; }
.mp-custom-components-time-picker-time-picker /* 时段备注：右对齐、单行省略，绝不撑破分组标题行 */
.tp-gnote{
  flex: 1;
  min-width: 0;
  margin-left: calc(16 * var(--rpx));
  text-align: right;
  color: #b07b1e;
  font-size: calc(calc(24 * var(--rpx)) * var(--gf-fs, 1));
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.mp-custom-components-time-picker-time-picker .tp-grid{ display: flex; flex-wrap: wrap; padding: calc(12 * var(--rpx)) calc(20 * var(--rpx)); }
.mp-custom-components-time-picker-time-picker .tp-cell{ width: 25%; padding: calc(8 * var(--rpx)); box-sizing: border-box; }
.mp-custom-components-time-picker-time-picker .tp-slot{
  border: calc(2 * var(--rpx)) solid #eceff1; border-radius: calc(10 * var(--rpx));
  display: flex; flex-direction: column; align-items: center;
  padding: calc(12 * var(--rpx)) 0;
}
.mp-custom-components-time-picker-time-picker .tp-t{ font-size: calc(calc(28 * var(--rpx)) * var(--gf-fs, 1)); font-weight: 600; color: #333; line-height: 1.3; }
.mp-custom-components-time-picker-time-picker .tp-p{ font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1)); color: #999; line-height: 1.4; }
.mp-custom-components-time-picker-time-picker /* 按压反馈：选中绿色（对齐设计稿选中态） */
.slot-on{ background: #21a45d; }
.mp-custom-components-time-picker-time-picker .slot-on .tp-t{ color: #fff; }
.mp-custom-components-time-picker-time-picker .slot-on .tp-p{ color: rgba(255,255,255,0.9); }
.mp-custom-components-time-picker-time-picker .tp-pad{ height: calc(40 * var(--rpx)); }

/* ===== custom-tab-bar/index.wxss ===== */
.mp-custom-custom-tab-bar-index /* custom-tab-bar/index.wxss */
/* custom-tab-bar/index.wxss —— 对齐原生 tabBar 观感
   🔴 字号铁律：font-size 走 calc(Nrpx * var(--gf-fs,.mp-custom-custom-tab-bar-index 1))（组件根无注入时回退 1）。
   🔴 底部安全区用 env(safe-area-inset-bottom)（该禁令只针对**顶部**，见 utils/navbar.js）。
   z-index=1000：高于一切页面内容（宿主页 sticky 头最高 100）。
   🔴 模态弹层（如 components/manager-sheet 1100/1101）要**盖住** tabBar ——
   曾因面板压在 1000 之下，第二条电话线路被 tab bar 盖住（2026-10-12 用户反馈）。 */
.tb-bar{
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 1000;
  display: flex; align-items: stretch;
  background: #ffffff;
  /* 原生 borderStyle=white 本无描边；仅留极浅分界防白底糊连（真机不接受可删这行） */
  box-shadow: 0 calc(-1 * var(--rpx)) 0 rgba(0, 0, 0, .06);
  padding-bottom: env(safe-area-inset-bottom);
}
.mp-custom-custom-tab-bar-index .tb-item{
  flex: 1;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: calc(8 * var(--rpx)) 0 calc(6 * var(--rpx));
}
.mp-custom-custom-tab-bar-index .tb-ico{ width: calc(52 * var(--rpx)); height: calc(52 * var(--rpx)); }
.mp-custom-custom-tab-bar-index .tb-txt{
  margin-top: calc(2 * var(--rpx));
  font-size: calc(calc(20 * var(--rpx)) * var(--gf-fs, 1));
  color: #9aa0a8; line-height: 1.3;
}
.mp-custom-custom-tab-bar-index .tb-item.on .tb-txt{ color: #21a45d; font-weight: 500; }