/* 由 WXSS 转换，勿手改 */
:root{--rpx:calc(min(100vw, 430px) / 750);--vh:1vh}

/* ---- styles/gold.wxss ---- */
/* ==================================================================
 * 收费面金皮 · styles/gold.wxss（v4.86.494）
 * ------------------------------------------------------------------
 * 木哥 2026-10-24 23:3x 两张截图 + 一句令：
 *   「这些和收费有关的弹窗弹框和页面，都设计成金色的ui风格。全站统一这种风格。」
 *
 * 一套色，别处不许自造 —— 与 components/pay-pop（v4.86.402 开通弹窗）、
 * pages/wallet（v4.86.481 财富/充值）同一套金铜系：
 *   主金   #a8792c   价格数字 / 金按钮 / 金描边字
 *   亮金   #d8b25c   渐变亮头 / 分割线高光
 *   边金   #c9a15c   卡片描边 / 选中边
 *   底金   #fdf8ec   价目块底 / 弹窗底
 *   微金   #fffdf6   弹窗头 / 卡片顶部渐隐
 *   淡金边 #f0e6d2   细分割线 / 内框
 *   深棕   #6b4d14   标题字（比纯黑暖，和金色是一家人）
 *   金灰   #b0a488   注释小字
 *
 * 用在哪：价目页（班级档位）、开通/升级弹窗、额度墙、会员页、商城下单结算。
 * 不用在哪：班级列表、作业、点评这些功能页 —— 收费痕迹不许提前露（v4.86.443 的运营口径）。
 *
 * 字号只走 20 / 24 / 28 / 32 / 40 / ≥46（A 层五档，tools/lint-style.js 会扫）。
 * ================================================================== */

/* ---- 页面底：一层极淡金雾，不是白纸 ---- */
.gd-page {
  min-height: calc(var(--vh) * 100);
  background: linear-gradient(180deg, #fdf8ec 0%, #f8f1e2 calc(var(--rpx) * 320), #f6efe1 100%);
  box-sizing: border-box;
}

/* ---- 页头：深棕金压顶 + 一条亮金细线 ---- */
.gd-hero {
  position: relative;
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(var(--rpx) * 40);
  background: linear-gradient(150deg, #43301a 0%, #6b4d14 60%, #8a6a22 100%);
  overflow: hidden;
}

.gd-hero::after {
  content: '';
  position: absolute;
  left: calc(var(--rpx) * 32);
  right: calc(var(--rpx) * 32);
  bottom: 0;
  height: calc(var(--rpx) * 2);
  background: linear-gradient(90deg, rgba(216, 178, 92, 0) 0%, #d8b25c 50%, rgba(216, 178, 92, 0) 100%);
}

.gd-hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #fdf3d8;
  letter-spacing: calc(var(--rpx) * 2);
}

.gd-hero-s {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: rgba(253, 243, 216, 0.78);
}

/* 页头右上的小印：只用来说明这一页是「价目」，不做促销角标 */
.gd-seal {
  position: absolute;
  right: calc(var(--rpx) * 32);
  top: calc(var(--rpx) * 40);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 18);
  border: calc(var(--rpx) * 1) solid rgba(216, 178, 92, 0.7);
  border-radius: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  letter-spacing: calc(var(--rpx) * 2);
  color: #e8cf94;
}

/* ---- 卡片：米金底 + 金描边，不做重阴影 ---- */
.gd-card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 2) solid #f0e6d2;
  background: linear-gradient(180deg, #fffdf6, #ffffff calc(var(--rpx) * 200));
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(107, 77, 20, 0.06);
}

.gd-card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #6b4d14;
}

.gd-card-s {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #8a7d66;
}

/* ---- 价目标签 ---- */
.gd-tag {
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 6);
  background: #fdf8ec;
  border: calc(var(--rpx) * 1) solid #c9a15c;
  font-size: calc(var(--rpx) * 20);
  color: #a8792c;
}

/* ---- 价格：¥ 小、数字大、周期灰 ---- */
.gd-price {
  display: flex;
  align-items: baseline;
  margin-top: calc(var(--rpx) * 12);
}

.gd-price-cur {
  font-size: calc(var(--rpx) * 24);
  color: #a8792c;
}

.gd-price-v {
  margin-left: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 46);
  font-weight: 700;
  line-height: 1.1;
  color: #a8792c;
  letter-spacing: calc(var(--rpx) * 1);
}

.gd-price-per {
  flex: 1;
  margin-left: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 20);
  color: #b0a488;
}

/* ---- 金按钮：亮金压主金的渐变，白字 ---- */
.gd-cta {
  margin-top: calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(135deg, #d8b25c, #a8792c);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #ffffff;
  text-align: center;
  border: none;
}

.gd-cta::after {
  border: none;
}

.gd-cta-hover {
  opacity: 0.88;
}

.gd-cta[disabled] {
  background: #e6dcc4;
  color: #ffffff;
}

/* ---- 金描边的次按钮（当前档位 / 已知晓） ---- */
.gd-cta-ghost {
  margin-top: calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 76);
  border-radius: calc(var(--rpx) * 999);
  background: #fffdf6;
  border: calc(var(--rpx) * 2) solid #c9a15c;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #a8792c;
  text-align: center;
}

.gd-cta-ghost::after {
  border: none;
}

/* ---- 注释小字 ---- */
.gd-fine {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  line-height: 1.6;
  color: #b0a488;
}

/* ---- 细分割线 ---- */
.gd-line {
  height: calc(var(--rpx) * 2);
  margin: calc(var(--rpx) * 20) 0;
  background: linear-gradient(90deg, rgba(201, 161, 92, 0) 0%, rgba(201, 161, 92, 0.55) 50%, rgba(201, 161, 92, 0) 100%);
}


/* ---- app.wxss ---- */
/* ==================================================================
 * 全局皮肤 · 微信生态版（v4.74.0 全站视觉统一）
 * 目标：像长在微信里，不像一个贴了绿纸的小程序。
 * 规矩（照微信 7.0 设计规范）：
 *   · 底色一律 #ededed 灰，白色分组块承载内容，块与块之间 calc(var(--rpx) * 16) 灰缝
 *   · 分组块：白底、calc(var(--rpx) * 16) 圆角、**没有阴影**（阴影是"华为风"的招牌，去掉）
 *   · 分割线：calc(var(--rpx) * 1) 发丝线 #e5e5e5，列表行内对齐
 *   · 按钮：方角 calc(var(--rpx) * 12)，不再是 calc(var(--rpx) * 999) 药丸
 *   · 图标布局：行首小图标 + 一行主文 + 灰色右箭头 ›
 * 本文件只改"皮"，不改任何页面的信息层级与功能位置。
 *
 * ── 色板（唯一真相，别再自造颜色）──────────────────────────
 *   主绿      #07c160   品牌/强调/进度/数字/选中态
 *   绿-按压   #06ad56   按下态
 *   绿-禁用   #a6e0be   禁用按钮
 *   绿-浅底   #e8f7ee   标签底 / 浅绿分组块
 *   绿-浅边   #d5f0df   浅绿块描边
 *   页面底    #ededed   银行卡式的灰底
 *   卡片底    #ffffff   白分组块
 *   填充灰    #f7f7f7   输入框 / 次级底
 *   次灰底    #f2f2f2   离线徽章 / 轨道
 *   按压灰    #ececec   按压反馈
 *   分割线    #e5e5e5
 *   箭头灰    #c8c8cd   ›
 *   一级文字  #191919
 *   二级文字  #888888
 *   三级文字  #b2b2b2
 *   红 #fa5151 / 红底 #feeceb —— 错误、删除
 *   橙 #fa9d3b / 橙底 #fff7e6 —— **仅**待办、未达标、评分色阶
 *   蓝 #576b95 —— 可点的次要链接（微信蓝）
 *   聊天气泡绿 #95ec69 —— 只用于"我发的"气泡
 *   ※ 装饰性暖金/米黄/棕（#8a6116 #b8860b #d99a12 #fff7e6 之类）已全站清除。
 *   ※ v4.86.494 例外（木哥 2026-10-24 23:3x「这些和收费有关的弹窗弹框和页面，
 *      都设计成金色的ui风格。全站统一这种风格。」）：**收费面**统一金铜系
 *      主金 #a8792c / 亮金 #d8b25c / 边金 #c9a15c / 底金 #fdf8ec / 深棕 #6b4d14，
 *      公共类在 styles/gold.wxss，弹窗是 components/gold-modal；
 *      范围只到价目页、开通弹窗、额度墙、会员/充值、商城下单结算，
 *      功能页（班级列表、作业、点评、首页）一处都不许搬这套色。
 *
 * ── 字号（5 档，别再出现 22/26/30/34 这种中间值）────────────
 *   T0 calc(var(--rpx) * 40)(20px)  页面主标题 / 卡片大数字
 *   T1 calc(var(--rpx) * 32)(16px)  一级：卡片标题 · 列表主文 · 主按钮
 *   T2 calc(var(--rpx) * 28)(14px)  二级：正文 · 副标题 · 次要按钮 · 输入框
 *   T3 calc(var(--rpx) * 24)(12px)  三级：注释 · 说明 · 列表副文
 *   T4 calc(var(--rpx) * 20)(10px)  标签 · 角标（全站最小字号）
 *   ※ ≥calc(var(--rpx) * 46) 一律是图标/emoji 字形尺寸，不属文字刻度。
 *
 * ── 菜单栏（tabBar）──────────────────────────────────────
 *   图标：微信标准 81×81px，图形占 24 栅格 20 单位（已按此出图）
 *   文字：微信客户端固定 10px，等于本项目 T4 calc(var(--rpx) * 20) —— 不可由 app.json 改；
 *         要完全掌控字号只能改自定义 tabBar（custom: true），当前不做。
 * ================================================================== */

/* v4.86.499：金皮改成**全局引一次**。
   原来（496）是各页自己 @import "../../../styles/gold.wxss" —— 档位页在子包
   pkgOps 里，`../../../` 越过了子包根，微信编译器直接报
   `path ../../../styles/gold.wxss not found from ./pkgOps/pages/tclass/plan.wxss`
   （上传时才炸，本地 lint / 386 条用例全绿也看不出来）。
   放这里 = 跟"一套色只有一处真相"同义，而且主包内引用，任何子包页面直接用类就行。 */


#app-page {
  background: #ededed;
  color: #191919;
  font-size: calc(var(--rpx) * 28);
  font-family: -apple-system, "PingFang SC", "Helvetica Neue", sans-serif;
  line-height: 1.6;
}

.page-wrap {
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
  /* v4.69.3：兜住内容里任何横向溢出。
     用 clip 而不是 hidden —— hidden 会把 overflow-y 一并算成 auto，
     在 iOS 上会让整页纵向滚动出问题（v4.69.0 踩过）；clip 不影响另一轴。 */
  overflow-x: clip;
}

/* ---- 分组块（原 .card）：白底、微圆角、无阴影 ---- */
.card {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 32);
  margin-bottom: calc(var(--rpx) * 16);
}

.card-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 16);
}

.muted {
  color: #888888;
  font-size: calc(var(--rpx) * 24);
}

/* ---- 按钮：全站只有这六类（v4.86.183 · 木哥 00:2x「按类别统一，符合微信生态」）----
 * ① .btn-primary 主按钮   实心 #07c160 + 白字（唯一"最重的动作"用它）
 * ② .btn-ghost   次按钮   白底 + calc(var(--rpx) * 1) #e5e5e5 边 + #191919 字
 * ③ .btn-warn    警示按钮 白底 + #fa5151 字（微信规范红，只给"退出/删除/取消单"这类）
 * ④ .btn-mini    小按钮   行内、方角 calc(var(--rpx) * 8)、字号 calc(var(--rpx) * 24)
 * ⑤ .nsw         通知开关 行内胶囊 calc(var(--rpx) * 999)、字号 calc(var(--rpx) * 24)（开/关两态，全站通知类只准用它）
 * ⑥ .wx-link     文字链   微信蓝 #576b95
 * 大按钮三档**同尺寸**（calc(var(--rpx) * 10) 圆角 / calc(var(--rpx) * 32) 字号 / padding calc(var(--rpx) * 24) 0），只换配色；
 * 小元素两档同尺寸（calc(var(--rpx) * 999) 圆角 / calc(var(--rpx) * 24) 字号 / padding calc(var(--rpx) * 8) calc(var(--rpx) * 24)），只换配色。
 * 字号只走本仓 5 档阶梯 20/24/28/32/40 —— 别自造 26/30/34/16/19。
 * 按下态只加深一档（主 #06ad56 / 次 #f2f2f2）；button 用自带 .button-hover，
 * view 当按钮时挂 hover-class="button-hover"（按下会带上这个类，照样命中下面的规则）。
 * ★ 禁止自造：其他底色（深灰/橙/深绿）、渐变底、投影、胶囊化的大按钮。 */
.btn-primary {
  background: #07c160;
  color: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  padding: calc(var(--rpx) * 24) 0;
  text-align: center;
  border: none;
  line-height: 1.4;
  transition: background 0.12s ease;
}

.btn-primary::after {
  border: none;
}

.btn-primary.button-hover,
.btn-primary[disabled].button-hover {
  background: #06ad56;
  color: #ffffff;
}

.btn-primary[disabled] {
  background: #a6e0be;
  color: #ffffff;
}

.btn-ghost {
  background: #ffffff;
  color: #191919;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 32);
  padding: calc(var(--rpx) * 24) 0;
  text-align: center;
  line-height: 1.4;
  transition: background 0.12s ease;
}

.btn-ghost::after {
  border: none;
}

.btn-ghost.button-hover {
  background: #f2f2f2;
  color: #191919;
}

/* 微信"警示"按钮（退出登录这类） */
.btn-warn {
  background: #ffffff;
  color: #fa5151;
  border: none;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 32);
  padding: calc(var(--rpx) * 24) 0;
  text-align: center;
  line-height: 1.4;
}

.btn-warn::after {
  border: none;
}

.row-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.empty {
  padding: calc(var(--rpx) * 80) calc(var(--rpx) * 20);
  text-align: center;
  color: #b2b2b2;
  font-size: calc(var(--rpx) * 28);
}

.tag {
  display: inline-block;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 6);
  background: #e8f7ee;
  color: #07c160;
  font-size: calc(var(--rpx) * 24);
}

/* ---- 列表行（微信 cell：一行主文 + 右侧灰箭头） ---- */
.cell {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 28) 0;
  border-bottom: calc(var(--rpx) * 1) solid #e5e5e5;
}

.cell:last-child {
  border-bottom: none;
}

.cell-main {
  flex: 1;
  min-width: 0;
}

.cell-title {
  font-size: calc(var(--rpx) * 32);
  color: #191919;
}

.cell-sub {
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  margin-top: calc(var(--rpx) * 4);
}

.cell-right {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #07c160;
  margin-left: calc(var(--rpx) * 20);
  flex-shrink: 0;
}

.cell-right.minus {
  color: #888888;
}

/* 微信风格的右箭头 ›（灰、细、靠右） */
.wx-arrow {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 40);
  line-height: 1;
  color: #c8c8cd;
  font-weight: 300;
}

/* 可点的列表行：按下变灰（微信的按压反馈就是整行变灰） */
.cell-tap,
.wx-tap {
  transition: background-color 0.08s;
}

.cell-tap:active,
.wx-tap:active {
  background-color: #ececec;
}

/* 分组块上方的小灰标题（微信的 section header 写法） */
.wx-section {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 16) calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}

/* ---- 页面左上角品牌 logo + 名称 ---- */
.app-header {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  gap: calc(var(--rpx) * 16);
}

/* v4.86.530：主 logo 从绿色字标换成绿猫头像（images/logo.png 同步换源），
   页头收敛成「猫标 + 名称」——旧字标旁的分隔杠与单线猫一并退场 */
.app-header-logo {
  width: calc(var(--rpx) * 48);
  height: calc(var(--rpx) * 48);
  border-radius: calc(var(--rpx) * 10);
  opacity: 0.95;
}

/* v4.86.530：主 logo 已是绿猫，字标旁的竖杠与单线猫不再展示（wxml 保留结构，收敛走 CSS） */
.app-header-divider {
  display: none;
}

/* 单线绿猫（透明底微信绿线条） */
.app-header-cat {
  display: none;
}

.app-header-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #07c160;
  letter-spacing: calc(var(--rpx) * 2);
}

/* v4.86.262（任务书 D-05/D-06/D-07）：页头右侧的积分位 —— 三处常驻、一眼可见。
   ★ 不定位悬浮、不叠角标（D-06 ③）：margin-left:auto 只占行内最后一格，
     品牌区在左、数字在右，谁也不会盖住谁。 */
.app-header-point {
  margin-left: auto;
  display: flex;
  align-items: baseline;
  gap: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(7, 193, 96, 0.08);
  border: calc(var(--rpx) * 1) solid rgba(7, 193, 96, 0.18);
}
.app-header-point-v {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #07c160;
}
.app-header-point-u {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  opacity: 0.75;
}
.app-header-point-guest .app-header-point-v {
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
}

/* 墨宝数字 */
.bean-num {
  color: #07c160;
  font-weight: 600;
}

/* 级别徽章 */
.badge {
  display: inline-block;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  margin-left: calc(var(--rpx) * 12);
  vertical-align: middle;
}

.badge-junior {
  background: #e8f7ee;
  color: #07c160;
}

.badge-excellent {
  background: #fff7e6;
  color: #fa9d3b;
}

.badge-senior {
  background: #feeceb;
  color: #fa5151;
}

/* 小按钮 */
.btn-mini {
  display: inline-block;
  font-size: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 10);
  background: #07c160;
  color: #ffffff;
  margin-left: calc(var(--rpx) * 16);
}

.btn-mini.ghost {
  background: #ffffff;
  color: #888888;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
}

/* ⑤ 通知开关（v4.86.183 木哥第 3 条：全站"微信通知"的开/关按键只准用这一颗）
 *   未开 = 绿边白底绿字「开启」（是号召）；已开 = 浅绿底 + 绿字「已开启」（已生效，弱化）。
 *   与 .btn-mini 同一套尺寸、只换配色 —— 作业页 / 详情页 / 我的页 / 助教中心长得一模一样。 */
.nsw {
  display: inline-block;
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 999);
  border: calc(var(--rpx) * 1) solid #07c160;
  background: #ffffff;
  color: #07c160;
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  white-space: nowrap;
}

.nsw-on {
  border-color: #07c160;
  background: #e8f7ee;
  color: #07c160;
}

/* 通知行（v4.86.183：day 页与详情页原先各写一份、逐字相同 ⇒ 收上来共用，顺手省主包） */
.notify-row {
  margin-top: calc(var(--rpx) * 22);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 14);
  background: #f7f7f7;
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 28);
}

.notify-row:active {
  background: #e8f7ee;
}

.notify-icon {
  margin-right: calc(var(--rpx) * 12);
}

.notify-text {
  flex: 1;
}

/* 链接：微信蓝（微信生态里"能点"的次要文字就是这种蓝） */
.wx-link {
  color: #576b95;
}

/* ---- 输入框 / 文本域：微信用浅灰填充，不再是米色 ---- */
.input {
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 28);
}

.area {
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 28);
  width: auto;
  min-height: calc(var(--rpx) * 140);
  box-sizing: border-box;
}

.field-label {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin-bottom: calc(var(--rpx) * 12);
}

/* 字段名 + 🎤说话 挤同一行（v4.83.5 全站默认语音输入） */
.field-label-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: calc(var(--rpx) * 16);
}

.field-block {
  margin-bottom: calc(var(--rpx) * 24);
}

/* 入口行（微信 cell 的老别名，与 .cell 同一套） */
.entry {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 28) 0;
  border-bottom: calc(var(--rpx) * 1) solid #e5e5e5;
}

.entry:last-child {
  border-bottom: none;
}

.entry-arrow {
  color: #c8c8cd;
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 40);
  font-weight: 300;
  line-height: 1;
}

/* ---- 助教在线/离线标志 ---- */
.badge-online {
  background: #e8f7ee;
  color: #07c160;
}

.badge-offline {
  background: #f2f2f2;
  color: #b2b2b2;
}

/* v4.86.182：视频动作纠正块（day 页与详情页共用一份，避免两页各写一遍吃主包） */
/* 视频动作纠正（v4.86.183 木哥 00:1x「做成和今日打卡一样的绿色主按键」）：
 * 不再是"带说明的卡片"，就是一颗主按钮 —— 尺寸/圆角/配色全由 .btn-primary 提供，
 * 这里只补一条外边距；未开通时走禁用绿（与主按钮禁用态同色）。day 页与详情页共用。 */
.hw-video{margin-top:calc(var(--rpx) * 24);}
.hw-video-off{background:#a6e0be;}

/* v4.86.362（木哥 359 号令）：有原音的 ♪ 声音图标**常驻闪动** —— 任何时候、
 * 任何页面（圈画页/老师复看/学生详情/记录页/放大层）都在闪，一眼看出「这处有声音」。
 * 只动 opacity 不碰 transform —— detail 的 .voice-dot 自带 translate(-50%,-50%)，
 * 动画里改 transform 会把它拽离原位（图标飘移比不闪严重得多）。各页的
 * .xx-flash 类只写 animation 一行，keyframes 全站共用这一份。 */
@keyframes voice-flash {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.3;
  }
}

/* ===== 图标块（v4.86.547 木哥令：消息页系统线要和发现页一个风格）=====
 * 彩底圆角方块 + 白色线条图示，一图一义、笔画最少（同聊天页语音键的技术）。
 * 九枚图示是 v4.86.541 为发现页重画的，这次搬成全站一份：
 *   发现页行内 calc(var(--rpx) * 56)（.ico-tile-s）、消息页头像位 calc(var(--rpx) * 92)（.ico-tile-m）。
 * 键名沿用发现页那份（char/demo/record/park/family/letter/remind/mall/power），
 * remind 就是铃铛 —— 消息页「平台通知」直接复用它，不再单独画一枚。 */
.ico-tile {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: calc(var(--rpx) * 12);
  flex-shrink: 0;
}

.ico-tile-s {
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
}

.ico-tile-m {
  width: calc(var(--rpx) * 92);
  height: calc(var(--rpx) * 92);
  border-radius: calc(var(--rpx) * 16);
}

.ico-gl {
  width: 60%;
  height: 60%;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}
.ico-gl-char { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMjEiIGN5PSIyMSIgcj0iMTAiLz48cGF0aCBkPSJNMjggMjggMzggMzgiLz48cGF0aCBkPSJNMTcgMjFoOCIvPjwvc3ZnPg=="); }
.ico-gl-demo { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTE0IDM0bDIuNS03LjVMMzMgMTBsNSA1LTE2LjUgMTYuNUwxNCAzNHoiLz48cGF0aCBkPSJNMzAuNSAxMi41bDUgNSIvPjwvc3ZnPg=="); }
.ico-gl-record { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMTIiIHk9IjkiIHdpZHRoPSIyNCIgaGVpZ2h0PSIzMCIgcng9IjMiLz48cGF0aCBkPSJNMTggMThoMTJNMTggMjVoMTJNMTggMzJoNyIvPjwvc3ZnPg=="); }
.ico-gl-park { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMjQiIGN5PSIyNyIgcj0iMTIiLz48cGF0aCBkPSJNMTQgMTkgMTIgOWw4IDYiLz48cGF0aCBkPSJNMzQgMTkgMzYgOWwtOCA2Ii8+PHBhdGggZD0iTTIwIDI2aC4xTTI4IDI2aC4xIi8+PC9zdmc+"); }
.ico-gl-family { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEwIDM4aDI4Ii8+PHBhdGggZD0iTTE3IDM4VjI2TTI0IDM4VjE1TTMxIDM4VjMwIi8+PC9zdmc+"); }
.ico-gl-letter { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMTAiIHk9IjE0IiB3aWR0aD0iMjgiIGhlaWdodD0iMjAiIHJ4PSIzIi8+PHBhdGggZD0iTTEwIDE3bDE0IDEwIDE0LTEwIi8+PC9zdmc+"); }
.ico-gl-hw { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMTIiIHk9IjciIHdpZHRoPSIyNCIgaGVpZ2h0PSIzNCIgcng9IjMiLz48cGF0aCBkPSJNMTggMTZoMTJNMTggMjNoMTIiLz48cGF0aCBkPSJNMTggMzJsMyAzIDYtNyIvPjwvc3ZnPg=="); }
.ico-gl-remind { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTI0IDEwYy02IDAtOSA0LjUtOSAxMHY2bC0zIDZoMjRsLTMtNnYtNmMwLTUuNS0zLTEwLTktMTB6Ii8+PHBhdGggZD0iTTIxIDM2YTMgMyAwIDAgMCA2IDAiLz48L3N2Zz4="); }
.ico-gl-mall { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTE0IDE3aDIwbC0xLjUgMjBhMi41IDIuNSAwIDAgMS0yLjUgMi4zSDE4YTIuNSAyLjUgMCAwIDEtMi41LTIuM0wxNCAxN3oiLz48cGF0aCBkPSJNMTguNSAxN3YtM2E1LjUgNS41IDAgMCAxIDExIDB2MyIvPjwvc3ZnPg=="); }
.ico-gl-power { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTE2IDloMTZ2MTBhOCA4IDAgMCAxLTE2IDBWOXoiLz48cGF0aCBkPSJNMTYgMTJoLTR2MmE2IDYgMCAwIDAgNSA2Ii8+PHBhdGggZD0iTTMyIDEyaDR2MmE2IDYgMCAwIDEtNSA2Ii8+PHBhdGggZD0iTTI0IDI3djZNMTcgMzloMTRNMjAgMzNoOGwxIDZoLTEwbDEtNnoiLz48L3N2Zz4="); }

/* v7.0.037（木哥 20:0x「设置页所有图标参考发现页的图标，统一风格」）：
 * 设置页要用的七枚新图示，画法与那九枚同一条技术（48×48、白线 3、圆头圆角），
 * 彩底由页面用 tint 铺，这里只画白线。person 给「名字」、key 给「账号 ID」、
 * phone/pin/school/steps 给手机号与上学档案、sound/mic 给提醒与麦克风。 */
.ico-gl-key { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iNyIvPjxwYXRoIGQ9Ik0yMSAyMWwxNSAxNSIvPjxwYXRoIGQ9Ik0zMCAzMGw0LTQiLz48cGF0aCBkPSJNMzQgMzRsNC00Ii8+PC9zdmc+"); }
.ico-gl-phone { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMTQiIHk9IjciIHdpZHRoPSIyMCIgaGVpZ2h0PSIzNCIgcng9IjQiLz48cGF0aCBkPSJNMjEgMzVoNiIvPjwvc3ZnPg=="); }
.ico-gl-pin { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTI0IDQwczEyLTkuNiAxMi0yMGExMiAxMiAwIDAgMC0yNCAwYzAgMTAuNCAxMiAyMCAxMiAyMHoiLz48Y2lyY2xlIGN4PSIyNCIgY3k9IjIwIiByPSI0LjUiLz48L3N2Zz4="); }
.ico-gl-school { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTYgNDBoMzYiLz48cGF0aCBkPSJNMTAgNDBWMjBsMTQtOSAxNCA5djIwIi8+PHBhdGggZD0iTTE5IDQwVjI5aDEwdjExIi8+PC9zdmc+"); }
.ico-gl-steps { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTkgMzlWMjloOXYtOWg5VjEwaDkiLz48cGF0aCBkPSJNOSAzOWgzMCIvPjwvc3ZnPg=="); }
.ico-gl-sound { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTkgMjBoN2w5LTh2MjRsLTktOEg5eiIvPjxwYXRoIGQ9Ik0zMiAxOGMzIDMgMyA5IDAgMTIiLz48cGF0aCBkPSJNMzcgMTNjNiA1IDYgMTcgMCAyMiIvPjwvc3ZnPg=="); }
.ico-gl-mic { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMTkiIHk9IjgiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxOSIgcng9IjUiLz48cGF0aCBkPSJNMTMgMjRjMCA3IDUgMTEgMTEgMTFzMTEtNCAxMS0xMSIvPjxwYXRoIGQ9Ik0yNCAzNXY2Ii8+PC9zdmc+"); }
.ico-gl-person { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMjQiIGN5PSIxNyIgcj0iNyIvPjxwYXRoIGQ9Ik0xMSAzOWMwLTcgNi0xMSAxMy0xMXMxMyA0IDEzIDExIi8+PC9zdmc+"); }

/* v7.0.081（木哥令「消息页单独出管理员·信息反馈」）：对话气泡 + 两行字，
 * 画法与上面九枚同一套（白线 3、圆头圆角），彩底由消息页 .msg-fb-tile 铺。 */
.ico-gl-fb { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEzIDEwaDIyYTQgNCAwIDAgMSA0IDR2MTFhNCA0IDAgMCAxLTQgNEgyNGwtOCA4di04aC0zYTQgNCAwIDAgMS00LTRWMTRhNCA0IDAgMCAxIDQtNHoiLz48cGF0aCBkPSJNMTcgMTdoMTRNMTcgMjNoOSIvPjwvc3ZnPg=="); }

/* v7.0.182（木哥令，附「今天的作业与点评」截图）：《待办引导准则》全站一份 ——
 * 凡「等用户点一下才算完」的主按钮（确认点评 / 同意示范 / 确认邀约…）：
 * ① 未读（还没看过）：键上挂 .btn-glow-dot「未读」红角标，同时按键发光；
 * ② 已读未办：角标摘、发光继续 —— 光一直呼吸到动作做完（成功后键变灰停光）；
 * ③ 样式全站只此一份：待办主按钮加 .btn-glow 一个类即生效，keyframes 共用，
 *    禁止各页自造动画/投影；光只给「可点且待办」，禁用态/成功态一律不加。
 * ④ v7.0.187（木哥发图令「角标没有显示完整，需要修补好」）：原生 button 自带
 *    overflow:hidden，把探出键顶的「未读」角标裁掉半截 —— .btn-glow 一并
 *    overflow:visible 放行，凡挂光的键角标都完整（全站一处修，四处同好）。
 * 本版接入四处：day 页广场邀约确认键（带未读角标）、day 页示范同意键两份、
 * day 页已选老师确认键、detail 页示范同意键。 */
@keyframes wb-btn-glow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(7, 193, 96, 0.45); }
  50% { box-shadow: 0 0 0 calc(var(--rpx) * 14) rgba(7, 193, 96, 0); }
}
.btn-glow {
  position: relative;
  overflow: visible;
  animation: wb-btn-glow 1.6s ease-out infinite;
}
.btn-glow-dot {
  position: absolute;
  top: calc(var(--rpx) * -14);
  right: calc(var(--rpx) * 10);
  background: #fa5151;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  line-height: 1;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  border: calc(var(--rpx) * 2) solid #ffffff;
}


/* ---- pages/index/index.wxss ---- */
[data-route="pages/index/index"] /* ==================================================================
 * 打卡首页 · 微信生态皮肤（v4.70.0）
 * 白分组块 + 发丝线 + 灰箭头；渐变/阴影/虚线/米色全部退场。
 * ================================================================== */
.hero {
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 8) calc(var(--rpx) * 36);
}
[data-route="pages/index/index"] .hero-date {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  letter-spacing: calc(var(--rpx) * 2);
}
[data-route="pages/index/index"] .hero-title {
  font-size: calc(var(--rpx) * 52);
  font-weight: 600;
  color: #191919;
  margin-top: calc(var(--rpx) * 12);
  letter-spacing: calc(var(--rpx) * 2);
}
[data-route="pages/index/index"] .hero-sub {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pages/index/index"] .notice {
  margin-top: calc(var(--rpx) * 20);
  text-align: center;
}
[data-route="pages/index/index"] /* 统计条：白块 + 发丝分隔，黑数字 */
.stats {
  display: flex;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 32) 0;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/index/index"] .stat {
  flex: 1;
  text-align: center;
  border-right: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/index/index"] .stat:last-child {
  border-right: none;
}
[data-route="pages/index/index"] .stat-num {
  font-size: calc(var(--rpx) * 48);
  font-weight: 600;
  color: #191919;
  line-height: 1.2;
}
[data-route="pages/index/index"] .stat-label {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pages/index/index"] /* v4.86.66（木哥）：打卡主卡 —— 打卡键 + 四个打卡数值（我的页挪来）合成一张卡，
   放打卡页第一位；数值行复用下面的 .stat/.stat-num/.stat-label（去独立卡的圆角底） */
.checkin-card {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 24) calc(var(--rpx) * 8);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/index/index"] .checkin-btn {
  position: relative;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pages/index/index"] /* v4.86.259（木哥令）：未读点评数红点挂在主按钮右上角 —— 有几次显示几次
   （badge.fmt，>99 折 99+）；进 day 页看到即燛（markCurSeen） */
.checkin-badge {
  position: absolute;
  /* v4.86.274（木哥令「数字显示不完整」）：负偏移悬在按钮外被裁掉上半 ——
   * 收进按钮内部右上角，永远完整。 */
  top: calc(var(--rpx) * 8);
  right: calc(var(--rpx) * 8);
  min-width: calc(var(--rpx) * 32);
  padding: 0 calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 18);
  background: #fa5151;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 32);
  text-align: center;
  box-sizing: border-box;
  border: calc(var(--rpx) * 3) solid #ffffff;
}
[data-route="pages/index/index"] .checkin-stats {
  display: flex;
  padding-bottom: calc(var(--rpx) * 24);
}
[data-route="pages/index/index"] /* v4.86.317（木哥 317 号令）：角标下面的「哪几篇」入口 —— 一行小字，
   不抢打卡主键的视觉，点整行进未读明细 */
.unread-line {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: calc(var(--rpx) * 4);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 4) calc(var(--rpx) * 4);
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/index/index"] .unread-line-t {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
}
[data-route="pages/index/index"] .unread-line-go {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/index/index"] .main-btn {
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/index/index"] .recent-item {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 26) 0;
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/index/index"] .recent-main {
  flex: 1;
}
[data-route="pages/index/index"] .recent-date {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/index/index"] .recent-note {
  margin-top: calc(var(--rpx) * 6);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: calc(var(--rpx) * 480);
}
[data-route="pages/index/index"] /* 微信灰箭头 */
.recent-arrow {
  color: #c8c8cd;
  font-size: calc(var(--rpx) * 40);
  font-weight: 300;
  line-height: 1;
}
[data-route="pages/index/index"] .err {
  margin-top: calc(var(--rpx) * 24);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/index/index"] /* v4.74.7：页头右上角的「Lv·称号·猫名」小条已撤（周木：「没有必要，我的页面有详细展示」），
   连带 .header-id / -lv / -title / -cat / -cat-img / -go 六条样式一并删掉，别留死代码。
   等级/称号/猫名的完整口径仍在「我的」页与猫咪乐园，打卡页只留品牌页头。 */

/* ============ v4.83.5：和墨灵猫说说话（全站唯一聊天入口） ============
   绿底突出、跟游戏入口卡同一套绿（#e9f8ef + 绿描边）。
   两行结构：上排「头像 + 标题 + 说明」，下排两个等宽按钮（陪孩子 / 聊正事）。 */
.talk-entry {
  background: #e9f8ef;
  border: calc(var(--rpx) * 1) solid rgba(7, 193, 96, 0.22);
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 24);
  margin: calc(var(--rpx) * 16) 0;
}
[data-route="pages/index/index"] .talk-head {
  display: flex;
  align-items: center;
}
[data-route="pages/index/index"] .talk-avatar {
  width: calc(var(--rpx) * 76);
  height: calc(var(--rpx) * 76);
  border-radius: 50%;
  flex-shrink: 0;
  margin-right: calc(var(--rpx) * 20);
  background: #ffffff;
}
[data-route="pages/index/index"] .talk-info {
  flex: 1;
  min-width: 0;
}
[data-route="pages/index/index"] .talk-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
}
[data-route="pages/index/index"] .talk-say {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  line-height: 1.4;
}
[data-route="pages/index/index"] .talk-row {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/index/index"] .talk-btn {
  flex: 1;
  height: calc(var(--rpx) * 68);
  line-height: calc(var(--rpx) * 68);
  text-align: center;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #0a7a3d;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid rgba(7, 193, 96, 0.35);
}
[data-route="pages/index/index"] .talk-btn-main {
  color: #ffffff;
  background: #07c160;
  border-color: #07c160;
}
[data-route="pages/index/index"] /* 猫咪乐园入口：白块 + 图标 + 箭头（微信列表行写法） */
.game-entry {
  display: flex;
  align-items: center;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 24);
  margin: calc(var(--rpx) * 16) 0;
}
[data-route="pages/index/index"] /* 小猫刺刺毛：整行转红调 */
.game-entry-sad {
  background: #feeceb;
}
[data-route="pages/index/index"] .game-entry-icon {
  position: relative;
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  flex-shrink: 0;
  margin-right: calc(var(--rpx) * 20);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/index/index"] /* 入口图标：一律单线绿猫 logo（v4.74.4 起，刺刺毛态也不再扮鬼脸——
   状态语义交给卡片红底 + 「小猫刺刺毛了：…」文案，图标保持品牌统一） */
.game-entry-cat-img {
  width: 100%;
  height: 100%;
  display: block;
}
[data-route="pages/index/index"] /* 入口右上角小红点 */
.ge-dot {
  position: absolute;
  top: calc(var(--rpx) * -2);
  right: calc(var(--rpx) * -6);
  width: calc(var(--rpx) * 18);
  height: calc(var(--rpx) * 18);
  border-radius: 50%;
  background: #fa5151;
}
[data-route="pages/index/index"] /* v4.86.65（木哥）：乐园入口的未读数字角标（要操心的照顾动作数，>99 折 99+），
   与「我的」页 .fn-badge 同一套口径（utils/unread-badge.js） */
.ge-badge {
  position: absolute;
  top: calc(var(--rpx) * -10);
  right: calc(var(--rpx) * -18);
  min-width: calc(var(--rpx) * 28);
  height: calc(var(--rpx) * 30);
  padding: 0 calc(var(--rpx) * 8);
  box-sizing: border-box;
  border-radius: calc(var(--rpx) * 16);
  background: #fa5151;
  color: #fff;
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 30);
  text-align: center;
  font-weight: 600;
}
[data-route="pages/index/index"] .game-entry-info {
  flex: 1;
  min-width: 0;
}
[data-route="pages/index/index"] .game-entry-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/index/index"] .game-entry-say {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.5;
}
[data-route="pages/index/index"] /* 今天的安排提示条：压平 */
.plan-tip {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 16);
  background: #e8f7ee;
}
[data-route="pages/index/index"] .plan-tip-icon {
  font-size: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pages/index/index"] .plan-tip-body {
  flex: 1;
  min-width: 0;
}
[data-route="pages/index/index"] .plan-tip-text {
  display: block;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/index/index"] .plan-tip-sub {
  display: block;
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pages/index/index"] .plan-tip-go {
  font-size: calc(var(--rpx) * 40);
  font-weight: 300;
  color: #c8c8cd;
}
[data-route="pages/index/index"] /* 聊天入口不再放首页 */
/* 聊天入口不再放首页（避免"两只猫"）：聊天统一从猫咪乐园 / 悬浮猫进 */
/* v4.69.2：离屏画布收进屏内。
   原来用 position:fixed + left:-9999px 藏到屏幕外，iOS 会把这种负偏移的 fixed
   盒子算进页面可滚动宽度 —— 整页因此能被左右拖（「我的」页晃、打卡/记录页没有
   这块画布所以不晃）。现在锚在屏内左上、缩到 1px、透明、不挡点击。
   画布出图只认 canvas.width/height（share-card.js / detail.js 都是这么写的），
   CSS 尺寸只影响显示，改小不影响分享图质量。 */
anvas {
  position: fixed;
  left: 0;
  top: 0;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
  z-index: -1;
}
[data-route="pages/index/index"] /* ==================================================================
 * 老师榜
 * v4.86.425（木哥 21:36：「全部错了，老师榜的 ui，我是要图二的样式」）
 * 一行一张白卡，不再是密集榜单行：左圆头像、名字 + 胶囊徽标、
 * 擅长·口吻、简介两行；选中那张描绿边 + 右上绿勾。
 * ================================================================== */
.board-sec {
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/index/index"] .board-head {
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 8) calc(var(--rpx) * 16);
}
[data-route="pages/index/index"] .board-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/index/index"] .board-note {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
  color: #888888;
}
[data-route="pages/index/index"] /* 一张卡 = 一位老师 */
.board-card {
  position: relative;
  display: flex;
  align-items: flex-start;
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid transparent;
  border-radius: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 18);
  box-sizing: border-box;
}
[data-route="pages/index/index"] /* 按压反馈（原 mentor-row-hover 的白色卡版本） */
.board-card-hover {
  background: #fafafa;
}
[data-route="pages/index/index"] /* v4.86.448（木哥 16:1x「页面还显示打钩，把这一套打勾逻辑去掉」）：
 * 「被选中」这套在真人老师行里根本不存在 —— 老师是「邀约 → 接单」，
 * 没有一个常驻的「当前选中」状态。陪练跟着去掉，榜上不再有绿边与绿勾。 */

.board-ava-wrap {
  position: relative;
  flex-shrink: 0;
  margin-right: calc(var(--rpx) * 22);
}
[data-route="pages/index/index"] .mentor-avatar {
  display: block;
  width: calc(var(--rpx) * 96);
  height: calc(var(--rpx) * 96);
  border-radius: 50%;
  background: #f2f2f2;
}
[data-route="pages/index/index"] /* 没照片回退首字块：浅灰圆 + 绿字（图二的创始人位就是这形状） */
.mentor-avatar-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f2f2f2;
  color: #07c160;
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
}
[data-route="pages/index/index"] /* v4.86.419（木哥令）：「陪」字标志放在头像右下侧 */
.coach-pei {
  position: absolute;
  right: calc(var(--rpx) * -6);
  bottom: calc(var(--rpx) * -6);
  width: calc(var(--rpx) * 32);
  height: calc(var(--rpx) * 32);
  line-height: calc(var(--rpx) * 32);
  text-align: center;
  border-radius: 50%;
  background: #8a6320;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  font-weight: bold;
  border: calc(var(--rpx) * 3) solid #ffffff;
  box-sizing: content-box;
}
[data-route="pages/index/index"] .mentor-main {
  flex: 1;
  min-width: 0;
  /* 右上角那枚勾的位置留出来，名字长了也不压到它 */
  padding-right: calc(var(--rpx) * 34);
}
[data-route="pages/index/index"] .mentor-line {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}
[data-route="pages/index/index"] .mentor-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
  max-width: calc(var(--rpx) * 300);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pages/index/index"] /* 胶囊徽标：身份级别 / 性格 / 在线，绿描边绿字（图二那几枚） */
.board-chip {
  margin-left: calc(var(--rpx) * 10);
  padding: 0 calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 34);
  border-radius: calc(var(--rpx) * 999);
  border: calc(var(--rpx) * 1) solid rgba(7, 193, 96, 0.55);
  color: #07c160;
  flex-shrink: 0;
}
[data-route="pages/index/index"] /* 推荐：橙底白字胶囊（图二「推荐」那枚） */
.mentor-reco {
  margin-left: calc(var(--rpx) * 10);
  padding: 0 calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 34);
  border-radius: calc(var(--rpx) * 999);
  color: #ffffff;
  background: #ff8a3d;
  flex-shrink: 0;
}
[data-route="pages/index/index"] /* 第二行：擅长 · 口吻（真人老师是「已点评 N 单 · 家长评分 X」） */
.mentor-sub {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pages/index/index"] /* 第三行起：简介，最多两行（图二是两行后截断） */
.mentor-bio-line {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.55;
  color: #666666;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
[data-route="pages/index/index"] /* 空态落在灰底上：给张白卡（wxml 里 class 仍只写 .empty，别包成两层卡） */
.board-sec > .empty {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 56) 0;
  margin-bottom: calc(var(--rpx) * 18);
}
[data-route="pages/index/index"] .board-coach-note {
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 8) calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #8a6320;
}
[data-route="pages/index/index"] /* ---------- 战力值：白块黑数字绿进度条 ---------- */
.power-card {
  display: flex;
  align-items: center;
  margin: calc(var(--rpx) * 16) 0;
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 32);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/index/index"] .power-left { min-width: calc(var(--rpx) * 180); }
[data-route="pages/index/index"] .power-cap { font-size: calc(var(--rpx) * 24); color: #888888; letter-spacing: calc(var(--rpx) * 2); }
[data-route="pages/index/index"] .power-num { font-size: calc(var(--rpx) * 60); font-weight: 600; color: #191919; line-height: 1.15; }
[data-route="pages/index/index"] .power-right { flex: 1; padding-left: calc(var(--rpx) * 20); }
[data-route="pages/index/index"] .power-title { font-size: calc(var(--rpx) * 32); font-weight: 500; color: #191919; }
[data-route="pages/index/index"] .power-bar { height: calc(var(--rpx) * 12); background: #f2f2f2; border-radius: calc(var(--rpx) * 999); margin: calc(var(--rpx) * 14) 0 calc(var(--rpx) * 10); overflow: hidden; }
[data-route="pages/index/index"] .power-bar-in { height: 100%; background: #07c160; border-radius: calc(var(--rpx) * 999); }
[data-route="pages/index/index"] .power-delta { font-size: calc(var(--rpx) * 24); color: #07c160; }
[data-route="pages/index/index"] .power-delta.flat { color: #b2b2b2; }
[data-route="pages/index/index"] .power-go { color: #c8c8cd; font-size: calc(var(--rpx) * 40); font-weight: 300; line-height: 1; }
[data-route="pages/index/index"] /* 每日结算弹层：白卡片（微信弹窗就是白底圆角） */
.power-pop {
  position: fixed; left: 0; right: 0; top: 0; bottom: 0; z-index: 99;
  background: rgba(0, 0, 0, 0.45); display: flex; align-items: center; justify-content: center;
}
[data-route="pages/index/index"] .power-pop-box {
  width: calc(var(--rpx) * 480); padding: calc(var(--rpx) * 48) calc(var(--rpx) * 30) calc(var(--rpx) * 40); text-align: center;
  background: #ffffff; border-radius: calc(var(--rpx) * 16);
  animation: powerPopIn 220ms ease-out;
}
[data-route="pages/index/index"] .power-pop-cap { font-size: calc(var(--rpx) * 28); color: #888888; letter-spacing: calc(var(--rpx) * 4); }
[data-route="pages/index/index"] .power-pop-num { font-size: calc(var(--rpx) * 88); font-weight: 600; color: #07c160; line-height: 1.2; }
[data-route="pages/index/index"] .power-pop-sub { font-size: calc(var(--rpx) * 24); color: #888888; }

@keyframes powerPopIn { from { transform: scale(0.86); opacity: 0; } to { transform: scale(1); opacity: 1; } }
[data-route="pages/index/index"] /* 分享名片画布（#shareCanvas）：只在后台画转发图用，绝不参与排版。
   ⚠️ v4.69.2 在「我的」页用过 left:-9999px，iOS 会把整页撑出横向滚动；
   与 detail/mine 同款：钉在左上角缩到 1px + 全透明 + 不接事件。 */
.share-canvas {
  position: fixed;
  left: 0;
  top: 0;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
  z-index: -1;
}
[data-route="pages/index/index"] /* v4.74.20：猫咪乐园入口卡绿底，视觉突出 */
.game-entry-green {
  background: #e9f8ef;
  border: calc(var(--rpx) * 1) solid rgba(7, 193, 96, 0.22);
}
[data-route="pages/index/index"] .game-entry-green .game-entry-cat-img {
  background: #ffffff;
  border-radius: 50%;
}
[data-route="pages/index/index"] /* v4.86.259：「老师点评好了」提示条撤下（.review-tip/.review-count 样式随絆）——
   未读提醒改挂打卡主卡的按钮角标（见 .checkin-badge）。 */

/* v4.86.119（提审驳回第 2 条）：未登录时的**轻提示**，不再是一张拦人的登录卡。
 * v4.86.415（木哥 16:3x：「登录卡片和下边的找到组织卡片粘在一起了」）：
 * 全站卡片靠 .card 的 margin-bottom 排间距，这张卡当初只写了 margin-top ——
 * 未登录时战力卡不显示（它自带 margin: calc(var(--rpx) * 16) 0），登录卡下面紧贴「找到自己的组织」，
 * 两张白卡之间 0 间距，看着就是一块。补上 margin-bottom，与全站 calc(var(--rpx) * 16) 节奏一致。 */
.guest-tip {
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 24);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/index/index"] .guest-tip-t {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pages/index/index"] /* v4.86.415：登录失败的原因就贴在按钮上方（原来只落在页尾 .err，点完没反馈） */
.guest-tip-err {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #fa5151;
}
[data-route="pages/index/index"] .guest-tip-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/index/index"] /* ---------------- v4.86.230（木哥令）老师身份的「点评」tab ----------------
   打卡主卡（.checkin-card / .checkin-stats / .stat）整块复用 —— 两种身份下
   「一颗主键 + 一排数值」是同一件事，样式不该另起一套。下面只补老师这边
   独有的三条：名片小字、待点评单一行、行右侧的箭头。 */
.m-line {
  margin-top: calc(var(--rpx) * 20);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/index/index"] .m-task {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;
  border-top: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pages/index/index"] .m-task-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/index/index"] .m-task-name {
  font-size: calc(var(--rpx) * 32);
  color: #333333;
}
[data-route="pages/index/index"] .m-task-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/index/index"] .m-task-go {
  margin-left: calc(var(--rpx) * 16);
  color: #bbbbbb;
  font-size: calc(var(--rpx) * 40);
  line-height: 1;
}
[data-route="pages/index/index"] /* ---------------- 学员作业广场（v4.86.254 木哥令） ---------------- */
.plaza-item {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;
  border-bottom: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pages/index/index"] /* v4.86.270：广场学员档案化 —— 头像 + 数据行 + 精确到秒的提交时间 */
.plaza-ava {
  flex-shrink: 0;
  width: calc(var(--rpx) * 76);
  height: calc(var(--rpx) * 76);
  margin-right: calc(var(--rpx) * 18);
  border-radius: 50%;
  overflow: hidden;
  background: #eef7ee;
}
[data-route="pages/index/index"] .plaza-ava-img {
  width: calc(var(--rpx) * 76);
  height: calc(var(--rpx) * 76);
}
[data-route="pages/index/index"] .plaza-ava-txt {
  text-align: center;
  line-height: calc(var(--rpx) * 76);
  font-size: calc(var(--rpx) * 32);
  color: #0a7a3d;
}
[data-route="pages/index/index"] .plaza-no {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #9ec9ae;
}
[data-route="pages/index/index"] .plaza-stats {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
}
[data-route="pages/index/index"] .plaza-at {
  margin-top: calc(var(--rpx) * 2);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pages/index/index"] .plaza-item:last-child {
  border-bottom: none;
}
[data-route="pages/index/index"] .plaza-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/index/index"] .plaza-name {
  font-size: calc(var(--rpx) * 32);
  color: #333333;
}
[data-route="pages/index/index"] .plaza-date {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pages/index/index"] .plaza-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pages/index/index"] .plaza-tag {
  display: inline-block;
  margin-top: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 8);
  background: #eef7ee;
  color: #3a9e3a;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/index/index"] .plaza-btn {
  margin: 0 0 0 calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 24);
  height: calc(var(--rpx) * 60);
  line-height: calc(var(--rpx) * 60);
  border-radius: calc(var(--rpx) * 10);
  background: #2f9e44;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/index/index"] .plaza-btn-off {
  background: #cccccc;
  color: #ffffff;
}
[data-route="pages/index/index"] .plaza-empty {
  padding: calc(var(--rpx) * 20) 0;
}
[data-route="pages/index/index"] .plaza-more {
  padding: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 4);
  text-align: center;
  color: #2f9e44;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/index/index"] /* v4.86.267：老师点评分享 · 记忆跳转提示条 + 班级点评入口 */
.hw-tip {
  display: flex;
  align-items: center;
  margin: calc(var(--rpx) * 16) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  background: #e9f8ef;
  border: calc(var(--rpx) * 2) solid #c9ecd7;
}
[data-route="pages/index/index"] .hw-tip-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/index/index"] .hw-tip-t {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #0a7a3d;
}
[data-route="pages/index/index"] .hw-tip-s {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
}
[data-route="pages/index/index"] .hw-tip-x {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 32);
  color: #9ec9ae;
}
[data-route="pages/index/index"] /* v4.86.436（木哥令：「班级点评的新标志也不醒目」）——
   原来是米白底 #fdf1e3 + 棕字 #a8641a，跟标题的深灰并排几乎看不出有个标。
   改成实心暖橙 + 白字 + 加粗，与本轮「查字推荐」标同一支色（全站唯一暖橙），
   两个「新/推荐」一眼同源；字号仍 calc(var(--rpx) * 20)（A 层五档），靠配色与字重提亮。 */
.class-entry-new {
  margin-left: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #ff6a00;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(255, 106, 0, 0.3);
  font-size: calc(var(--rpx) * 20);
  font-weight: 600;
  color: #ffffff;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pages/index/index"] .class-entry-sub {
  margin-top: calc(var(--rpx) * 8);
  line-height: 1.6;
}
[data-route="pages/index/index"] /* v4.86.351：查字搜索框已收口到 components/char-search（页头共用），本页样式随旧卡退场 */

.class-entry-attr {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
  color: #4c8f68;
}
[data-route="pages/index/index"] .class-entry-btn {
  margin-top: calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 16) 0;
  border-radius: calc(var(--rpx) * 10);
  background: #e9f8ef;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #0a7a3d;
}
[data-route="pages/index/index"] /* v4.86.288（木哥令）：找到自己的组织 —— 输班级码直接加入班级。
   字号只走 20/24/28 档，圆角 999/10，绿色沿用本页那支 #0a7a3d/#07c160。 */
.cls-join-head {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 12);
}
[data-route="pages/index/index"] .cls-join-face {
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  border-radius: 50%;
  background: #e9f8ef;
  text-align: center;
  line-height: calc(var(--rpx) * 44);
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
}
[data-route="pages/index/index"] .cls-join-row {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 14);
  margin-top: calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 10) calc(var(--rpx) * 10) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 999);
  background: #f2f9f4;
}
[data-route="pages/index/index"] .cls-join-input {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #233c2e;
}
[data-route="pages/index/index"] .cls-join-ph {
  color: #9ec9ae;
}
[data-route="pages/index/index"] .cls-join-btn {
  flex-shrink: 0;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 30);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #ffffff;
}
[data-route="pages/index/index"] .cls-join-btn-hover {
  opacity: 0.85;
}
[data-route="pages/index/index"] .cls-join-btn-busy {
  opacity: 0.6;
}
[data-route="pages/index/index"] .cls-join-tip {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/index/index"] /* ---------- 语音陪伴（v7.0.151：原语音陪练卡整组退役，缩成页头胶囊键） ----------
   页头这枚与原积分键同构（绿底细绿边圆角），名字 + 左右开关 */
.app-header-voice {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 8) calc(var(--rpx) * 2) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(7, 193, 96, 0.08);
  border: calc(var(--rpx) * 1) solid rgba(7, 193, 96, 0.18);
}
[data-route="pages/index/index"] .app-header-voice-t {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/index/index"] .app-header-voice-sw {
  transform: scale(0.7);
}
[data-route="pages/index/index"] /* v7.0.151（木哥令「大按键，绿圈绿字风格」）：新手一键直达训练营 ——
   白底绿描边大胶囊键、绿字，摆原语音陪练卡的位置 */
.newbie-btn {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 24);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #07c160;
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pages/index/index"] .newbie-btn-hover {
  opacity: 0.85;
}
[data-route="pages/index/index"] /* v4.86.573：538 的 .boot 垫层样式随节点一起撤（它就是用户看到的闪屏）。 */

/* v7.0.071（木哥令）：「老师工具」升级成胶囊键 —— 结构抄页头积分键（浅底 + 细边 +
   calc(var(--rpx) * 999) 圆角），颜色换成「新」徽章那支全站唯一暖橙，键与标同色同源。 */
.class-entry-tool {
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(255, 106, 0, 0.08);
  border: calc(var(--rpx) * 1) solid rgba(255, 106, 0, 0.18);
  font-size: calc(var(--rpx) * 24);
  color: #ff6a00;
}
[data-route="pages/index/index"] /* v7.0.199（木哥令「有作业未提交，新手键下边直接出来完整的未提交作业的卡片」）：
   卡面与作业页（pkgOps/hwhome）同一张脸 —— 标题/布置日/状态章/最迟提交时间/
   提交作业主键 + 免费口径行，色板一致（微信绿/橙/红） */
.hw-todo-block { margin-top: calc(var(--rpx) * 20); }
[data-route="pages/index/index"] .hw-todo-card { background: #ffffff; border-radius: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 28); margin-bottom: calc(var(--rpx) * 20); }
[data-route="pages/index/index"] .hw-todo-head { display: flex; justify-content: space-between; align-items: flex-start; }
[data-route="pages/index/index"] .hw-todo-tt { flex: 1; min-width: 0; }
[data-route="pages/index/index"] .hw-todo-t1 { display: block; font-size: calc(var(--rpx) * 32); font-weight: 600; color: rgba(0, 0, 0, 0.9); line-height: 1.4; }
[data-route="pages/index/index"] .hw-todo-t2 { display: block; font-size: calc(var(--rpx) * 24); color: #b2b2b2; margin-top: calc(var(--rpx) * 8); }
[data-route="pages/index/index"] .hw-todo-st { font-size: calc(var(--rpx) * 24); padding: calc(var(--rpx) * 6) calc(var(--rpx) * 16); border-radius: calc(var(--rpx) * 8); flex-shrink: 0; margin-left: calc(var(--rpx) * 16); }
[data-route="pages/index/index"] .hw-todo-st.n { background: #fff7f0; color: #fa9d3b; }
[data-route="pages/index/index"] .hw-todo-st.s { background: #f0f9eb; color: #07c160; }
[data-route="pages/index/index"] .hw-todo-meta { display: flex; flex-wrap: wrap; gap: calc(var(--rpx) * 8) calc(var(--rpx) * 24); margin-top: calc(var(--rpx) * 16); font-size: calc(var(--rpx) * 24); color: #fa5151; }
[data-route="pages/index/index"] .hw-todo-none { font-size: calc(var(--rpx) * 24); color: #b2b2b2; }
[data-route="pages/index/index"] .hw-todo-btn { background: #07c160; color: #ffffff; font-weight: 500; font-size: calc(var(--rpx) * 28); padding: calc(var(--rpx) * 22) 0; margin-top: calc(var(--rpx) * 16); border-radius: calc(var(--rpx) * 10); line-height: 1.4; }
[data-route="pages/index/index"] .hw-todo-btn::after { border: none; }
[data-route="pages/index/index"] .hw-todo-btn-hover { background: #06ad56; }
[data-route="pages/index/index"] .hw-todo-free { margin-top: calc(var(--rpx) * 12); font-size: calc(var(--rpx) * 20); color: #b2b2b2; text-align: center; }



/* ---- components/voice-bar/voice-bar.wxss ---- */
[data-comp="components/voice-bar/voice-bar"] /* 统一语音输入条 —— 微信绿系，跟全站一致 */
.vb {
  width: 100%;
}
[data-comp="components/voice-bar/voice-bar"] /* ============ 录音浮层（v4.86.81，照微信的页面效果）
   按住期间全屏变暗 + 绿色气泡 + 动态波形，不再边说边出文字；
   上划取消时气泡变灰、提示变红。fixed 盖满屏，组件里同样生效。 */
.vb-rec {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 1000;
  background: rgba(0, 0, 0, 0.4);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
[data-comp="components/voice-bar/voice-bar"] .vb-rec-bubble {
  min-width: calc(var(--rpx) * 340);
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 60);
  background: #95ec69;
  border-radius: calc(var(--rpx) * 24);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/voice-bar/voice-bar"] .vb-rec-no {
  background: #d8d8d8;
}
[data-comp="components/voice-bar/voice-bar"] .vb-rec-tail {
  width: 0;
  height: 0;
  border-left: calc(var(--rpx) * 18) solid transparent;
  border-right: calc(var(--rpx) * 18) solid transparent;
  border-top: calc(var(--rpx) * 22) solid #95ec69;
}
[data-comp="components/voice-bar/voice-bar"] .vb-rec-tail-no {
  border-top-color: #d8d8d8;
}
[data-comp="components/voice-bar/voice-bar"] .vb-wave {
  display: flex;
  align-items: center;
  height: calc(var(--rpx) * 100);
}
[data-comp="components/voice-bar/voice-bar"] .vb-wbar {
  width: calc(var(--rpx) * 12);
  height: calc(var(--rpx) * 32);
  margin: 0 calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 8);
  background: rgba(0, 0, 0, 0.5);
  animation: vbWave 0.9s ease-in-out infinite;
}
[data-comp="components/voice-bar/voice-bar"] .vb-rec-no .vb-wbar {
  background: rgba(0, 0, 0, 0.28);
  animation: none;
}

@keyframes vbWave {
  0% {
    height: calc(var(--rpx) * 24);
  }
  50% {
    height: calc(var(--rpx) * 88);
  }
  100% {
    height: calc(var(--rpx) * 24);
  }
}
[data-comp="components/voice-bar/voice-bar"] .vb-rec-tip {
  margin-top: calc(var(--rpx) * 140);
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
}
[data-comp="components/voice-bar/voice-bar"] .vb-rec-tip-no {
  color: #ffb2b2;
}
[data-comp="components/voice-bar/voice-bar"] /* ============ 整条输入栏 ============ */
.vb-bar {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 20) calc(calc(var(--rpx) * 12) + env(safe-area-inset-bottom));
  background: #f7f7f7;
  border-top: calc(var(--rpx) * 1) solid #e5e5e5;
}
[data-comp="components/voice-bar/voice-bar"] .vb-key {
  flex-shrink: 0;
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 64);
  text-align: center;
  font-size: calc(var(--rpx) * 40);
  border-radius: 50%;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
}
[data-comp="components/voice-bar/voice-bar"] /* v4.86.538：按键里的图标改成微信那枚「圆圈里带声波」的语音键（木哥 20:1x
   「输入框的麦克风图标，全站全部调整为微信中用的圆圈里面带声音的符号」）。 */
.vb-ico-voice {
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  margin: calc(var(--rpx) * 10) auto 0;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48Y2lyY2xlIGN4PSI0OCIgY3k9IjQ4IiByPSI0MiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMTkxOTE5IiBzdHJva2Utd2lkdGg9IjUiLz48Y2lyY2xlIGN4PSIzNyIgY3k9IjQ4IiByPSI1IiBmaWxsPSIjMTkxOTE5Ii8+PHBhdGggZD0iTTQ5IDM5YTEyIDEyIDAgMCAxIDAgMTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE5MTkxOSIgc3Ryb2tlLXdpZHRoPSI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNNTcgMzBhMjQgMjQgMCAwIDEgMCAzNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMTkxOTE5IiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==");
}
[data-comp="components/voice-bar/voice-bar"] /* 右边那个占位格：让「按住说话」居中，不偏左 */
.vb-key-ghost {
  background: transparent;
  border-color: transparent;
}
[data-comp="components/voice-bar/voice-bar"] .vb-mic {
  flex: 1;
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  text-align: center;
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
  transition: background 0.12s ease, transform 0.12s ease;
}
[data-comp="components/voice-bar/voice-bar"] .vb-mic-t {
  font-size: calc(var(--rpx) * 28);
  color: #333333;
  font-weight: 500;
}
[data-comp="components/voice-bar/voice-bar"] /* v4.86.91：按住反馈「只加深一档」（微信本身不变绿）——
 * 原来整块跳成微信绿 + 白字，和「按住 说话」那枚按键的规矩自相矛盾。 */
.vb-mic-on {
  background: #e3e3e3;
  border-color: #dcdcdc;
  transform: scale(0.98);
}
[data-comp="components/voice-bar/voice-bar"] .vb-mic-on .vb-mic-t {
  color: #191919;
}
[data-comp="components/voice-bar/voice-bar"] .vb-mic-off {
  background: #f2f2f2;
  border-color: #e5e5e5;
}
[data-comp="components/voice-bar/voice-bar"] .vb-mic-off .vb-mic-t {
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  font-weight: 400;
}
[data-comp="components/voice-bar/voice-bar"] .vb-input {
  flex: 1;
  height: calc(var(--rpx) * 72);
  padding: 0 calc(var(--rpx) * 20);
  box-sizing: border-box;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  color: #333333;
}
[data-comp="components/voice-bar/voice-bar"] .vb-ph {
  color: #b2b2b2;
  font-size: calc(var(--rpx) * 28);
}
[data-comp="components/voice-bar/voice-bar"] .vb-send {
  flex-shrink: 0;
  padding: 0 calc(var(--rpx) * 26);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  border-radius: calc(var(--rpx) * 10);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
}
[data-comp="components/voice-bar/voice-bar"] .vb-send-off {
  background: #a6e0be;
}
[data-comp="components/voice-bar/voice-bar"] /* ============ 小麦克风按钮（挂到别的输入框旁） ============ */
/* v4.86.88（木哥 23:3x 第 2 条「严格按照微信生态的按键、空间布局设计来做」）：
   按住说话 = 微信那颗「按住 说话」—— 浅灰底、全圆胶囊、正文黑字；
   按住时只加深一档（微信本身不变色，录音浮层已经在给反馈）。 */
.vb-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: calc(var(--rpx) * 72);
  padding: 0 calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 999);
  background: #f7f7f7;
  border: calc(var(--rpx) * 1) solid #ececec;
}
[data-comp="components/voice-bar/voice-bar"] .vb-btn-t {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  font-weight: 400;
}
[data-comp="components/voice-bar/voice-bar"] /* v4.86.86（木哥 22:5x 第 5 条）：大号变体 + 撑满一行 —— 长按类按钮得够好按、够显眼 */
.vb-btn-lg {
  height: calc(var(--rpx) * 80);
  padding: 0 calc(var(--rpx) * 32);
}
[data-comp="components/voice-bar/voice-bar"] .vb-btn-lg .vb-btn-t {
  font-size: calc(var(--rpx) * 32);
}
[data-comp="components/voice-bar/voice-bar"] .vb-block .vb-btn {
  width: 100%;
}
[data-comp="components/voice-bar/voice-bar"] .vb-block {
  width: 100%;
}
[data-comp="components/voice-bar/voice-bar"] .vb-btn-on {
  background: #e3e3e3;
  border-color: #dcdcdc;
}
[data-comp="components/voice-bar/voice-bar"] .vb-btn-on .vb-btn-t {
  color: #191919;
}
[data-comp="components/voice-bar/voice-bar"] .vb-btn-off {
  background: #f2f2f2;
  border-color: #e5e5e5;
}
[data-comp="components/voice-bar/voice-bar"] .vb-btn-off .vb-btn-t {
  color: #b2b2b2;
}
[data-comp="components/voice-bar/voice-bar"] /* v4.86.119 提审驳回第 1 条 → v4.86.128 木哥 16:0x：声纹协议改成页面上圈选同意（原来是弹层）
   圈子点一下 = 同意，《声纹授权协议》点一下 = 看全文。未勾时按住说话不录音，只闪一下。
   字号只走 A 层五档（20/24/28/32/calc(var(--rpx) * 40)）。 */
.vb-agree {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 4) calc(var(--rpx) * 10);
}
[data-comp="components/voice-bar/voice-bar"] .vb-agree-dot {
  width: calc(var(--rpx) * 32);
  height: calc(var(--rpx) * 32);
  border: calc(var(--rpx) * 2) solid #c8c9cc;
  border-radius: 50%;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-right: calc(var(--rpx) * 10);
  flex-shrink: 0;
}
[data-comp="components/voice-bar/voice-bar"] .vb-agree-dot-on {
  border-color: #07c160;
  background: #07c160;
}
[data-comp="components/voice-bar/voice-bar"] .vb-agree-tick {
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 20);
  color: #ffffff;
}
[data-comp="components/voice-bar/voice-bar"] .vb-agree-tx {
  font-size: calc(var(--rpx) * 24);
  color: #333333;
}
[data-comp="components/voice-bar/voice-bar"] .vb-agree-lk {
  font-size: calc(var(--rpx) * 24);
  color: #576b95;
}
[data-comp="components/voice-bar/voice-bar"] /* 已同意：整行退到背景里，只留一个能点开的入口 */
.vb-agree-on .vb-agree-tx {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-comp="components/voice-bar/voice-bar"] .vb-agree-on .vb-agree-lk {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-comp="components/voice-bar/voice-bar"] /* 没勾就按录音：这一行闪两下（把人指到圈子上去） */
.vb-agree-flash {
  animation: vb-agree-blink 0.4s ease-in-out 2;
}

@keyframes vb-agree-blink {
  0% { opacity: 1; }
  50% { opacity: 0.25; }
  100% { opacity: 1; }
}
[data-comp="components/voice-bar/voice-bar"] /* v4.86.136（木哥 18:0x）：btn 变体的圈选行**并进按键那一行、落在按键右边** ——
   原来在按键下边、还带「我已阅读并同意」六个字，一行挤不下就折成「已同 意」
   「《声纹授权协 议》」（圈画批注页录像实锤）。现在一行到底、只留圈 + 《》。 */
.vb-btn-row {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
}
[data-comp="components/voice-bar/voice-bar"] /* 按键自己不许被挤扁（四个字是页面给的下限） */
.vb-btn-row .vb-btn {
  flex-shrink: 0;
}
[data-comp="components/voice-bar/voice-bar"] .vb-agree-after {
  margin-left: calc(var(--rpx) * 18);
  padding: 0;
  flex-shrink: 0;
}
[data-comp="components/voice-bar/voice-bar"] /* 这一行只剩圈子可点 ⇒ 热区给足（手指没那么准） */
.vb-agree-after .vb-agree-dot {
  width: calc(var(--rpx) * 36);
  height: calc(var(--rpx) * 36);
  margin-right: calc(var(--rpx) * 8);
}
[data-comp="components/voice-bar/voice-bar"] .vb-agree-after .vb-agree-tick {
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 24);
}
[data-comp="components/voice-bar/voice-bar"] /* 已同意也不再缩小字号（原来掉到 calc(var(--rpx) * 20)，一行里看着像掉了半截） */
.vb-agree-after .vb-agree-lk, [data-comp="components/voice-bar/voice-bar"] .vb-agree-on.vb-agree-after .vb-agree-lk {
  font-size: calc(var(--rpx) * 24);
}



/* ---- components/loading-bar/loading-bar.wxss ---- */
[data-comp="components/loading-bar/loading-bar"] /* v4.86.140 通用加载条 —— 全站唯一加载指示器（木哥 19:0x）
   v4.86.297（木哥令）：改成「进度条 + 主人身份等级对应的墨灵猫在条上走」。
   颜色口径：轨道 #ececec（浅灰底）/ 进度 #07c160（品牌绿，与主按钮同色）
   条与猫同一条时长、同一条曲线 ⇒ 猫永远踩在进度头上，不闪跳。
   字号只用 calc(var(--rpx) * 24)（A 层 5 档内）；不出现任何红字。 */
.lb {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: calc(var(--rpx) * 24) 0;
}
[data-comp="components/loading-bar/loading-bar"] .lb-block {
  padding: calc(var(--rpx) * 48) 0;
}
[data-comp="components/loading-bar/loading-bar"] /* 轨道：猫要蹲在条上，所以不能 overflow:hidden（否则猫被裁掉半个身子） */
.lb-track {
  position: relative;
  width: calc(var(--rpx) * 320);
  height: calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 8);
  background: #ececec;
}
[data-comp="components/loading-bar/loading-bar"] .lb-fill {
  width: 0;
  height: 100%;
  border-radius: calc(var(--rpx) * 8);
  background: #07c160;
  animation: lb-walk 1.6s linear infinite;
}
[data-comp="components/loading-bar/loading-bar"] /* 迷你版：塞进 calc(var(--rpx) * 160) 缩略图方块里（作品图加载占位） */
.lb-mini {
  padding: 0;
}
[data-comp="components/loading-bar/loading-bar"] .lb-mini .lb-track {
  width: calc(var(--rpx) * 120);
  height: calc(var(--rpx) * 8);
}
[data-comp="components/loading-bar/loading-bar"] .lb-mini .lb-cat {
  width: calc(var(--rpx) * 28);
  height: calc(var(--rpx) * 28);
  margin-left: calc(var(--rpx) * -14);
  bottom: calc(var(--rpx) * 6);
}
[data-comp="components/loading-bar/loading-bar"] /* 真实进度模式：条停在 pct 处（wxml 里内联 width），猫同步走过去 */
.lb-fill-real {
  animation: none;
  transition: width 0.3s linear;
}
[data-comp="components/loading-bar/loading-bar"] /* 猫：width calc(var(--rpx) * 40) 宽高比交给 aspectFit；bottom 让它站在条上 */
.lb-cat {
  position: absolute;
  left: 0;
  bottom: calc(var(--rpx) * 8);
  width: calc(var(--rpx) * 40);
  height: calc(var(--rpx) * 40);
  margin-left: calc(var(--rpx) * -20);
  animation: lb-cat-walk 1.6s linear infinite;
}
[data-comp="components/loading-bar/loading-bar"] .lb-cat-real {
  animation: none;
  transition: left 0.3s linear;
}
[data-comp="components/loading-bar/loading-bar"] .lb-tx {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-comp="components/loading-bar/loading-bar"] /* 条 0→100% 与猫 0→100% 同刻同速：猫踩在进度头上 */
@keyframes lb-walk {
  0% {
    width: 0;
  }
  100% {
    width: 100%;
  }
}


@keyframes lb-cat-walk {
  0% {
    left: 0;
  }
  100% {
    left: 100%;
  }
}
[data-comp="components/loading-bar/loading-bar"] /* ---------------- v4.86.368（木哥 365 号令）：启动进度条（fixed） ----------------
   「每次进小程序，开始出现的空白页，不管时间多长，都要加一个进度条」。
   页首通栏 calc(var(--rpx) * 6)：从第一帧起就钉在屏幕最上边（页面视口，navbar 之下），
   循环动画自己走 —— 加载 1 秒它走 1 秒，加载 10 秒它走 10 秒，绝不停在半路。
   颜色口径照旧：轨道 #ececec、进度 #07c160、猫照旧在条上走（297 号令同一副脸）。 */
.lb-fixed {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  z-index: 9999;
  padding: 0;
  display: block;
  pointer-events: none;
}
[data-comp="components/loading-bar/loading-bar"] .lb-fixed .lb-track {
  width: 100%;
  height: calc(var(--rpx) * 6);
  border-radius: 0;
  background: #ececec;
}
[data-comp="components/loading-bar/loading-bar"] .lb-fixed .lb-fill {
  border-radius: 0;
}
[data-comp="components/loading-bar/loading-bar"] .lb-fixed .lb-cat {
  width: calc(var(--rpx) * 32);
  height: calc(var(--rpx) * 32);
  margin-left: calc(var(--rpx) * -16);
  bottom: calc(var(--rpx) * 4);
}



/* ---- components/cat-loading/cat-loading.wxss ---- */
[data-comp="components/cat-loading/cat-loading"] /* 猫走进度 · 全屏遮罩（v4.86.297 木哥令）—— 微信生态浅色：白卡 + 绿条 + 猫
   条与猫同一时长同一曲线 ⇒ 猫踩在进度头上；字号只用 24/calc(var(--rpx) * 28)（A 层 5 档内）。 */
.cl-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  z-index: 500;
  background: rgba(0, 0, 0, 0.3);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/cat-loading/cat-loading"] .cl-card {
  width: calc(var(--rpx) * 520);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 48) calc(var(--rpx) * 40) calc(var(--rpx) * 36);
  display: flex;
  flex-direction: column;
  align-items: center;
}
[data-comp="components/cat-loading/cat-loading"] .cl-track {
  position: relative;
  width: calc(var(--rpx) * 400);
  height: calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 8);
  background: #ececec;
}
[data-comp="components/cat-loading/cat-loading"] .cl-fill {
  width: 0;
  height: 100%;
  border-radius: calc(var(--rpx) * 8);
  background: #07c160;
  animation: cl-walk 1.6s linear infinite;
}
[data-comp="components/cat-loading/cat-loading"] .cl-cat {
  position: absolute;
  left: 0;
  bottom: calc(var(--rpx) * 8);
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  margin-left: calc(var(--rpx) * -22);
  animation: cl-cat-walk 1.6s linear infinite;
}
[data-comp="components/cat-loading/cat-loading"] .cl-tx {
  margin-top: calc(var(--rpx) * 28);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  text-align: center;
}


@keyframes cl-walk {
  0% {
    width: 0;
  }
  100% {
    width: 100%;
  }
}


@keyframes cl-cat-walk {
  0% {
    left: 0;
  }
  100% {
    left: 100%;
  }
}



/* ---- components/privacy-pop/privacy-pop.wxss ---- */
[data-comp="components/privacy-pop/privacy-pop"] /* v4.86.286 自定义隐私弹窗 —— 与全站弹窗风格一致（白圆角卡 + 品牌绿同意键） */
.pp-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 3000;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-box {
  width: calc(var(--rpx) * 580);
  background: #fff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 36) calc(var(--rpx) * 32);
  box-sizing: border-box;
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #111;
  text-align: center;
  margin-bottom: calc(var(--rpx) * 28);
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-body {
  max-height: calc(var(--rpx) * 480);
}
[data-comp="components/privacy-pop/privacy-pop"] /* v4.86.374（370 号令）：一张卡里两段授权 —— 隐私那段打头，声纹那段跟后、
 * 一条浅分隔线隔开（同一张卡，但两份协议各自看得清） */
.pp-sec {
  padding: calc(var(--rpx) * 4) 0;
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-sec-voice {
  margin-top: calc(var(--rpx) * 20);
  padding-top: calc(var(--rpx) * 20);
  border-top: calc(var(--rpx) * 1) solid #ececec;
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-sub {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #111;
  line-height: calc(var(--rpx) * 44);
  margin-bottom: calc(var(--rpx) * 6);
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-text {
  font-size: calc(var(--rpx) * 28);
  line-height: calc(var(--rpx) * 48);
  color: #333;
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-link {
  font-size: calc(var(--rpx) * 28);
  line-height: calc(var(--rpx) * 48);
  color: #0a7a3d;
  text-decoration: underline;
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-btns {
  display: flex;
  margin-top: calc(var(--rpx) * 36);
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-btn {
  flex: 1;
  margin: 0 calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 8) 0;
  line-height: 2.2;
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-no {
  background: #f2f3f5;
  color: #333;
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-yes {
  background: #07c160;
  color: #fff;
}
[data-comp="components/privacy-pop/privacy-pop"] .pp-btn::after {
  border: none;
}



/* ---- components/login-agree/login-agree.wxss ---- */
[data-comp="components/login-agree/login-agree"] /* 登录前确认卡（v4.86.466）—— 与全站底部卡同款：白底、上圆角、绿色主按钮。
   木哥 11:4x「能不要就不要」：标题、副标题、小字说明、底部提示全没了，
   只剩三行 + 一颗键 + 一行「暂不登录」，卡片因此矮了一截。
   v4.86.475（木哥 17:47 截图）：三条协议**各自一行**、字再小一号，整张卡再紧凑
   —— 行距/圈/按钮/「暂不登录」全面收 4~calc(var(--rpx) * 8)；正文 32 → calc(var(--rpx) * 24) 并 nowrap，
   窄机上宁可打点点（ellipsis）也不折行（折行会让「保护指引」那一串断开）。 */
.la-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  z-index: 3500;
  background: rgba(0, 0, 0, 0.45);
  display: flex;
  align-items: flex-end;
}
[data-comp="components/login-agree/login-agree"] .la-card {
  width: 100%;
  box-sizing: border-box;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 32) calc(calc(var(--rpx) * 18) + env(safe-area-inset-bottom));
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10) calc(var(--rpx) * 10) 0 0;
}
[data-comp="components/login-agree/login-agree"] .la-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 10) 0;
}
[data-comp="components/login-agree/login-agree"] /* 圆圈：勾上是品牌绿实心 + 白勾 */
.la-box {
  flex: none;
  width: calc(var(--rpx) * 36);
  height: calc(var(--rpx) * 36);
  margin-right: calc(var(--rpx) * 14);
  box-sizing: border-box;
  border: calc(var(--rpx) * 2) solid #c8c8c8;
  border-radius: 50%;
  background: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/login-agree/login-agree"] .la-box-on {
  border-color: #07c160;
  background: #07c160;
}
[data-comp="components/login-agree/login-agree"] .la-tick {
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 24);
  color: #ffffff;
  font-weight: 700;
}
[data-comp="components/login-agree/login-agree"] .la-line {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 36);
  color: #191919;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-comp="components/login-agree/login-agree"] .la-link {
  color: #0a7a3d;
  text-decoration: underline;
}
[data-comp="components/login-agree/login-agree"] .la-err {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  text-align: center;
}
[data-comp="components/login-agree/login-agree"] .la-btn {
  margin-top: calc(var(--rpx) * 16);
  width: 100%;
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  padding: 0;
  border: none;
  border-radius: calc(var(--rpx) * 10);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-comp="components/login-agree/login-agree"] .la-btn::after {
  border: none;
}
[data-comp="components/login-agree/login-agree"] .la-btn[disabled] {
  background: #d8d8d8;
  color: #ffffff;
}
[data-comp="components/login-agree/login-agree"] .la-later {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 36);
  color: #999999;
  text-align: center;
}



/* ---- components/gold-dialog/gold-dialog.wxss ---- */
[data-comp="components/gold-dialog/gold-dialog"] /* 金色弹窗 · v4.86.540（木哥 2026-10-26 定稿 · 框 B / C / E 共用一套壳）
 * 金三档：主键 #fbeecd→#cfa64f / 深金带 #6d4b10→#6a480e / 卡片底 #fffdf8→#f8eac6。
 * 尺寸：弹窗宽 calc(var(--rpx) * 480)，深金带 calc(var(--rpx) * 72)，主键 calc(var(--rpx) * 82)。
 *
 * 字号（v4.86.550 木哥令「所有金壳的弹框的文字，严格按照微信内弹窗的各级别标题的字号」）：
 *   微信弹窗是 17px 标题 + 14px 正文 + 17px 按键，本仓 A 层只有 20/24/28/32/40 五档，
 *   按 1px≈calc(var(--rpx) * 2) 取最近档 —— 17px→calc(var(--rpx) * 32)、14px→calc(var(--rpx) * 28)、12px→calc(var(--rpx) * 24)、10px→calc(var(--rpx) * 20)：
 *     深金带 / 主标题 / 主键 / 文字链次键 = calc(var(--rpx) * 32)（微信 17px 那一级）
 *     副题（正文说明）、权益清单每行         = calc(var(--rpx) * 28)（微信 14px 正文）
 *     金额条标签、单位、勾号                = calc(var(--rpx) * 24)（微信 12px 辅助）
 *     极细注（fine print）                  = calc(var(--rpx) * 20)（微信 10px 注脚）
 *     金额数字                              = calc(var(--rpx) * 40)（收费面另有一档：价目要一眼看到）
 *   改字号前先对这张表，别在弹窗里自造 26 / 30 这种中间值（lint-style 会拦）。 */
.gd-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.52);
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-dlg {
  width: calc(var(--rpx) * 480);
  border-radius: calc(var(--rpx) * 30);
  overflow: hidden;
  background: linear-gradient(180deg, #fffdf8 0%, #fffaef 58%, #fdf4e2 100%);
  box-shadow: 0 calc(var(--rpx) * 36) calc(var(--rpx) * 100) rgba(80, 55, 10, 0.28), 0 0 0 calc(var(--rpx) * 1) rgba(214, 186, 124, 0.55);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-band {
  height: calc(var(--rpx) * 72);
  background: linear-gradient(135deg, #6d4b10, #8d6620 52%, #6a480e);
  color: #ffe9b8;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  letter-spacing: calc(var(--rpx) * 6);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-bd {
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 30) calc(var(--rpx) * 22);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 800;
  color: #4a3208;
  text-align: center;
  line-height: 1.45;
  letter-spacing: calc(var(--rpx) * 0.4);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-s {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  color: #a1834a;
  text-align: center;
  line-height: 1.6;
  /* v7.0.144：查字页那句「单买｜会员更合算」是两段（源串里带 \n\n），
     不写 pre-line 会被折成一整行，两条路的对比就糊在一起了 */
  white-space: pre-line;
}
[data-comp="components/gold-dialog/gold-dialog"] /* 金额条（框 B 的魂：一眼看到扣多少、还剩多少） */
.gd-kv {
  margin-top: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: linear-gradient(135deg, #6d4b10, #8d6620 52%, #6a480e);
  box-shadow: inset 0 calc(var(--rpx) * 1) 0 rgba(255, 255, 255, 0.22), inset 0 0 0 calc(var(--rpx) * 1) rgba(255, 231, 176, 0.28),
    0 calc(var(--rpx) * 8) calc(var(--rpx) * 28) rgba(140, 99, 20, 0.22);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-k {
  font-size: calc(var(--rpx) * 24);
  color: #e6cd97;
  letter-spacing: calc(var(--rpx) * 0.6);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-v {
  display: flex;
  align-items: baseline;
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-num {
  font-size: calc(var(--rpx) * 40);
  font-weight: 800;
  color: #fff3d0;
  line-height: 1;
  text-shadow: 0 calc(var(--rpx) * 1) 0 rgba(80, 55, 10, 0.45);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-suf {
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  color: #ffeec2;
  margin-left: calc(var(--rpx) * 4);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-kv-mute {
  background: linear-gradient(135deg, #fdf7e8, #f7ebcd);
  box-shadow: inset 0 0 0 calc(var(--rpx) * 1) #e8d5a6;
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-kv-mute .gd-k { color: #96793c; }
[data-comp="components/gold-dialog/gold-dialog"] .gd-kv-mute .gd-num { color: #8a6320; text-shadow: none; }
[data-comp="components/gold-dialog/gold-dialog"] .gd-kv-mute .gd-suf { color: #5c4a1e; }
[data-comp="components/gold-dialog/gold-dialog"] /* 权益 / 回执清单 */
.gd-items {
  margin-top: calc(var(--rpx) * 18);
  padding-top: calc(var(--rpx) * 16);
  border-top: calc(var(--rpx) * 1) solid #f0e3c4;
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-item {
  display: flex;
  align-items: flex-start;
  line-height: 1.85;
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-ck {
  font-size: calc(var(--rpx) * 24);
  color: #c79733;
  width: calc(var(--rpx) * 24);
  flex: 0 0 calc(var(--rpx) * 24);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-it {
  font-size: calc(var(--rpx) * 28);
  color: #4a3a17;
  flex: 1;
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-fine {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 20);
  color: #a2937a;
  text-align: center;
  line-height: 1.5;
}
[data-comp="components/gold-dialog/gold-dialog"] /* 键区：一颗金主键 + 一条文字链次键 */
.gd-acts {
  display: flex;
  align-items: center;
  padding: 0 calc(var(--rpx) * 30) calc(var(--rpx) * 26);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-ghost {
  /* calc(var(--rpx) * 32) 的 4 字取消失键（「退出邀请」）要放得下：calc(var(--rpx) * 164) 才不挤 */
  width: calc(var(--rpx) * 164);
  height: calc(var(--rpx) * 82);
  border-radius: calc(var(--rpx) * 10);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 32);
  color: #8a7340;
  background: rgba(201, 151, 51, 0.1);
  margin-right: calc(var(--rpx) * 14);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-ok {
  flex: 1;
  height: calc(var(--rpx) * 82);
  border-radius: calc(var(--rpx) * 10);
  background: linear-gradient(180deg, #fbeecd 0%, #eed79f 46%, #dcb96a 78%, #cfa64f 100%);
  color: #6b4a12;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  letter-spacing: calc(var(--rpx) * 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: inset 0 calc(var(--rpx) * 1) 0 rgba(255, 255, 255, 0.8), inset 0 0 0 calc(var(--rpx) * 1) rgba(255, 255, 255, 0.5),
    0 calc(var(--rpx) * 8) calc(var(--rpx) * 24) rgba(150, 105, 25, 0.2);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-ok-danger {
  background: linear-gradient(180deg, #ef6a52, #d3442c);
  color: #ffffff;
  box-shadow: inset 0 calc(var(--rpx) * 1) 0 rgba(255, 255, 255, 0.35), 0 calc(var(--rpx) * 8) calc(var(--rpx) * 24) rgba(200, 60, 40, 0.24);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-acts-one .gd-ok {
  width: 100%;
}
[data-comp="components/gold-dialog/gold-dialog"] /* v7.0.144：有第三条路（文字链）时键区收一点底距，给文字链让位，不把框撑高 */
.gd-acts-link {
  padding-bottom: calc(var(--rpx) * 18);
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-link {
  padding: 0 calc(var(--rpx) * 30) calc(var(--rpx) * 26);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #8a7340;
}
[data-comp="components/gold-dialog/gold-dialog"] .gd-hover {
  opacity: 0.9;
}



/* ---- components/char-search/char-search.wxss ---- */
[data-comp="components/char-search/char-search"] /* v4.86.351（木哥 350 号令）：查字搜索框 —— 页头 logo 下边一条卡
   样式沿用 v4.86.289 的查字卡：淡绿底胶囊 + 「字/典」轮播图标 + 查写法键 */
.cs-card {
  margin-top: calc(var(--rpx) * 16);
  /* v4.86.353（木哥 352 号令）：与下方卡片留出距离 —— 全局 .card 只有
     margin-bottom 没有 margin-top，本卡不给自己下边距就会和下一张贴死 */
  margin-bottom: calc(var(--rpx) * 16);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  box-sizing: border-box;
}
[data-comp="components/char-search/char-search"] .cs-row {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 999);
  background: #f2f9f4;
}
[data-comp="components/char-search/char-search"] .cs-ico {
  position: relative;
  flex-shrink: 0;
  width: calc(var(--rpx) * 52);
  height: calc(var(--rpx) * 52);
  border-radius: 50%;
  background: #0a7a3d;
  color: #ffffff;
  overflow: hidden;
}
[data-comp="components/char-search/char-search"] .cs-ico-a, [data-comp="components/char-search/char-search"] .cs-ico-b {
  position: absolute;
  left: 0;
  top: 0;
  width: calc(var(--rpx) * 52);
  height: calc(var(--rpx) * 52);
  text-align: center;
  line-height: calc(var(--rpx) * 52);
  font-size: calc(var(--rpx) * 24);
}
[data-comp="components/char-search/char-search"] .cs-ico-a {
  animation: cs-dict-a 2.6s steps(1, end) infinite;
}
[data-comp="components/char-search/char-search"] .cs-ico-b {
  animation: cs-dict-b 2.6s steps(1, end) infinite;
}


@keyframes cs-dict-a {
  0% { opacity: 1; }
  50% { opacity: 0; }
  100% { opacity: 1; }
}


@keyframes cs-dict-b {
  0% { opacity: 0; }
  50% { opacity: 1; }
  100% { opacity: 0; }
}
[data-comp="components/char-search/char-search"] .cs-input {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-comp="components/char-search/char-search"] .cs-ph {
  color: #9a9a9a;
  font-size: calc(var(--rpx) * 28);
}
[data-comp="components/char-search/char-search"] .cs-go {
  flex-shrink: 0;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 999);
  background: #ffffff;
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
}
[data-comp="components/char-search/char-search"] .cs-go-hover {
  background: #e8f5ec;
}



/* ---- components/hello-profile/hello-profile.wxss ---- */
[data-comp="components/hello-profile/hello-profile"] .hp-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  /* v4.86.569：对齐登录确认卡（3500）—— 那颗键在木哥真机上点得通，
     把层级这个变量也消掉 */
  z-index: 3500;
  background: rgba(0, 0, 0, 0.45);
  display: flex;
  align-items: flex-end;
}
[data-comp="components/hello-profile/hello-profile"] .hp-card {
  width: 100%;
  box-sizing: border-box;
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 40) calc(calc(var(--rpx) * 32) + env(safe-area-inset-bottom));
  background: #ffffff;
  border-radius: calc(var(--rpx) * 20) calc(var(--rpx) * 20) 0 0;
}
[data-comp="components/hello-profile/hello-profile"] .hp-title {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #191919;
  text-align: center;
}
[data-comp="components/hello-profile/hello-profile"] /* v4.86.574：一步一提示行（头像好了 → 点键盘上的「用微信昵称」） */
.hp-sub {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  text-align: center;
}
[data-comp="components/hello-profile/hello-profile"] /* 主按钮：整张卡最显眼的东西，占满宽度、够高，手指放上去就是它 */
.hp-one {
  margin-top: calc(var(--rpx) * 32);
  width: 100%;
  height: calc(var(--rpx) * 104);
  line-height: calc(var(--rpx) * 104);
  padding: 0;
  border: none;
  border-radius: calc(var(--rpx) * 12);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
}
[data-comp="components/hello-profile/hello-profile"] .hp-one::after {
  border: none;
}
[data-comp="components/hello-profile/hello-profile"] /* 昵称步：type=nickname 的输入框穿主按钮同一身衣服（居中、绿底白字），
   点它弹键盘，键盘上方就是微信那颗「使用微信昵称」 */
.hp-nick-btn {
  text-align: center;
}
[data-comp="components/hello-profile/hello-profile"] .hp-ph-btn {
  color: rgba(255, 255, 255, 0.85);
  font-weight: 600;
}
[data-comp="components/hello-profile/hello-profile"] .hp-ph {
  color: rgba(255, 255, 255, 0.85);
}
[data-comp="components/hello-profile/hello-profile"] /* 授权协议行：小圈圈打勾，圈在左、文案在右 */
.hp-agree {
  margin-top: calc(var(--rpx) * 28);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: calc(var(--rpx) * 12);
}
[data-comp="components/hello-profile/hello-profile"] .hp-check {
  width: calc(var(--rpx) * 36);
  height: calc(var(--rpx) * 36);
  border: calc(var(--rpx) * 3) solid #c8c8c8;
  border-radius: 50%;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none;
  background: #ffffff;
}
[data-comp="components/hello-profile/hello-profile"] .hp-check-on {
  border-color: #07c160;
  background: #07c160;
}
[data-comp="components/hello-profile/hello-profile"] .hp-check-mark {
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 9);
  border-left: calc(var(--rpx) * 4) solid #ffffff;
  border-bottom: calc(var(--rpx) * 4) solid #ffffff;
  transform: rotate(-45deg) translate(calc(var(--rpx) * 1), calc(var(--rpx) * -2));
}
[data-comp="components/hello-profile/hello-profile"] .hp-agree-t {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-comp="components/hello-profile/hello-profile"] .hp-link {
  color: #576b95;
}
[data-comp="components/hello-profile/hello-profile"] .hp-err {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  text-align: center;
}
[data-comp="components/hello-profile/hello-profile"] /* v4.86.569：面板装死后的相册退路行（点击可开相册） */
.hp-deadlink {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  text-align: center;
  text-decoration: underline;
}
[data-comp="components/hello-profile/hello-profile"] .hp-later {
  margin-top: calc(var(--rpx) * 26);
  font-size: calc(var(--rpx) * 28);
  color: #999999;
  text-align: center;
}



/* ---- pages/checkin/checkin.wxss ---- */
[data-route="pages/checkin/checkin"] /* v4.86.163：占位框照着范纸的 A4 竖幅比例（1:1.414）竖着放，居中、约占三分之一屏，不再满宽
   v4.86.383（379 号令 · 木哥）：一屏要塞下底下全部按键（按住说话 / 声纹授权 / 提交打卡）——
   作业框从 340×480 收到 300×400（仍保留竖幅、点开可放大，缩略图够看），省下 calc(var(--rpx) * 80) 高度 */
.shot {
  width: calc(var(--rpx) * 300);
  height: calc(var(--rpx) * 400);
  margin: 0 auto;
  border-radius: calc(var(--rpx) * 16);
  background: #f7f7f7;
  border: calc(var(--rpx) * 1) solid #f2f2f2;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
[data-route="pages/checkin/checkin"] .shot-img {
  width: 100%;
  height: 100%;
}
[data-route="pages/checkin/checkin"] /* v4.86.165：选图先验证 —— 作业框里的进度条 */
.shot-verify {
  width: 100%;
  padding: 0 calc(var(--rpx) * 30);
  box-sizing: border-box;
  text-align: center;
}
[data-route="pages/checkin/checkin"] .shot-verify-t {
  font-size: calc(var(--rpx) * 28);
  color: #1f2937;
  font-weight: 700;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pages/checkin/checkin"] .shot-bar {
  width: 100%;
  height: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 8);
  background: #e8e8e8;
  overflow: hidden;
}
[data-route="pages/checkin/checkin"] .shot-bar-in {
  height: 100%;
  border-radius: calc(var(--rpx) * 8);
  background: #07c160;
  transition: width 0.25s ease;
}
[data-route="pages/checkin/checkin"] .shot-verify-s {
  margin-top: calc(var(--rpx) * 18);
  font-size: calc(var(--rpx) * 24);
  color: #9aa0a6;
}
[data-route="pages/checkin/checkin"] .shot-empty {
  text-align: center;
}
[data-route="pages/checkin/checkin"] .shot-plus {
  font-size: calc(var(--rpx) * 72);
  color: #b2b2b2;
  line-height: 1;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/checkin/checkin"] .tips {
  margin-top: calc(var(--rpx) * 10);
  text-align: center;
}
[data-route="pages/checkin/checkin"] /* v7.0.187（木哥令）：我的作业记录 —— 提交键下面的次级键（白底线框，不抢主键） */
.ck-rec {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/checkin/checkin"] .field {
  display: flex;
  align-items: center;
  /* v4.86.383（379 号令）：行高收紧 26→16 —— 三行字段各省 calc(var(--rpx) * 20)，一屏能见全部按键 */
  /* v4.86.570（木哥发两张打卡页截图令：「输入框的文字，左边太靠边的，优化一下所有类似问题。」）
     左右原来是 0，标签/输入值/textarea 文字全贴卡片左缘；补 calc(var(--rpx) * 20) 内边距，
     连带「按住说话」钮也一起进到边内 */
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/checkin/checkin"] .field-col {
  display: block;
}
[data-route="pages/checkin/checkin"] /* v4.83.5：字段名 + 语音按钮同一行（「想说的话」右边挂个🎤说话） */
.field-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pages/checkin/checkin"] .field-label {
  /* v4.86.382（378 号令 · 木哥）：标签一行不折 —— 固定 calc(var(--rpx) * 160) 装不下
     「学生姓名（选填）」7 个字，折成两行把输入区挤矮。改 min-width 保底
     （作业日期/孩子昵称 4 字仍占 160，视觉不变），长标签自然撑开、
     nowrap 兜死不折行，flex-shrink:0 保证 input 不会被挤没。 */
  width: auto;
  min-width: calc(var(--rpx) * 160);
  flex-shrink: 0;
  white-space: nowrap;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/checkin/checkin"] .field-row .field-label {
  min-width: 0;
}
[data-route="pages/checkin/checkin"] .field-value {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/checkin/checkin"] .field-input {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/checkin/checkin"] /* v7.0.075（木哥令）：认领学员的提示行 —— 绿字一句话，说清「点评会直接发给他」 */
.cls-claim-tip {
  width: 100%;
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
  color: #0a7a3d;
}
[data-route="pages/checkin/checkin"] /* v4.86.420：字表输入（「这一页写了哪几个字」）—— 独立一条，不借 field-input
   的 flex:1（field-col 是纵排，flex:1 会被纵向拉伸）。 */
.hw-chars-input {
  width: 100%;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/checkin/checkin"] .field-area {
  /* v4.86.383（379 号令 · 木哥「可以处理一下下边输入框高度」）：固定两行高、
     不再 auto-height —— 原来写多了框跟着长，把「按住说话」和提交键一路顶出屏，
     一屏永远看不全。现在 calc(var(--rpx) * 90) 两行封顶、写多了框内滚动（wxml 已撤 auto-height），
     页面高度就定了下来；占位提示仍在框里。 */
  width: 100%;
  height: calc(var(--rpx) * 90);
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.5;
  box-sizing: border-box;
}
[data-route="pages/checkin/checkin"] .ph {
  color: #b2b2b2;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/checkin/checkin"] .err {
  margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 24);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/checkin/checkin"] /* v4.86.86：提交进度条（阶段推进，宽度过渡交给 CSS，走起来是连续的） */
.up-wrap {
  margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 20);
}
[data-route="pages/checkin/checkin"] .up-bar {
  height: calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 999);
  background: #e8f7ee;
  overflow: hidden;
}
[data-route="pages/checkin/checkin"] .up-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  transition: width 0.32s ease;
}
[data-route="pages/checkin/checkin"] .up-txt {
  margin-top: calc(var(--rpx) * 10);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/checkin/checkin"] /* ===== v4.86.157：作业拍摄要求（常驻入口 + 图文弹层） ===== */
.card-title-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
}
[data-route="pages/checkin/checkin"] .guide-link {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  padding: calc(var(--rpx) * 4) 0 calc(var(--rpx) * 4) calc(var(--rpx) * 16);
}
[data-route="pages/checkin/checkin"] /* v4.86.242：旧「作业拍摄要求」图文弹层样式（guide-mask 一族）随弹层退役；
   入口 .guide-link 保留，点开直接走「先学习」三步卡（样式复用 learn- 一族）。
   ===== 拍照方法小测验弹窗（v4.86.160）===== */
.quiz-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 70;
  display: flex;
  align-items: flex-end;
}
[data-route="pages/checkin/checkin"] .quiz-sheet {
  width: 100%;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 28) calc(var(--rpx) * 28) 0 0;
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(calc(var(--rpx) * 28) + env(safe-area-inset-bottom));
  box-sizing: border-box;
  /* v4.86.162：固定高度 —— swiper 靠 flex 撑高在没有确定高度的容器里会拿 0（弹窗空白的真凶） */
  height: 84vh;
  display: flex;
  flex-direction: column;
}
[data-route="pages/checkin/checkin"] .quiz-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #1f2937;
  text-align: center;
  margin-bottom: calc(var(--rpx) * 18);
}
[data-route="pages/checkin/checkin"] .quiz-scroll {
  flex: 1;
  min-height: 0;
}
[data-route="pages/checkin/checkin"] .quiz-hint {
  font-size: calc(var(--rpx) * 24);
  color: #8a6d1f;
  background: #fdf8e8;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  line-height: 1.5;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pages/checkin/checkin"] .quiz-q {
  margin-bottom: calc(var(--rpx) * 26);
}
[data-route="pages/checkin/checkin"] .quiz-qt {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #1f2937;
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pages/checkin/checkin"] .quiz-opt {
  display: flex;
  align-items: center;
  background: #f5f6f8;
  border: calc(var(--rpx) * 2) solid #e5e7eb;
  border-radius: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pages/checkin/checkin"] .quiz-opt.picked {
  background: #e8f7ee;
  border-color: #07c160;
}
[data-route="pages/checkin/checkin"] .quiz-box {
  flex: none;
  width: calc(var(--rpx) * 36);
  height: calc(var(--rpx) * 36);
  border-radius: 50%;
  border: calc(var(--rpx) * 2) solid #c0c4cc;
  color: #07c160;
  font-size: calc(var(--rpx) * 24);
  text-align: center;
  line-height: calc(var(--rpx) * 36);
  margin-right: calc(var(--rpx) * 16);
  box-sizing: border-box;
}
[data-route="pages/checkin/checkin"] .quiz-opt.picked .quiz-box {
  border-color: #07c160;
}
[data-route="pages/checkin/checkin"] .quiz-ot {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #374151;
  line-height: 1.5;
}
[data-route="pages/checkin/checkin"] .quiz-btn {
  margin-top: calc(var(--rpx) * 26);
  background: #07c160;
  color: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  text-align: center;
  padding: calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/checkin/checkin"] .quiz-retry {
  background: #e0a038;
  border-radius: calc(var(--rpx) * 10);
  text-align: center;
  padding: calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 32);
  color: #ffffff;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/checkin/checkin"] /* v7.0.135（木哥令「测试部分加一个按键：跳过」）：不考也能过 ——
   白底描边二级键（不是绿主键）：一眼看得出是个能点的按键，又不跟「交卷」抢眼；
   做题屏与不过关屏都挂着，随时点得着。 */
.quiz-skip {
  margin-top: calc(var(--rpx) * 16);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #d9dde3;
  border-radius: calc(var(--rpx) * 10);
  text-align: center;
  padding: calc(var(--rpx) * 20) 0;
  font-size: calc(var(--rpx) * 28);
  color: #6b7280;
}
[data-route="pages/checkin/checkin"] .quiz-score {
  margin-top: calc(var(--rpx) * 26);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
}
[data-route="pages/checkin/checkin"] .quiz-score.pass {
  color: #07c160;
}
[data-route="pages/checkin/checkin"] .quiz-score.fail {
  color: #c43c32;
}
[data-route="pages/checkin/checkin"] /* 一题一屏 */
.quiz-emoji {
  text-align: center;
  font-size: calc(var(--rpx) * 40);
  margin-top: calc(var(--rpx) * 40);
}
[data-route="pages/checkin/checkin"] .quiz-swiper {
  flex: 1;
  min-height: 0;
}
[data-route="pages/checkin/checkin"] .quiz-swiper swiper-item {
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  padding-bottom: calc(var(--rpx) * 8);
}
[data-route="pages/checkin/checkin"] .quiz-swiper .quiz-scroll {
  flex: 1;
  min-height: 0;
  height: 100%;
}
[data-route="pages/checkin/checkin"] .quiz-swiper .quiz-btn {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/checkin/checkin"] /* ===== v4.86.161：三步轻卡片「先学习」 ===== */
.learn-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 80;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(var(--rpx) * 48);
  box-sizing: border-box;
}
[data-route="pages/checkin/checkin"] .learn-sheet {
  width: 100%;
  background: #fffdf6;
  border-radius: calc(var(--rpx) * 32);
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 36) calc(var(--rpx) * 32);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
}
[data-route="pages/checkin/checkin"] .learn-cat {
  text-align: center;
  font-size: calc(var(--rpx) * 40);
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pages/checkin/checkin"] .learn-lead {
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #1f2937;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/checkin/checkin"] /* v4.86.162：图示要大到真能看明白 —— 侧面示意图占满卡片宽，比例 900:640 */
.learn-swiper {
  height: calc(var(--rpx) * 700);
}
[data-route="pages/checkin/checkin"] .learn-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  box-sizing: border-box;
  height: 100%;
}
[data-route="pages/checkin/checkin"] .learn-img {
  width: 100%;
  height: calc(var(--rpx) * 420);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
}
[data-route="pages/checkin/checkin"] .learn-h {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #8a6d1f;
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 12);
}
[data-route="pages/checkin/checkin"] .learn-p {
  font-size: calc(var(--rpx) * 28);
  color: #374151;
  line-height: 1.8;
}
[data-route="pages/checkin/checkin"] .learn-dots {
  display: flex;
  justify-content: center;
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 4);
}
[data-route="pages/checkin/checkin"] .learn-dot {
  width: calc(var(--rpx) * 14);
  height: calc(var(--rpx) * 14);
  border-radius: 50%;
  background: #d8d2c0;
  margin: 0 calc(var(--rpx) * 8);
}
[data-route="pages/checkin/checkin"] .learn-dot.on {
  background: #07c160;
}
[data-route="pages/checkin/checkin"] .learn-btn {
  margin-top: calc(var(--rpx) * 24);
  background: #07c160;
  color: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  text-align: center;
  padding: calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/checkin/checkin"] .learn-skip {
  margin-top: calc(var(--rpx) * 18);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #9aa0a6;
  padding: calc(var(--rpx) * 8) 0;
}
[data-route="pages/checkin/checkin"] /* ===== v4.86.383（379 号令 · 木哥「目的是在一屏就可以看见全部按键」）=====
   本页专用收紧（只在本页覆盖 app.wxss，全站别处不受影响）：
   ① .card 内边距 28→22：两卡各省 calc(var(--rpx) * 12)；
   ② .page-wrap 底部留白 60→24：提交键下面不再空一大截，键本身抬进一屏。
   配合：作业框 340×480→300×400、字段行高 26→16、想说的话框固定 calc(var(--rpx) * 90)
   （撤 auto-height，写多了框内滚动，不再把按键一路顶出屏）。 */
.card {
  position: relative;
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 28);
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/checkin/checkin"] .page-wrap {
  padding-bottom: calc(var(--rpx) * 24);
}
[data-route="pages/checkin/checkin"] /* v4.86.557（木哥 01:4x 令）：「先看示范，再动笔」两行提醒条取消，改成气泡 ——
   悬浮在拍照框上方（absolute，不占版面）、60% 透明、渐入渐出，只有一句话。
   渐变只动 opacity（0.6s）：进场 onLoad 挂节点 → 下一拍加 .show 淡入；
   4 秒后摘 .show 淡出，淡完卸节点。点一下气泡仍看「为什么先看示范」。
   颜色沿用旧条的那套暖金（底 255, [data-route="pages/checkin/checkin"] 251, [data-route="pages/checkin/checkin"] 240 / 边 216, [data-route="pages/checkin/checkin"] 178, [data-route="pages/checkin/checkin"] 106 / 字 6b4f22），只加了透明度。 */
.xue-tip-bubble {
  position: absolute;
  top: calc(var(--rpx) * 88);
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 28);
  background: rgba(255, 251, 240, 0.6);
  border: calc(var(--rpx) * 2) solid rgba(216, 178, 106, 0.6);
  border-radius: calc(var(--rpx) * 999);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
  color: #6b4f22;
  white-space: nowrap;
  opacity: 0;
  transition: opacity 0.6s ease;
}
[data-route="pages/checkin/checkin"] /* 气泡小尾巴：指向下面的拍照框 */
.xue-tip-bubble::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: calc(var(--rpx) * -10);
  margin-left: calc(var(--rpx) * -10);
  width: 0;
  height: 0;
  border-left: calc(var(--rpx) * 10) solid transparent;
  border-right: calc(var(--rpx) * 10) solid transparent;
  border-top: calc(var(--rpx) * 10) solid rgba(216, 178, 106, 0.6);
}
[data-route="pages/checkin/checkin"] .xue-tip-bubble.show {
  opacity: 1;
}
[data-route="pages/checkin/checkin"] /* 木哥 2026-10-23 15:0x：「我知道了」边上加「去查字搜老师示范」。
   复用 .learn-mask / .learn-sheet 的遮罩与卡片（不新引一套），这里只补水印区与两颗按钮。 */
.why-sheet {
  padding: calc(var(--rpx) * 44) calc(var(--rpx) * 36) calc(var(--rpx) * 32);
}
[data-route="pages/checkin/checkin"] .why-t {
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #1f2937;
  margin-bottom: calc(var(--rpx) * 22);
}
[data-route="pages/checkin/checkin"] .why-p {
  font-size: calc(var(--rpx) * 28);
  line-height: 1.75;
  color: #374151;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pages/checkin/checkin"] .why-btns {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pages/checkin/checkin"] .why-btn {
  flex: 1;
  text-align: center;
  padding: calc(var(--rpx) * 24) 0;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/checkin/checkin"] .why-ghost {
  color: #6b7280;
}
[data-route="pages/checkin/checkin"] .why-main {
  margin-left: calc(var(--rpx) * 20);
  background: #07c160;
  color: #ffffff;
}
[data-route="pages/checkin/checkin"] /* v7.0.107（木哥令）：「去我的日历看看作业」撤下，.cal-btn 一并退役 */

/* v7.0.192（木哥令「点击提交作业，就到学员作业提交」）：作业提交模式的本次作业横幅 ——
   作业名一行、最迟提交时间一行，进来就知道在交哪一份，不跟打卡页的标题打架 */
.hw-banner {
  background: #f2fbf5;
  border: calc(var(--rpx) * 1) solid #bfe8cd;
}
[data-route="pages/checkin/checkin"] .hw-banner-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #1a3d28;
  line-height: calc(var(--rpx) * 44);
}
[data-route="pages/checkin/checkin"] .hw-banner-d {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #d9534f;
  line-height: calc(var(--rpx) * 36);
}



/* ---- components/flash-guide/flash-guide.wxss ---- */
[data-comp="components/flash-guide/flash-guide"] /* v7.0.121（木哥令 11-01 20:2x）：
 * 「把黑色底图的罩起来的效果不要了。改成常态页面，就是有效区边缘框闪烁即可，
 *   气泡弹窗风格和整站统一即可。」
 * 所以：
 *  ① 暗罩不再压暗 —— 四块拦截层背景全透明（页面照常亮着，只挡误点，不改观感）；
 *  ② 只剩有效区边缘一圈黄框在闪（细线 + 柔光，只动 opacity，真机不掉帧）；
 *  ③ 气泡按站内弹窗口径（v7.0.121 二改，木哥「气泡的ui也太差劲了」）：
 *     白底 #fff / calc(var(--rpx) * 16) 圆角（同 .card）/ calc(var(--rpx) * 1) #e5e5e5 描边 / 0 calc(var(--rpx) * 8) calc(var(--rpx) * 24) .12 浮层阴影（白卡叠白卡
 *     不投影会糊成一片）；内边距四边统一 calc(var(--rpx) * 24)；标题 calc(var(--rpx) * 28)/500 #191919，正文 calc(var(--rpx) * 28) #333333
 *     （跟弹窗正文 pp-text 同档）；小三角改成 45° 小方块带描边，跟卡片边框连成一体
 *     （旧的白三角像贴上去的缺口）；主键缩成 .btn-mini 尺寸的绿底小键，不再是大绿砖。
 * 字号只走五档 20/24/28；字体不另设，跟 app.wxss 的 PingFang 走。
 * 点击区仍 ≥ 44px（calc(var(--rpx) * 88)）：轻的是眼睛，不是手指。 */
.gm-top, [data-comp="components/flash-guide/flash-guide"] .gm-bot, [data-comp="components/flash-guide/flash-guide"] .gm-side {
  position: fixed;
  left: 0;
  right: 0;
  background: transparent;
  z-index: 9000;
}
[data-comp="components/flash-guide/flash-guide"] .gm-top {
  top: 0;
}
[data-comp="components/flash-guide/flash-guide"] .gm-bot {
  bottom: 0;
}
[data-comp="components/flash-guide/flash-guide"] .gm-side {
  left: 0;
  right: auto;
  width: 0;
}
[data-comp="components/flash-guide/flash-guide"] /* 有效区边缘框：贴着目标真轮廓的那一圈黄线在闪，别的什么都不压
 * 圆角跟真身走（wxml 内联 border-radius），这里不写死 */
.gm-ring {
  position: fixed;
  z-index: 9001;
  pointer-events: none;
  border: calc(var(--rpx) * 3) solid #ffc61a;
  box-shadow: 0 0 0 calc(var(--rpx) * 1) rgba(255, 198, 26, 0.35), 0 0 calc(var(--rpx) * 16) calc(var(--rpx) * 2) rgba(255, 198, 26, 0.45);
  opacity: 0;
}
[data-comp="components/flash-guide/flash-guide"] .gm-ring.gm-in {
  opacity: 1;
  animation: gmGlow 1.4s ease-in-out infinite;
}

@keyframes gmGlow {
  0%,
  100% {
    opacity: 0.45;
  }
  50% {
    opacity: 1;
  }
}
[data-comp="components/flash-guide/flash-guide"] /* 气泡：白卡，跟全站弹窗（白圆角卡 + 绿主键）一套；宽度由 js 按文案量（tip.l / tip.w）
 * 下内边距留 0 —— 底部那行按键自带 calc(var(--rpx) * 88) 触区，键在里面垂直居中，视觉上不贴边 */
.gm-tip {
  position: fixed;
  box-sizing: border-box;
  z-index: 9002;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 16);
  box-shadow: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 24) rgba(0, 0, 0, 0.12);
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  opacity: 0;
  transform: translateY(calc(var(--rpx) * 4));
}
[data-comp="components/flash-guide/flash-guide"] .gm-tip.gm-in {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 0.16s, transform 0.16s;
}
[data-comp="components/flash-guide/flash-guide"] /* 小三角：45° 小方块，只留朝外的两条边，跟卡片边框连成一体 */
.gm-arrow {
  position: absolute;
  width: calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 20);
  margin-left: calc(var(--rpx) * -10);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
  transform: rotate(45deg);
}
[data-comp="components/flash-guide/flash-guide"] .gm-tip-down .gm-arrow {
  top: calc(var(--rpx) * -12);
  border-right: none;
  border-bottom: none;
}
[data-comp="components/flash-guide/flash-guide"] .gm-tip-up .gm-arrow {
  bottom: calc(var(--rpx) * -12);
  border-left: none;
  border-top: none;
}
[data-comp="components/flash-guide/flash-guide"] .gm-head {
  display: flex;
  align-items: baseline;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-comp="components/flash-guide/flash-guide"] .gm-title {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  line-height: 1.4;
  color: #191919;
}
[data-comp="components/flash-guide/flash-guide"] .gm-no {
  font-size: calc(var(--rpx) * 20);
  color: #b2b2b2;
  margin-left: calc(var(--rpx) * 12);
  font-variant-numeric: tabular-nums;
}
[data-comp="components/flash-guide/flash-guide"] .gm-txt {
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #333333;
}
[data-comp="components/flash-guide/flash-guide"] .gm-row {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  min-height: calc(var(--rpx) * 88);
}
[data-comp="components/flash-guide/flash-guide"] /* 点击区一律 ≥ 44px 高（3.5 寸屏也稳），视觉上是站内常规小键 */
.gm-skip {
  display: flex;
  align-items: center;
  min-height: calc(var(--rpx) * 88);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  padding: 0 calc(var(--rpx) * 24) 0 0;
}
[data-comp="components/flash-guide/flash-guide"] /* 主键：外面 44px 的点击区是透明的，里面那枚绿键按 .btn-mini 的尺寸（方角 calc(var(--rpx) * 8) / calc(var(--rpx) * 24) 字） */
.gm-next {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  min-height: calc(var(--rpx) * 88);
  margin-left: calc(var(--rpx) * 4);
}
[data-comp="components/flash-guide/flash-guide"] .gm-next-t {
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 28);
  line-height: 1.3;
}
[data-comp="components/flash-guide/flash-guide"] .gm-hover {
  opacity: 0.7;
}



/* ---- components/follow-pop/follow-pop.wxss ---- */
[data-comp="components/follow-pop/follow-pop"] /* v7.0.069：关注公众号领积分弹层 */
.fp-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: rgba(8, 18, 14, 0.55);
  z-index: 9200;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/follow-pop/follow-pop"] .fp-card {
  width: calc(var(--rpx) * 600);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  box-sizing: border-box;
  text-align: center;
}
[data-comp="components/follow-pop/follow-pop"] .fp-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16281f;
}
[data-comp="components/follow-pop/follow-pop"] .fp-sub {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #7b8a82;
}
[data-comp="components/follow-pop/follow-pop"] .fp-qr {
  width: calc(var(--rpx) * 320);
  height: calc(var(--rpx) * 320);
  margin: calc(var(--rpx) * 24) auto 0;
  display: block;
}
[data-comp="components/follow-pop/follow-pop"] .fp-way {
  margin-top: calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 24);
  color: #7b8a82;
}
[data-comp="components/follow-pop/follow-pop"] .fp-name {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #16281f;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-comp="components/follow-pop/follow-pop"] .fp-copy {
  display: inline-block;
  margin-top: calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 24);
  height: calc(var(--rpx) * 56);
  line-height: calc(var(--rpx) * 56);
  font-size: calc(var(--rpx) * 24);
  color: #1f8a52;
  border: calc(var(--rpx) * 1) solid #b9e0c9;
  border-radius: calc(var(--rpx) * 28);
}
[data-comp="components/follow-pop/follow-pop"] .fp-tip {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 20);
  color: #9aa7a1;
  line-height: 1.6;
}
[data-comp="components/follow-pop/follow-pop"] .fp-main {
  margin-top: calc(var(--rpx) * 24);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  border-radius: calc(var(--rpx) * 44);
  background: #1f8a52;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-comp="components/follow-pop/follow-pop"] .fp-busy {
  opacity: 0.7;
}
[data-comp="components/follow-pop/follow-pop"] .fp-ok {
  margin-top: calc(var(--rpx) * 32);
  font-size: calc(var(--rpx) * 28);
  color: #1f8a52;
  line-height: 1.7;
}
[data-comp="components/follow-pop/follow-pop"] .fp-later {
  margin-top: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  font-size: calc(var(--rpx) * 24);
  color: #9aa7a1;
}
[data-comp="components/follow-pop/follow-pop"] .fp-hover {
  opacity: 0.85;
}



/* ---- pages/day/day.wxss ---- */
[data-route="pages/day/day"] .day-wrap {
  box-sizing: border-box;
  height: calc(var(--vh) * 100);
  display: flex;
  flex-direction: column;
  padding: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] .day-head {
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 12) calc(var(--rpx) * 16);
}
[data-route="pages/day/day"] .day-title {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #191919;
  line-height: 1.4;
}
[data-route="pages/day/day"] .day-sub {
  margin-top: calc(var(--rpx) * 6);
  margin-bottom: 0;
}
[data-route="pages/day/day"] /* v4.86.278（木哥令）：时间次数按钮 = 一行排在上方，超出屏宽左右滑（scroll-x）；
   点一颗 = 两侧同时跳到这一次。珠子样式自持一套（此前裸奔没样式）。
   v4.86.278 同令：旧「时间 + 状态」行列表撤下，样式一并清走。 */
.day-chips {
  margin: 0 calc(var(--rpx) * 12) calc(var(--rpx) * 12);
  white-space: nowrap;
  width: 100%;
}
[data-route="pages/day/day"] .day-chips-row {
  display: inline-flex;
  align-items: center;
  gap: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 4) 2px calc(var(--rpx) * 8);
}
[data-route="pages/day/day"] .day-chip {
  position: relative;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: calc(var(--rpx) * 132);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 999);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #e5e5e5;
  box-sizing: border-box;
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  font-weight: 500;
}
[data-route="pages/day/day"] .day-chip-on {
  background: #07c160;
  border-color: #07c160;
  color: #ffffff;
}
[data-route="pages/day/day"] /* 未读红点：落在珠子右上角（列表撤下后未读标志不丢） */
.day-chip-dot {
  position: absolute;
  top: calc(var(--rpx) * -4);
  right: calc(var(--rpx) * -4);
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 16);
  border-radius: 50%;
  background: #fa5151;
  border: calc(var(--rpx) * 2) solid #ffffff;
}
[data-route="pages/day/day"] /* v4.86.288（木哥令）：时间签上直接标「未读」两个字 —— 红底白字小胶囊 */
.day-chip-unread {
  margin-left: calc(var(--rpx) * 10);
  padding: 0 calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 28);
  color: #ffffff;
  background: #fa5151;
  border-radius: calc(var(--rpx) * 10);
  font-weight: 500;
}
[data-route="pages/day/day"] .day-tabs {
  display: flex;
  margin: 0 calc(var(--rpx) * 12) calc(var(--rpx) * 12);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 999);
  overflow: hidden;
}
[data-route="pages/day/day"] .day-tab {
  flex: 1;
  position: relative;
  text-align: center;
  padding: calc(var(--rpx) * 16) 0;
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pages/day/day"] /* v7.0.187（木哥令）：我交的作业 tab 未读角标 —— 有没确认的邀约、人没在这页时挂上；
   藏在胶囊 tab 内侧（外层 .day-tabs overflow:hidden），不探出不裁切 */
.day-tab-dot {
  position: absolute;
  top: calc(var(--rpx) * 4);
  right: calc(var(--rpx) * 12);
  background: #fa5151;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  line-height: 1;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pages/day/day"] .day-tab-on {
  background: #07c160;
  color: #ffffff;
}
[data-route="pages/day/day"] .hw-note {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pages/day/day"] .hw-note-h {
  display: flex;
  align-items: center;
}
[data-route="pages/day/day"] .hw-note-no {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pages/day/day"] .hw-note-pos {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/day/day"] .hw-note-dot {
  flex: none;
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 16);
  border-radius: 50%;
  background: #c8c8c8;
}
[data-route="pages/day/day"] .hw-dot-red {
  background: #fa5151;
}
[data-route="pages/day/day"] .hw-dot-blue {
  background: #10aeff;
}
[data-route="pages/day/day"] .hw-dot-green {
  background: #07c160;
}
[data-route="pages/day/day"] .hw-note-t {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  line-height: 1.6;
}
[data-route="pages/day/day"] .day-swiper {
  flex: 1;
  min-height: 0;
}
[data-route="pages/day/day"] .day-cell {
  height: 100%;
}
[data-route="pages/day/day"] .hw-page {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28) calc(var(--rpx) * 28);
}
[data-route="pages/day/day"] .hw-when {
  display: flex;
  align-items: baseline;
}
[data-route="pages/day/day"] .hw-name {
  font-size: calc(var(--rpx) * 32);
  color: #191919;
  font-weight: 500;
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pages/day/day"] .hw-time {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pages/day/day"] .hw-tags {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pages/day/day"] .hw-tag {
  font-size: calc(var(--rpx) * 20);
  color: #888888;
  background: #f2f2f2;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 12);
  margin-right: calc(var(--rpx) * 10);
}
[data-route="pages/day/day"] .hw-tag-new {
  color: #07c160;
  background: #e8f7ee;
}
[data-route="pages/day/day"] .hw-tag-mentor {
  color: #ffffff;
  background: #07c160;
}
[data-route="pages/day/day"] .hw-tag-ai {
  color: #07c160;
  background: #e8f7ee;
}
[data-route="pages/day/day"] /* v4.86.293（木哥令）：「老师点评好了」旁的朗读小图标（与语音点评的 ♪ 同一符号）
 * 点了出声读点评；播放中变「⏹ 播放中」红字，再点停。 */
.hw-tag-sound {
  color: #07c160;
  background: #e8f7ee;
  margin-right: 0;
}
[data-route="pages/day/day"] .hw-tag-sound-on {
  color: #fa5151;
  background: #fdecec;
}
[data-route="pages/day/day"] .hw-block-t {
  margin-top: calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/day/day"] .hw-shot {
  margin-top: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  overflow: hidden;
  background: #f7f7f7;
}
[data-route="pages/day/day"] .hw-img-fix {
  width: 100%;
  height: calc(var(--rpx) * 520);
  display: block;
}
[data-route="pages/day/day"] .hw-shot-empty {
  height: calc(var(--rpx) * 200);
  line-height: calc(var(--rpx) * 200);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pages/day/day"] .hw-line {
  display: flex;
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
}
[data-route="pages/day/day"] .hw-k {
  flex: none;
  margin-right: calc(var(--rpx) * 16);
  color: #888888;
}
[data-route="pages/day/day"] .hw-v {
  flex: 1;
  min-width: 0;
  color: #191919;
  word-break: break-all;
}
[data-route="pages/day/day"] .hw-review {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pages/day/day"] .hw-review-from {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pages/day/day"] .hw-review-text {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  line-height: 1.7;
  word-break: break-all;
}
[data-route="pages/day/day"] /* #659（v4.86.400）：终审稿分段 —— 段间留白 calc(var(--rpx) * 26)；无序号无【】小标题 */
.hw-review-para {
  margin-bottom: calc(var(--rpx) * 26);
}
[data-route="pages/day/day"] .hw-review-para:last-child {
  margin-bottom: 0;
}
[data-route="pages/day/day"] .hw-none {
  margin-top: calc(var(--rpx) * 20);
  margin-bottom: 0;
}
[data-route="pages/day/day"] .hw-ops {
  margin-top: calc(var(--rpx) * 24);
  display: flex;
  gap: calc(var(--rpx) * 16);
}
[data-route="pages/day/day"] .hw-op {
  width: 100%;
  margin: 0;
}
[data-route="pages/day/day"] .hw-ops .hw-op {
  flex: 1;
  width: auto;
}
[data-route="pages/day/day"] .share-canvas {
  position: fixed;
  left: 0;
  top: 0;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
  z-index: -1;
}
[data-route="pages/day/day"] .hw-mhead {
  display: flex;
  align-items: center;
}
[data-route="pages/day/day"] .hw-mava {
  flex: none;
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  border-radius: 50%;
  margin-right: calc(var(--rpx) * 14);
  background: #f2f2f2;
}
[data-route="pages/day/day"] .hw-mava-txt {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #576b95;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/day/day"] /* v7.0.039（木哥发截图令）：头像右侧边缘的状态印章 —— 未点评红 / 已点评绿，
 * 仿印章双线框 + 微旋转 + 半透白底，压在头像右缘上一眼看清回没回
 * v7.0.044（木哥 06:2x 令「移到这一行的页面的最左边，包括未点评」）：
 * 印章不再压在头像上，挪成这一行的第一个元素 —— 页面最左边、与头像同行居中 */
.hw-mava-wrap {
  position: relative;
  flex: none;
}
[data-route="pages/day/day"] .hw-stamp {
  flex: none;
  align-self: center;
  /* v7.0.048（木哥圈图令）：印章钉在老师这一行的最右端 —— margin-left:auto 推到行尾 */
  margin-left: auto;
  transform: rotate(-8deg);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 8);
  border: calc(var(--rpx) * 3) solid currentColor;
  box-shadow: inset 0 0 0 calc(var(--rpx) * 1.5) currentColor;
  background: rgba(255, 255, 255, 0.88);
  font-size: calc(var(--rpx) * 20);
  font-weight: 700;
  letter-spacing: calc(var(--rpx) * 2);
  line-height: 1.2;
  white-space: nowrap;
}
[data-route="pages/day/day"] .hw-stamp-no {
  color: #d54b3f;
}
[data-route="pages/day/day"] .hw-stamp-ok {
  color: #1aad19;
}
[data-route="pages/day/day"] /* v4.86.184：头像右边那两行 —— 上行昵称 + 徽章（谁评的），下行身份（这是什么） */
.hw-mwho {
  flex: 1;
  min-width: 0;
}
[data-route="pages/day/day"] .hw-mname {
  display: flex;
  align-items: center;
}
[data-route="pages/day/day"] .hw-mname-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/day/day"] .hw-mtitle {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/day/day"] .hw-mrole {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/day/day"] /* 给老师留言（次按钮形态，尺寸走 app.wxss 的 .btn-ghost，这里只管排布） */
.hw-note {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] .hw-badge {
  margin-left: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 8);
  background: #e8f7ee;
  color: #07c160;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/day/day"] .hw-markbox {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/day/day"] .hw-marktitle {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pages/day/day"] .hw-markimg {
  width: 100%;
  border-radius: calc(var(--rpx) * 12);
  background: #ffffff;
}
[data-route="pages/day/day"] .hw-nlist {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/day/day"] .hw-nhead {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pages/day/day"] .hw-nt {
  font-size: calc(var(--rpx) * 24);
  color: #576b95;
  font-weight: 500;
}
[data-route="pages/day/day"] .hw-nx {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/day/day"] .hw-block-gap {
  margin-top: calc(var(--rpx) * 32);
}
[data-route="pages/day/day"] .hw-aitag {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  color: #b2b2b2;
}
[data-route="pages/day/day"] .hw-score {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/day/day"] .hw-score-head {
  display: flex;
  align-items: center;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/day/day"] .hw-score-lv {
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 18);
}
[data-route="pages/day/day"] .hw-lv-excellent {
  background: #fa9d3b;
}
[data-route="pages/day/day"] .hw-lv-good {
  background: #07c160;
}
[data-route="pages/day/day"] .hw-lv-pass {
  background: #576b95;
}
[data-route="pages/day/day"] .hw-lv-todo {
  background: #fa5151;
}
[data-route="pages/day/day"] .hw-score-note {
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] .hw-score-dims {
  display: flex;
  flex-direction: column;
  gap: calc(var(--rpx) * 12);
}
[data-route="pages/day/day"] .hw-score-dim {
  display: flex;
  align-items: center;
}
[data-route="pages/day/day"] .hw-score-name {
  width: calc(var(--rpx) * 150);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/day/day"] .hw-score-bar {
  flex: 1;
  height: calc(var(--rpx) * 16);
  background: #f2f2f2;
  border-radius: calc(var(--rpx) * 8);
  overflow: hidden;
}
[data-route="pages/day/day"] .hw-score-fill {
  height: 100%;
  background: #07c160;
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pages/day/day"] .hw-score-val {
  width: calc(var(--rpx) * 60);
  text-align: right;
  font-size: calc(var(--rpx) * 24);
  color: #191919;
}
[data-route="pages/day/day"] .hw-score-best {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] .hw-best {
  color: #fa9d3b;
  font-weight: 500;
}
[data-route="pages/day/day"] .hw-voice {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  background: #eef7ef;
  border: calc(var(--rpx) * 2) solid #cde8d0;
}
[data-route="pages/day/day"] .hw-voice-on {
  background: #e2f4e5;
}
[data-route="pages/day/day"] .hw-voice-icon {
  flex: none;
  margin-right: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/day/day"] .hw-voice-txt {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 24);
  color: #3f6b4a;
}
[data-route="pages/day/day"] .hw-markwrap {
  position: relative;
}
[data-route="pages/day/day"] .hw-vdot {
  position: absolute;
  transform: translate(-50%, -50%);
  width: calc(var(--rpx) * 76);
  height: calc(var(--rpx) * 76);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 12) rgba(0, 0, 0, 0.28);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 40);
  z-index: 2;
}
[data-route="pages/day/day"] .hw-vdot-on {
  background: #e8f5e9;
  box-shadow: 0 0 0 calc(var(--rpx) * 6) rgba(76, 175, 80, 0.25);
}
[data-route="pages/day/day"] .hw-ndot {
  width: calc(var(--rpx) * 60);
  height: calc(var(--rpx) * 60);
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/day/day"] .hw-ndot-audio {
  /* v4.86.362（359 号令）：固定绿降为兜底色 —— wxml 内联已带该处圈点自己的颜色 */
  color: #07c160;
}
[data-route="pages/day/day"] /* v4.86.362（359 号令）：有原音的 ♪ 常驻闪动；keyframes 全站共用 app.wxss 的 voice-flash */
.hw-ndot-flash {
  animation: voice-flash 1.4s ease-in-out infinite;
}
[data-route="pages/day/day"] .hw-ndot-text {
  color: #4a6fa5;
}
[data-route="pages/day/day"] .hw-nbubble {
  display: flex;
  align-items: flex-start;
  margin-top: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10);
  background: #eef7ef;
  border: calc(var(--rpx) * 2) solid #cde8d0;
}
[data-route="pages/day/day"] .hw-nb-no {
  flex: none;
  margin-right: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #3f6b4a;
}
[data-route="pages/day/day"] .hw-nb-txt {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 24);
  color: #191919;
  line-height: 1.6;
}
[data-route="pages/day/day"] .hw-note-play {
  flex: none;
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/day/day"] .hw-note {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 4);
  border-radius: 0;
  background: transparent;
  margin-top: 0;
}
[data-route="pages/day/day"] .hw-note + .hw-note {
  border-top: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pages/day/day"] .hw-notify {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] .hw-share {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/day/day"] .card-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/day/day"] .card-sheet {
  width: 86vw;
  max-height: 86vh;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 30);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
}
[data-route="pages/day/day"] .card-sheet-title {
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pages/day/day"] .card-preview {
  width: 100%;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/day/day"] .card-making {
  height: calc(var(--rpx) * 400);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #888888;
  background: #f7f7f7;
}
[data-route="pages/day/day"] .card-sheet-actions {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 22);
}
[data-route="pages/day/day"] .card-sheet-actions button {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/day/day"] .sheet-save {
  color: #ffffff;
}
[data-route="pages/day/day"] .card-sheet-tip {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pages/day/day"] .crop-hint {
  margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
}
[data-route="pages/day/day"] .crop-area {
  position: relative;
  margin: 0 auto calc(var(--rpx) * 24);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
  overflow: hidden;
}
[data-route="pages/day/day"] .crop-img {
  position: absolute;
  left: 0;
  top: 0;
  display: block;
}
[data-route="pages/day/day"] .crop-marea {
  position: absolute;
  left: 0;
  top: 0;
  background: transparent;
}
[data-route="pages/day/day"] .crop-box {
  border: calc(var(--rpx) * 1) solid #f2f2f2;
  background: rgba(7, 193, 96, 0.12);
  box-sizing: border-box;
}
[data-route="pages/day/day"] .zoom-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
  /* v4.86.259（木哥令）：黑底与全站浅色 UI 不搭 —— 改成与页面同底的浅灰，
     标题/关闭/提示同一套深字浅底，逐处点评列表本来就是浅色卡的字色。 */
  background: #ededed;
  display: flex;
  flex-direction: column;
}
[data-route="pages/day/day"] .zoom-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 32);
}
[data-route="pages/day/day"] .zoom-title {
  color: #1a1a1a;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/day/day"] .zoom-close {
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  border-radius: 50%;
  background: #ffffff;
  color: #333333;
  font-size: calc(var(--rpx) * 32);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/day/day"] .zoom-body {
  flex: 1;
  position: relative;
  overflow: hidden;
}
[data-route="pages/day/day"] .zoom-area {
  width: 100%;
  height: 100%;
}
[data-route="pages/day/day"] .zoom-wrap {
  position: relative;
  width: 100%;
  height: 100%;
}
[data-route="pages/day/day"] .zoom-img {
  display: block;
}
[data-route="pages/day/day"] .zoom-foot {
  flex: none;
  padding-bottom: env(safe-area-inset-bottom);
}
[data-route="pages/day/day"] .zoom-foot .hw-nbubble {
  margin: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 8);
}
[data-route="pages/day/day"] .zoom-notes {
  max-height: 34vh;
  margin: 0 calc(var(--rpx) * 24);
  box-sizing: border-box;
}
[data-route="pages/day/day"] .zoom-tip {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 32) calc(var(--rpx) * 40);
  color: #8a8a8a;
  font-size: calc(var(--rpx) * 24);
  text-align: center;
}
[data-route="pages/day/day"] .hw-mkprog {
  padding: calc(var(--rpx) * 60) calc(var(--rpx) * 20) calc(var(--rpx) * 40);
}
[data-route="pages/day/day"] .hw-mkbar {
  height: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #e2ece5;
  overflow: hidden;
}
[data-route="pages/day/day"] .hw-mkfill {
  height: 100%;
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  transition: width 0.24s linear;
}
[data-route="pages/day/day"] .hw-mktxt {
  display: block;
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
}
[data-route="pages/day/day"] /* v4.86.182：邀约老师（我交的作业侧 · 常驻） */
.hw-invite {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  background: #f7f8fa;
}
[data-route="pages/day/day"] .hw-invite-top {
  display: flex;
  align-items: flex-start;
}
[data-route="pages/day/day"] .hw-invite-ava {
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  border-radius: 50%;
  margin-right: calc(var(--rpx) * 16);
  flex-shrink: 0;
}
[data-route="pages/day/day"] .hw-invite-ava-txt {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #d9ecff;
  color: #576b95;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/day/day"] .hw-invite-body {
  flex: 1;
  min-width: 0;
}
[data-route="pages/day/day"] .hw-invite-t {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #191919;
}
[data-route="pages/day/day"] .hw-invite-s {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
  color: #969799;
}
[data-route="pages/day/day"] .hw-invite-btn {
  margin-top: calc(var(--rpx) * 18);
}
[data-route="pages/day/day"] /* v7.0.039（木哥令）：邀约中把换老师规则说明白 —— 10 分钟没回复就能换 */
.hw-invite-hint {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #969799;
  text-align: center;
}
[data-route="pages/day/day"] /* v4.86.474：约成之后这颗键是「回执」不是「行动」—— 灰底灰字，不给点 */
.hw-invite-btn-done {
  background: #eef0f3 !important;
  color: #96989d !important;
}
[data-route="pages/day/day"] .picked-again {
  margin-left: calc(var(--rpx) * 6);
  color: #06ad56;
  text-decoration: underline;
}
[data-route="pages/day/day"] /* v4.86.185：再提交新作业 = 与「去练字打卡」同款大键（尺寸全走 app.wxss 的 .btn-ghost）
   v4.86.292（木哥令）：绿色线框 + 绿色文字 —— 次级入口，不再用大绿实心抢视觉 */
.day-again {
  margin: calc(var(--rpx) * 16) calc(var(--rpx) * 12) 0;
}
[data-route="pages/day/day"] .day-again-green {
  color: #06ad56;
  border-color: #06ad56;
}
[data-route="pages/day/day"] /* ---- v4.86.206 老师的视频动作纠正（§VCVIDEO§ 成品，detail 页 vc-box 同款）
     v4.86.250（木哥令）：卡片 UI 与「老师详细点评与标注」（hw-markbox）统一 ——
     同灰底 #f7f7f7 / 同圆角 / 同标题字号字重颜色，两卡放在一起就是一套。 ---- */
.vc-box {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 16);
  background: #f7f7f7;
}
[data-route="pages/day/day"] .vc-box-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pages/day/day"] .vc-box-player {
  width: 100%;
  height: calc(var(--rpx) * 400);
  border-radius: calc(var(--rpx) * 12);
  background: #000000;
}
[data-route="pages/day/day"] /* v4.86.552：「我发的动作视频」框的三副面孔 —— 加载中 / 打不开可重试 / 底部那行状态 */
.vc-box-wait, [data-route="pages/day/day"] .vc-box-retry {
  width: 100%;
  height: calc(var(--rpx) * 400);
  border-radius: calc(var(--rpx) * 12);
  background: #eeeeee;
  color: #666666;
  font-size: calc(var(--rpx) * 24);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/day/day"] .vc-box-retry {
  color: #576b95;
}
[data-route="pages/day/day"] .vc-box-sub {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pages/day/day"] /* ---- v4.86.229 木哥令：老师发起的视频示范（服务消息同意卡 + 示范视频卡） ---- */
.demo-box .demo-chat {
  margin-top: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 76);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/day/day"] /* v4.86.302（木哥令③⑥）：老师刚发来的示范视频 —— 卡标题旁亮一枚「新」，
   学员看到（渲染即记已读）后下次进来就没了；红点熄灭与这枚同步 */
.demo-new {
  flex: none;
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  color: #ffffff;
  background: #fa5151;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
}
[data-route="pages/day/day"] .demo-notice {
  margin-top: calc(var(--rpx) * 16);
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 10);
  background: #e8f7ee;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] .demo-notice-head {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #191919;
  display: flex;
  align-items: center;
}
[data-route="pages/day/day"] .demo-notice-badge {
  flex: none;
  font-size: calc(var(--rpx) * 20);
  font-weight: 500;
  color: #07c160;
  border: calc(var(--rpx) * 2) solid #07c160;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pages/day/day"] .demo-notice-body {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #888888;
}
[data-route="pages/day/day"] .demo-agree {
  margin-top: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 80);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/day/day"] .demo-notice-tip {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pages/day/day"] /* v4.86.233（木哥 16:2x 令）：邀约卡上方的「再发视频动作纠正给老师」——
   次按钮（btn-ghost），不抢下面邀约主键的戏；只补间距。 */
.hw-vredo {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] /* ---------------- 学员确认老师的广场邀约（v4.86.254 木哥令） ---------------- */
.plaza-invite {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/day/day"] /* v4.86.483（木哥 20:4x）：老师名必须是能点的 —— 点进去看介绍，回来再决定同不同意 */
.plaza-name {
  color: #06ad56;
  font-weight: 600;
  text-decoration: underline;
}
[data-route="pages/day/day"] /* 「新」= 老师刚发起、我还没看过这条邀约（以前这条完全没提醒） */
.plaza-new {
  display: inline-block;
  margin-right: calc(var(--rpx) * 8);
  padding: 0 calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 8);
  background: #ff5a5a;
  color: #fff;
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 30);
}
[data-route="pages/day/day"] .plaza-invite-note {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  text-align: center;
}
[data-route="pages/day/day"] /* ---- v4.86.259：给老师打分（detail 页同款搬运） ---- */
.hw-rate {
  margin-top: calc(var(--rpx) * 22);
  padding: calc(var(--rpx) * 20);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/day/day"] .star-row {
  margin: calc(var(--rpx) * 14) 0 calc(var(--rpx) * 10);
}
[data-route="pages/day/day"] .star {
  font-size: calc(var(--rpx) * 56);
  color: #b2b2b2;
  margin-right: calc(var(--rpx) * 18);
}
[data-route="pages/day/day"] .star:active {
  transform: scale(1.15);
}
[data-route="pages/day/day"] .star-busy {
  opacity: 0.5;
}
[data-route="pages/day/day"] .hw-rated {
  margin-top: calc(var(--rpx) * 18);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] /* ---- v4.86.260：老师模式时间线（未点评红点 + 状态徽）
     v4.86.277（木哥令）：整列照抄班级详情「作业记录」的 UI 模式
     （对齐 pkgOps/pages/tclass/detail.wxss 的 .hw 行：灰绿圆角行块 +
     加粗标题 + 灰色小字行 + 右侧状态字）—— day 页自持一套，不跨页借样式。 */
.m-task {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: #f4f8f5;
}
[data-route="pages/day/day"] .m-task-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/day/day"] .m-task-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #16301f;
}
[data-route="pages/day/day"] .m-task-sub {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pages/day/day"] .m-task-dot {
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 16);
  border-radius: 50%;
  background: #fa5151;
  margin-right: calc(var(--rpx) * 16);
  flex-shrink: 0;
}
[data-route="pages/day/day"] .m-task-state {
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: #f2f2f2;
  color: #888888;
  font-size: calc(var(--rpx) * 20);
  line-height: 1.5;
  flex-shrink: 0;
}
[data-route="pages/day/day"] .m-task-state-pending {
  background: #fdecec;
  color: #fa5151;
}
[data-route="pages/day/day"] /* 已点评：右则绿色状态字（同「作业记录」右侧那枚绿字链接的口径） */
.m-task-go {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
}
[data-route="pages/day/day"] /* v4.86.319：示范视频三态（加载中 / 没加载出来可重试） */
.demo-video-wait {
  padding: calc(var(--rpx) * 44) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #7a8f85;
}
[data-route="pages/day/day"] .demo-video-retry {
  margin: calc(var(--rpx) * 12) 0;
  padding: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 10);
  background: #fdf6ec;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #b26a00;
}
[data-route="pages/day/day"] /* v4.86.336：滑到底自动弹作品卡的哨兵（透明占位，不占视觉） */
.poster-sentinel {
  height: 2px;
}
[data-route="pages/day/day"] /* v4.86.336：弹层里的「不再发了」—— 弱化样式，不抢分享主按钮 */
.card-mute {
  color: #999999;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] /* 成长报告入口（2026-10-23）：一行两块 —— 名字 + 一句它回答什么 */
.rp-entry {
  margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 24);
  background: #fff;
  border-radius: calc(var(--rpx) * 20);
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 12) rgba(43, 38, 32, .05);
}
[data-route="pages/day/day"] /* v4.86.483（木哥 20:4x 令「四个字改成绿的颜色，说明是一个按键」）：
   原来 #2b2620 与正文标题同色同字号，看不出来这是个入口 */
.rp-entry-t { font-size: calc(var(--rpx) * 28); font-weight: 600; color: #06ad56; }
[data-route="pages/day/day"] .rp-entry-s { margin-top: calc(var(--rpx) * 6); font-size: calc(var(--rpx) * 20); color: #8d8477; }
[data-route="pages/day/day"] /* v7.0.199（木哥令「成长报告有未读的，出来提示一下，3 秒自动消失；没有未读不显示」）：
   绝对定位挂在入口卡下沿 —— 弹出/收起都不推版式（不闪不跳） */
.rp-entry { position: relative; }
[data-route="pages/day/day"] .rp-hint {
  position: absolute;
  left: calc(var(--rpx) * 24);
  top: 100%;
  margin-top: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 20);
  background: #06ad56;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 999);
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 14) rgba(6, 173, 86, .35);
  z-index: 5;
}
[data-route="pages/day/day"] /* v7.0.028：老师分享未收下的提醒卡 —— 两颗键并排 */
.hw-keep-card .row-btns {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/day/day"] .hw-keep-card .row-btns button {
  flex: 1;
}
[data-route="pages/day/day"] /* v7.0.042：视频动作纠正单独成一项（与作业点评页 v7.0.039 同一张金卡） ====== */
.vc-hero {
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 4);
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 26) calc(var(--rpx) * 30);
  border-radius: calc(var(--rpx) * 20);
  background: linear-gradient(180deg, #fffef9 0%, #fdf3e0 100%);
  border: calc(var(--rpx) * 1) solid #eddfbd;
}
[data-route="pages/day/day"] .vc-hero-off {
  opacity: 0.55;
}
[data-route="pages/day/day"] .vc-hero-head {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #4a3208;
}
[data-route="pages/day/day"] .vc-hero-badge {
  margin-right: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 8);
  background: linear-gradient(135deg, #d8b25c 0%, #a8792c 100%);
  color: #fff;
  font-size: calc(var(--rpx) * 20);
  font-weight: 500;
}
[data-route="pages/day/day"] .vc-hero-pitch {
  margin: calc(var(--rpx) * 12) 0 calc(var(--rpx) * 22);
  font-size: calc(var(--rpx) * 24);
  color: #7a6a45;
  line-height: 1.5;
}
[data-route="pages/day/day"] .vc-hero .hw-video {
  margin-top: 0;
}
[data-route="pages/day/day"] /* v7.0.043：把这个字练一练（与分享落地页 v7.0.028 同一张卡、同一套口径） ====== */
.pr-card {
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 4);
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 26) calc(var(--rpx) * 30);
  border-radius: calc(var(--rpx) * 20);
  background: #fff;
  border: calc(var(--rpx) * 1) solid #e7ece8;
}
[data-route="pages/day/day"] .pr-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #16301f;
}
[data-route="pages/day/day"] .pr-s {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #7d8a82;
  line-height: 1.5;
}
[data-route="pages/day/day"] .pr-tools {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/day/day"] .pr-tool {
  flex: 1;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 10);
  background: #f4f8f5;
  text-align: center;
}
[data-route="pages/day/day"] .pr-tool-hover {
  background: #e9f3ec;
}
[data-route="pages/day/day"] .pr-tool-i {
  width: calc(var(--rpx) * 60);
  height: calc(var(--rpx) * 60);
  margin: 0 auto;
  border-radius: 50%;
  background: #e2f2e7;
  font-size: calc(var(--rpx) * 28);
  line-height: calc(var(--rpx) * 60);
  color: #0a7a3d;
  font-weight: 600;
}
[data-route="pages/day/day"] .pr-tool-t {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #16301f;
}
[data-route="pages/day/day"] .pr-tool-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #9aa8a0;
}
[data-route="pages/day/day"] /* v7.0.072（木哥令）：收下后的终态键 —— 灰底灰字不可再点，3 秒后随卡一起收起 */
.hw-keep-done {
  background: #f2f2f2 !important;
  color: #9b9b9b !important;
}
[data-route="pages/day/day"] /* ==================== v7.0.084 里程碑海报弹窗（每周一封信） ==================== */
.pp-mask {
  position: fixed; left: 0; top: 0; right: 0; bottom: 0;
  background: rgba(12, 32, 22, 0.82);
  z-index: 3200;
  display: flex; align-items: center; justify-content: center;
  animation: pp-fade 0.28s ease both;
}

@keyframes pp-fade { from { opacity: 0; } to { opacity: 1; } }
[data-route="pages/day/day"] .pp-card {
  position: relative;
  width: calc(var(--rpx) * 640); max-height: 86vh;
  background: linear-gradient(180deg, #f2faf4 0%, #d6ede1 100%);
  border-radius: calc(var(--rpx) * 36); overflow: hidden;
  display: flex; flex-direction: column; align-items: center;
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 32) calc(var(--rpx) * 32);
  box-shadow: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 80) rgba(10, 40, 24, 0.5);
  animation: pp-pop 0.46s cubic-bezier(0.18, 1.4, 0.4, 1) both;
}

@keyframes pp-pop {
  0% { transform: scale(0.55) translateY(calc(var(--rpx) * 60)); opacity: 0; }
  62% { transform: scale(1.05) translateY(calc(var(--rpx) * -8)); opacity: 1; }
  100% { transform: scale(1) translateY(0); opacity: 1; }
}
[data-route="pages/day/day"] /* 顶部光带扫过：奖杯到手的那一道光 */
.pp-shine {
  position: absolute; left: -60%; top: 0; width: 40%; height: 100%;
  background: linear-gradient(105deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.5) 50%, rgba(255,255,255,0) 100%);
  transform: skewX(-18deg);
  animation: pp-shine 1.6s ease-out 0.5s 2 both;
  pointer-events: none; z-index: 5;
}

@keyframes pp-shine {
  from { left: -60%; } to { left: 130%; }
}
[data-route="pages/day/day"] .pp-head { text-align: center; margin-bottom: calc(var(--rpx) * 20); }
[data-route="pages/day/day"] .pp-kicker {
  display: block; font-size: calc(var(--rpx) * 24); color: #4f7a60; margin-bottom: calc(var(--rpx) * 6);
  animation: pp-fade 0.6s ease 0.2s both;
}
[data-route="pages/day/day"] .pp-title {
  display: block; font-size: calc(var(--rpx) * 40); font-weight: 700; color: #1f3d2b;
  animation: pp-pop 0.5s cubic-bezier(0.18, 1.4, 0.4, 1) 0.15s both;
}
[data-route="pages/day/day"] .pp-poster-wrap {
  position: relative; width: 100%;
  border-radius: calc(var(--rpx) * 24); overflow: hidden;
  background: #fff;
  min-height: calc(var(--rpx) * 420);
  display: flex; align-items: center; justify-content: center;
}
[data-route="pages/day/day"] .pp-poster {
  width: 100%;
  animation: pp-fade 0.5s ease both;
}
[data-route="pages/day/day"] .pp-loading {
  padding: calc(var(--rpx) * 60) 0; text-align: center; color: #4f7a60; font-size: calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] .pp-loading-over {
  position: absolute; left: 0; top: 0; right: 0; bottom: 0;
  background: #f2faf4;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
}
[data-route="pages/day/day"] .pp-spinner {
  width: calc(var(--rpx) * 48); height: calc(var(--rpx) * 48); margin: 0 auto calc(var(--rpx) * 16);
  border: calc(var(--rpx) * 6) solid #cfe6d8; border-top-color: #2e7d4f; border-radius: 50%;
  animation: pp-spin 0.9s linear infinite;
}

@keyframes pp-spin { to { transform: rotate(360deg); } }
[data-route="pages/day/day"] .pp-acts {
  display: flex; width: 100%; margin-top: calc(var(--rpx) * 28); gap: calc(var(--rpx) * 20);
}
[data-route="pages/day/day"] .pp-btn {
  flex: 1; text-align: center; line-height: 2.5; border-radius: calc(var(--rpx) * 999);
  font-size: calc(var(--rpx) * 32); font-weight: 700;
  animation: pp-fade 0.6s ease 0.35s both;
}
[data-route="pages/day/day"] .pp-btn::after { border: none; }
[data-route="pages/day/day"] .pp-btn-main {
  background: linear-gradient(135deg, #ff9d4d 0%, #f27a33 100%);
  color: #fff; box-shadow: 0 calc(var(--rpx) * 10) calc(var(--rpx) * 24) rgba(242, 122, 51, 0.42);
  animation: pp-breathe 1.8s ease-in-out 1s infinite, pp-fade 0.6s ease 0.35s both;
}

@keyframes pp-breathe {
  0%, 100% { transform: scale(1); box-shadow: 0 calc(var(--rpx) * 10) calc(var(--rpx) * 24) rgba(242,122,51,0.42); }
  50% { transform: scale(1.04); box-shadow: 0 calc(var(--rpx) * 14) calc(var(--rpx) * 34) rgba(242,122,51,0.58); }
}
[data-route="pages/day/day"] .pp-btn-sub {
  background: #fff; color: #2e7d4f; border: calc(var(--rpx) * 2) solid #bcd9c6;
}
[data-route="pages/day/day"] .pp-hint {
  margin-top: calc(var(--rpx) * 18); font-size: calc(var(--rpx) * 20); color: #5a7a66; text-align: center;
  animation: pp-fade 0.6s ease 0.5s both;
}
[data-route="pages/day/day"] .pp-close {
  position: absolute; right: calc(var(--rpx) * 18); top: calc(var(--rpx) * 14);
  width: calc(var(--rpx) * 56); height: calc(var(--rpx) * 56); line-height: calc(var(--rpx) * 52); text-align: center;
  font-size: calc(var(--rpx) * 40); color: #52705f; background: rgba(255,255,255,0.7);
  border-radius: 50%;
}
[data-route="pages/day/day"] /* ===== v7.0.181（木哥令「和老师预点评的进度条是一样的」）=====
 * 陪练点评中：与老师端等稿卡（v7.0.168 金焰流星）同一支条、同一套色值 ——
 * 夜色轨道 + 金焰条身 + 破格流星头（calc(var(--rpx) * 44) 大头 + 火舌），透明光晕溢出条上下
 * 压在最上层；四段位（已接单/正在出批语/核验批语/发出点评）严格跟条走。 */
.cp-wait {
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 14);
  background: #f6f8f6;
}
[data-route="pages/day/day"] .cp-meta {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/day/day"] .cp-name {
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  color: #2f4a3c;
}
[data-route="pages/day/day"] .cp-time {
  font-size: calc(var(--rpx) * 20);
  color: #7d8a83;
}
[data-route="pages/day/day"] /* 轨道不裁切 —— 流星头光晕要溢出条上下以透明压在最上层（与 177 老师端同口径） */
.cp-track {
  position: relative;
  height: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 7);
  background: linear-gradient(180deg, #232a36, #141a24);
  box-shadow: inset 0 calc(var(--rpx) * 2) calc(var(--rpx) * 6) rgba(0, 0, 0, 0.45);
}
[data-route="pages/day/day"] .cp-bar {
  position: relative;
  height: 100%;
  border-radius: calc(var(--rpx) * 7);
  background: linear-gradient(90deg, #d2570a, #ff9d00 30%, #ffc93c 55%, #ffe27a 80%, #fff3c4);
  box-shadow: 0 0 calc(var(--rpx) * 10) rgba(255, 157, 0, 0.55), 0 0 calc(var(--rpx) * 22) rgba(255, 119, 0, 0.3);
  transition: width 0.9s ease;
  overflow: hidden;
}
[data-route="pages/day/day"] .cp-head {
  position: absolute;
  top: 50%;
  width: 0;
  height: 0;
  z-index: 5;
  transition: left 0.9s ease;
  pointer-events: none;
}
[data-route="pages/day/day"] .cp-comet {
  position: absolute;
  left: calc(var(--rpx) * -22);
  top: calc(var(--rpx) * -22);
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  border-radius: 50%;
  background: radial-gradient(circle at 40% 40%, #fffbe8, #ffd76a 60%, #ff9d00);
  box-shadow:
    0 0 calc(var(--rpx) * 14) calc(var(--rpx) * 6) rgba(255, 244, 200, 0.95),
    0 0 calc(var(--rpx) * 30) calc(var(--rpx) * 13) rgba(255, 170, 0, 0.7),
    0 0 calc(var(--rpx) * 54) calc(var(--rpx) * 24) rgba(255, 110, 0, 0.35);
  animation: cp-comet 1.1s ease-in-out infinite;
}
[data-route="pages/day/day"] .cp-comet::before {
  content: '';
  position: absolute;
  left: 50%;
  top: calc(var(--rpx) * -18);
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 26);
  margin-left: calc(var(--rpx) * -8);
  border-radius: 50% 50% 50% 50% / 62% 62% 38% 38%;
  background: linear-gradient(180deg, rgba(255, 244, 200, 0.95), rgba(255, 170, 0, 0.55) 62%, rgba(255, 110, 0, 0));
  transform-origin: 50% 100%;
  animation: cp-flame 0.9s ease-in-out infinite;
}

@keyframes cp-comet {
  0%, 100% { transform: scale(0.82); opacity: 0.85; }
  50% { transform: scale(1.18); opacity: 1; }
}

@keyframes cp-flame {
  0%, 100% { transform: scaleY(0.78) skewX(-6deg); opacity: 0.8; }
  50% { transform: scaleY(1.16) skewX(5deg); opacity: 1; }
}
[data-route="pages/day/day"] /* 四段位：走到哪段哪段亮（点 #ff9d00 火焰脉冲、字 #b26a00），没到的灰着 */
.cp-steps {
  display: flex;
  justify-content: space-between;
  margin-top: calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 4);
}
[data-route="pages/day/day"] .cp-step {
  display: flex;
  flex-direction: column;
  align-items: center;
}
[data-route="pages/day/day"] .cp-dot {
  width: calc(var(--rpx) * 14);
  height: calc(var(--rpx) * 14);
  border-radius: 50%;
  background: #cfd8d2;
  margin-bottom: calc(var(--rpx) * 6);
}
[data-route="pages/day/day"] .cp-step.is-on .cp-dot {
  background: #ff9d00;
  box-shadow: 0 0 calc(var(--rpx) * 8) rgba(255, 157, 0, 0.6);
}
[data-route="pages/day/day"] .cp-step.is-cur .cp-dot {
  animation: cp-dot-fire 1.1s ease-in-out infinite;
}
[data-route="pages/day/day"] .cp-step-t {
  font-size: calc(var(--rpx) * 20);
  color: #9aa5a0;
}
[data-route="pages/day/day"] .cp-step.is-on .cp-step-t {
  color: #7a5a1e;
}
[data-route="pages/day/day"] .cp-step.is-cur .cp-step-t {
  color: #b26a00;
  font-weight: 600;
}

@keyframes cp-dot-fire {
  0%, 100% { transform: scale(1); box-shadow: 0 0 calc(var(--rpx) * 6) rgba(255, 157, 0, 0.5); }
  50% { transform: scale(1.25); box-shadow: 0 0 calc(var(--rpx) * 14) rgba(255, 140, 0, 0.85); }
}
[data-route="pages/day/day"] .cp-msg {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #5b6a62;
}
[data-route="pages/day/day"] /* v7.0.184（木哥令）：常驻安心提示 —— 3-5 分钟 + 可离开可回来，琥珀色贴金焰条口吻 */
.cp-hint {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  line-height: 1.6;
  color: #b26a00;
}
[data-route="pages/day/day"] /* v7.0.185：逐字叠加图条 —— 与作业详情页（v7.0.110）同款同源 */
.gal-box {
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 18) 0 calc(var(--rpx) * 14);
  border-top: calc(var(--rpx) * 2) solid #f0e6d8;
}
[data-route="pages/day/day"] .gal-head {
  display: flex;
  align-items: baseline;
  padding: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 12);
}
[data-route="pages/day/day"] .gal-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #5d4a2f;
}
[data-route="pages/day/day"] .gal-count {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #9b8a72;
}
[data-route="pages/day/day"] /* v7.0.200（木哥令）：图条 = 下图那张卡的语言 —— 暗卡、图居中、写得好徽章、图N·字说明；
   常态高度 calc(var(--rpx) * 310)（下图 calc(var(--rpx) * 620) 的一半），点卡原地长到 calc(var(--rpx) * 620)，再点收回，全程不换页。 */
.gal-swiper {
  width: 100%;
  height: calc(var(--rpx) * 310);
  transition: height 0.28s ease;
}
[data-route="pages/day/day"] .gal-swiper-on {
  height: calc(var(--rpx) * 620);
}
[data-route="pages/day/day"] .gal-card {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  margin: 0 calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 8) calc(var(--rpx) * 6);
  overflow: hidden;
  border-radius: calc(var(--rpx) * 12);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #f0e6d8;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(93, 74, 47, 0.06);
}
[data-route="pages/day/day"] .gal-swiper-on .gal-card {
  margin: 0 calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 16) calc(var(--rpx) * 12);
  border-color: #e8dcc8;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 16) rgba(93, 74, 47, 0.10);
}
[data-route="pages/day/day"] .gal-card-on {
  border-color: #e4d6bf;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 16) rgba(93, 74, 47, 0.12);
}
[data-route="pages/day/day"] .gal-img {
  flex: 1 1 0;
  height: 0;
  width: 100%;
  min-height: 0;
}
[data-route="pages/day/day"] .gal-card .gal-cap {
  flex-shrink: 0;
  margin-top: calc(var(--rpx) * 6);
  line-height: calc(var(--rpx) * 30);
  font-size: calc(var(--rpx) * 20);
  color: #8a7a66;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-route="pages/day/day"] .gal-swiper-on .gal-card .gal-cap {
  margin-top: calc(var(--rpx) * 10);
  line-height: calc(var(--rpx) * 34);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] .gal-badge {
  position: absolute;
  top: calc(var(--rpx) * 8);
  left: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 20);
  color: #3f7d52;
  background: rgba(76, 140, 92, 0.10);
  border: calc(var(--rpx) * 1) solid rgba(76, 140, 92, 0.22);
}
[data-route="pages/day/day"] .gal-swiper-on .gal-badge {
  top: calc(var(--rpx) * 24);
  left: calc(var(--rpx) * 24);
}
[data-route="pages/day/day"] .gal-badge-focus {
  color: #b4544f;
  background: rgba(200, 76, 72, 0.10);
  border-color: rgba(200, 76, 72, 0.22);
}
[data-route="pages/day/day"] /* v7.0.194（木哥令「因为有未提交作业，发现页的未读提醒呢？一连串的引导提醒」）：
   这天还有作业没交 → 顶上引导卡（绿系，与「老师分享的作业没收下」卡区分开） */
.hw-todo-card {
  background: #f2fbf5;
  border: calc(var(--rpx) * 1) solid #bfe8cd;
}
[data-route="pages/day/day"] .hw-todo-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #1a3d28;
  line-height: calc(var(--rpx) * 44);
}
[data-route="pages/day/day"] .hw-todo-s {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #5b7a66;
  line-height: calc(var(--rpx) * 34);
}



/* ---- components/notify-center/notify-center.wxss ---- */
[data-comp="components/notify-center/notify-center"] /* 微信提醒 · 总览弹层 —— 全站绿色系，跟「去用/去赚」那一套同语言 */
.nc-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 1200;
  background: rgba(0, 0, 0, 0.45);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/notify-center/notify-center"] .nc-sheet {
  width: calc(var(--rpx) * 600);
  box-sizing: border-box;
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(var(--rpx) * 28);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 24);
}
[data-comp="components/notify-center/notify-center"] .nc-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
  text-align: center;
}
[data-comp="components/notify-center/notify-center"] .nc-sub {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  text-align: center;
}
[data-comp="components/notify-center/notify-center"] .nc-item {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 22);
  padding: calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 2) solid #eeeeee;
  border-radius: calc(var(--rpx) * 16);
  background: #fafafa;
}
[data-comp="components/notify-center/notify-center"] .nc-item-on {
  border-color: #bfe8cd;
  background: #f2fbf5;
}
[data-comp="components/notify-center/notify-center"] .nc-icon {
  font-size: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 18);
  flex-shrink: 0;
}
[data-comp="components/notify-center/notify-center"] .nc-main {
  flex: 1;
  min-width: 0;
}
[data-comp="components/notify-center/notify-center"] .nc-name {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  font-weight: 500;
}
[data-comp="components/notify-center/notify-center"] .nc-desc {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-comp="components/notify-center/notify-center"] .nc-state {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-comp="components/notify-center/notify-center"] .nc-state-on {
  color: #07c160;
  font-weight: 500;
}
[data-comp="components/notify-center/notify-center"] .nc-all {
  margin-top: calc(var(--rpx) * 30);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  border-radius: calc(var(--rpx) * 10);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
}
[data-comp="components/notify-center/notify-center"] /* v4.86.151：全开之后那一条 —— 不可点，纯粹告诉人「已经好了」 */
.nc-alldone {
  margin-top: calc(var(--rpx) * 30);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  border-radius: calc(var(--rpx) * 10);
  background: #f2fbf5;
  border: calc(var(--rpx) * 2) solid #bfe8cd;
  color: #07c160;
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
}
[data-comp="components/notify-center/notify-center"] .nc-close {
  margin-top: calc(var(--rpx) * 18);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  color: #576b95;
}



/* ---- components/cat-progress/cat-progress.wxss ---- */
[data-comp="components/cat-progress/cat-progress"] /* 猫走进度条 · 视频上传弹层（v4.86.224）—— 微信生态浅色：白卡 + 绿条 + 猫 */

.cp-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  z-index: 400;
  background: rgba(0, 0, 0, 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/cat-progress/cat-progress"] .cp-card {
  width: calc(var(--rpx) * 560);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 52) calc(var(--rpx) * 48) calc(var(--rpx) * 44);
}
[data-comp="components/cat-progress/cat-progress"] .cp-title {
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
}
[data-comp="components/cat-progress/cat-progress"] .cp-pct {
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  color: #07c160;
  font-weight: 600;
  margin-top: calc(var(--rpx) * 10);
}
[data-comp="components/cat-progress/cat-progress"] /* 轨道 + 绿色填充 + 猫：猫蹲在条头，left 与 pct 同步、同一条曲线 */
.cp-track {
  position: relative;
  height: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #ececec;
  margin-top: calc(var(--rpx) * 40);
}
[data-comp="components/cat-progress/cat-progress"] .cp-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  transition: width 0.28s linear;
}
[data-comp="components/cat-progress/cat-progress"] .cp-cat {
  position: absolute;
  left: 6%;
  bottom: calc(var(--rpx) * 10);
  width: calc(var(--rpx) * 52);
  height: calc(var(--rpx) * 52);
  margin-left: calc(var(--rpx) * -26);
  transition: left 0.28s linear;
}
[data-comp="components/cat-progress/cat-progress"] .cp-sub {
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  margin-top: calc(var(--rpx) * 32);
}



/* ---- components/video-quiz/video-quiz.wxss ---- */
[data-comp="components/video-quiz/video-quiz"] /* v4.86.229 木哥令：视频拍摄学习测验弹层（样式对齐 checkin 拍照小测验的墨韵白卡） */
.vq-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
  background: rgba(0, 0, 0, 0.72);
  display: flex;
  align-items: flex-end;
}
[data-comp="components/video-quiz/video-quiz"] .vq-sheet {
  width: 100%;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0 0;
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 32) calc(calc(var(--rpx) * 32) + env(safe-area-inset-bottom));
  box-sizing: border-box;
  max-height: 82vh;
  overflow-y: auto;
}
[data-comp="components/video-quiz/video-quiz"] .vq-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
  text-align: center;
  padding-bottom: calc(var(--rpx) * 16);
}
[data-comp="components/video-quiz/video-quiz"] /* v4.86.327：swiper 只装图 —— 图 calc(var(--rpx) * 560) 宽、896×944 近方图 widthFix 要 calc(var(--rpx) * 590) 高，
   原锁 calc(var(--rpx) * 560) 连图都裁 calc(var(--rpx) * 30)；留到 calc(var(--rpx) * 620) 图完整，标题/总说明在 swiper 外（wxml）。 */
.vq-swiper {
  height: calc(var(--rpx) * 620);
}
[data-comp="components/video-quiz/video-quiz"] .vq-learn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100%;
}
[data-comp="components/video-quiz/video-quiz"] .vq-img {
  width: calc(var(--rpx) * 560);
  border-radius: calc(var(--rpx) * 10);
  background: #f7f7f7;
}
[data-comp="components/video-quiz/video-quiz"] /* v4.86.327：标题/总说明搬到 swiper 外面按当前步渲染，永不被 swiper 裁剪 */
.vq-h {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
  text-align: center;
}
[data-comp="components/video-quiz/video-quiz"] .vq-p {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #888888;
  text-align: center;
  padding: 0 calc(var(--rpx) * 16);
}
[data-comp="components/video-quiz/video-quiz"] .vq-center {
  text-align: center;
}
[data-comp="components/video-quiz/video-quiz"] .vq-dots {
  display: flex;
  justify-content: center;
  gap: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 12) 0 calc(var(--rpx) * 4);
}
[data-comp="components/video-quiz/video-quiz"] .vq-dots text {
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 16);
  border-radius: 50%;
  background: #e5e5e5;
}
[data-comp="components/video-quiz/video-quiz"] .vq-dots text.on {
  background: #07c160;
}
[data-comp="components/video-quiz/video-quiz"] .vq-q {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  padding: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 16);
  line-height: 1.6;
}
[data-comp="components/video-quiz/video-quiz"] .vq-opt {
  border: calc(var(--rpx) * 2) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  margin-bottom: calc(var(--rpx) * 16);
  line-height: 1.5;
}
[data-comp="components/video-quiz/video-quiz"] .vq-opt-on {
  border-color: #07c160;
  background: #e8f7ee;
  color: #07c160;
  font-weight: 600;
}
[data-comp="components/video-quiz/video-quiz"] .vq-ans {
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 10);
  background: #e8f7ee;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 12);
  line-height: 1.5;
}
[data-comp="components/video-quiz/video-quiz"] .vq-score {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #07c160;
  text-align: center;
  padding: calc(var(--rpx) * 12) 0;
}
[data-comp="components/video-quiz/video-quiz"] .vq-score-low {
  color: #fa5151;
}
[data-comp="components/video-quiz/video-quiz"] .vq-btn {
  margin-top: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 88);
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
}
[data-comp="components/video-quiz/video-quiz"] .vq-btn-primary {
  background: #07c160;
  color: #ffffff;
}
[data-comp="components/video-quiz/video-quiz"] .vq-btn-ghost {
  background: #f7f7f7;
  color: #191919;
}
[data-comp="components/video-quiz/video-quiz"] /* v7.0.135（木哥令「测试部分加一个按键：跳过」）：白底描边二级键 ——
   主键（交卷/重新做题）还是最显眼那个，跳过一看就知道能点、又不抢眼。 */
.vq-skip {
  margin-top: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 80);
  display: flex;
  align-items: center;
  justify-content: center;
  border: calc(var(--rpx) * 2) solid #d9dde3;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  color: #6b7280;
}
[data-comp="components/video-quiz/video-quiz"] .vq-hover {
  opacity: 0.8;
}



/* ---- components/pay-pop/pay-pop.wxss ---- */
[data-comp="components/pay-pop/pay-pop"] /* 价目弹层 · v4.86.540（木哥 2026-10-26 定稿「通体炫耀金」· 五套框里的框 A）
 * 金三档：金键 #fbeecd→#cfa64f / 深金带 #6d4b10→#6a480e / 卡片底 #fffdf8→#f8eac6。
 * 结构：行档位（充墨宝/单次/券包）+ 会员横滑卡 + 权益明细（贴主键上方）+ 金主键。
 * 一条规矩：这里不写任何价格，全部来自 utils/plans。
 * 字号（v4.86.550 与 gold-dialog 同一张微信弹窗表）：
 *   标题 / 卡名 / 主键 = calc(var(--rpx) * 32) ｜ 行档名 / 权益正文 / 附注 = calc(var(--rpx) * 28) ｜
 *   标签 / 单位 / 小注 / 分组小标 = calc(var(--rpx) * 24) ｜ 注脚 = calc(var(--rpx) * 20) ｜ 价目数字 = calc(var(--rpx) * 40)。 */
.pp-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.52);
  z-index: 999;
  display: flex;
  align-items: flex-end;
}
[data-comp="components/pay-pop/pay-pop"] .pp-sheet {
  width: 100%;
  max-height: 88vh;
  overflow-y: auto;
  border-radius: calc(var(--rpx) * 36) calc(var(--rpx) * 36) 0 0;
  background: linear-gradient(180deg, #fffdf8 0%, #fffaef 46%, #fdf4e2 100%);
  padding: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 22);
  box-sizing: border-box;
  box-shadow: 0 calc(var(--rpx) * -20) calc(var(--rpx) * 60) rgba(90, 62, 10, 0.16);
}
[data-comp="components/pay-pop/pay-pop"] .pp-grip {
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 4);
  background: #e6d3a8;
  margin: calc(var(--rpx) * 16) auto 0;
}
[data-comp="components/pay-pop/pay-pop"] .pp-head {
  position: relative;
  padding: calc(var(--rpx) * 14) 0 calc(var(--rpx) * 16);
}
[data-comp="components/pay-pop/pay-pop"] /* 标题/副题给右上角 ✕ 让位：训练营名长时不能滑到关闭键底下（可换行，不吞字） */
.pp-title {
  padding-right: calc(var(--rpx) * 64);
  box-sizing: border-box;
  font-size: calc(var(--rpx) * 32);
  font-weight: 800;
  color: #4a3208;
  letter-spacing: calc(var(--rpx) * 0.5);
  line-height: 1.4;
}
[data-comp="components/pay-pop/pay-pop"] .pp-sub {
  padding-right: calc(var(--rpx) * 64);
  box-sizing: border-box;
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 28);
  color: #a37f3c;
  line-height: 1.5;
}
[data-comp="components/pay-pop/pay-pop"] .pp-x {
  position: absolute;
  right: 0;
  top: calc(var(--rpx) * 12);
  width: calc(var(--rpx) * 42);
  height: calc(var(--rpx) * 42);
  border-radius: 50%;
  background: rgba(168, 121, 44, 0.1);
  color: #a8792c;
  font-size: calc(var(--rpx) * 20);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/pay-pop/pay-pop"] /* ---------- 档位行 ---------- */
.pp-row {
  border: calc(var(--rpx) * 1) solid #eddfbd;
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 18);
  margin-bottom: calc(var(--rpx) * 10);
}
[data-comp="components/pay-pop/pay-pop"] .pp-row-on {
  background: linear-gradient(135deg, #fffdf8 0%, #fdf5e0 58%, #f8eac6 100%);
  border-color: #dcbb7d;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 20) rgba(168, 121, 44, 0.14);
}
[data-comp="components/pay-pop/pay-pop"] .pp-row-off {
  opacity: 0.55;
}
[data-comp="components/pay-pop/pay-pop"] .pp-row-hover {
  opacity: 0.9;
}
[data-comp="components/pay-pop/pay-pop"] .pp-row-h {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-comp="components/pay-pop/pay-pop"] .pp-row-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #3a2e12;
  display: flex;
  align-items: center;
}
[data-comp="components/pay-pop/pay-pop"] .pp-tag {
  margin-left: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #9a7420;
  background: rgba(201, 151, 51, 0.14);
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 8);
  /* v7.0.136（木哥令「弹窗里会员的角标也显示不完整」）：小标一律不许被挤窄/折行 ——
     行名挤的时候让名字换行，角标保证整条读得全。 */
  flex: none;
  white-space: nowrap;
}
[data-comp="components/pay-pop/pay-pop"] .pp-row-r {
  font-size: calc(var(--rpx) * 24);
  color: #8a6b28;
  display: flex;
  align-items: center;
  white-space: nowrap;
}
[data-comp="components/pay-pop/pay-pop"] .pp-price {
  font-size: calc(var(--rpx) * 28);
  font-weight: 800;
  color: #a8791a;
}
[data-comp="components/pay-pop/pay-pop"] .pp-yuan {
  font-size: calc(var(--rpx) * 24);
  margin-left: calc(var(--rpx) * 2);
}
[data-comp="components/pay-pop/pay-pop"] .pp-caret {
  font-size: calc(var(--rpx) * 20);
  color: #c79733;
  margin-left: calc(var(--rpx) * 6);
  transition: transform 0.22s cubic-bezier(0.2, 0.8, 0.2, 1);
}
[data-comp="components/pay-pop/pay-pop"] .pp-caret-on {
  transform: rotate(180deg);
}
[data-comp="components/pay-pop/pay-pop"] .pp-body {
  margin-top: calc(var(--rpx) * 12);
  padding-top: calc(var(--rpx) * 12);
  border-top: calc(var(--rpx) * 1) dashed #e8d6b0;
}
[data-comp="components/pay-pop/pay-pop"] /* ---------- 充墨宝四档面额（横滑） ---------- */
.pp-beans {
  width: 100%;
  white-space: nowrap;
  /* v7.0.058（木哥截图令「提醒标注显示不完整」）：「够这单」角标悬在档位卡顶外
   * （top:calc(var(--rpx) * -12)），而 scroll-view 天生裁掉出界内容 —— 角标上半截永远被切。
   * 给容器留出角标的高度，它就完整落在可视区里了。 */
  padding-top: calc(var(--rpx) * 16);
}
[data-comp="components/pay-pop/pay-pop"] .pp-beanrow {
  display: inline-flex;
}
[data-comp="components/pay-pop/pay-pop"] .pp-bean {
  position: relative;
  width: calc(var(--rpx) * 148);
  margin-right: calc(var(--rpx) * 10);
  border: calc(var(--rpx) * 1) solid #eddfbd;
  border-radius: calc(var(--rpx) * 16);
  background: #ffffff;
  /* v7.0.048（木哥 10-30 午令「卡片上的提醒标注显示不完整」）：原来顶部只留 calc(var(--rpx) * 10)，
   * 「够这单」角标（top:calc(var(--rpx) * -12)、高约 calc(var(--rpx) * 36)）下缘正好压在大数字上，10 颗那档的
   * 「10」被盖掉半截。顶部留到 calc(var(--rpx) * 30)，角标完整悬在卡沿外、数字完整。 */
  padding: calc(var(--rpx) * 30) 0 calc(var(--rpx) * 10);
  text-align: center;
}
[data-comp="components/pay-pop/pay-pop"] .pp-bean-on {
  border-color: #c79733;
  background: linear-gradient(180deg, #fff8e4, #fdefcd);
}
[data-comp="components/pay-pop/pay-pop"] .pp-bean-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 800;
  color: #8a6320;
}
[data-comp="components/pay-pop/pay-pop"] .pp-bean-p {
  font-size: calc(var(--rpx) * 24);
  color: #a8853f;
  margin-top: calc(var(--rpx) * 2);
}
[data-comp="components/pay-pop/pay-pop"] .pp-bean-r {
  position: absolute;
  top: calc(var(--rpx) * -12);
  left: 50%;
  transform: translateX(-50%);
  background: linear-gradient(135deg, #d8b25c, #a8791a);
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 10);
  white-space: nowrap; /* v7.0.048：标注不许折行截断 */
  padding: 0 calc(var(--rpx) * 8);
}
[data-comp="components/pay-pop/pay-pop"] /* ---------- 会员横滑卡 ---------- */
.pp-tierwrap {
  margin: calc(var(--rpx) * 4) 0 calc(var(--rpx) * 10);
}
[data-comp="components/pay-pop/pay-pop"] .pp-tierwrap-h {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: calc(var(--rpx) * 24);
  color: #a1834a;
  margin: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 10);
}
[data-comp="components/pay-pop/pay-pop"] .pp-tiers {
  width: 100%;
  white-space: nowrap;
  /* v7.0.139：与会员页同口径 —— 上留白搬到 .pp-tierrow（scroll-view 的 padding
     在原生横滑容器里不一定进高度，会被裁）。 */
  padding-top: 0;
}
[data-comp="components/pay-pop/pay-pop"] .pp-tierrow {
  display: inline-flex;
  align-items: flex-start;
  /* v7.0.139：calc(var(--rpx) * 26) 上留白接住悬出卡顶 calc(var(--rpx) * 12) 的角标（行是普通流，padding 必进高度） */
  padding-top: calc(var(--rpx) * 26);
}
[data-comp="components/pay-pop/pay-pop"] .pp-tcard {
  position: relative;
  width: calc(var(--rpx) * 218);
  margin-right: calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 1) solid #e6d3a8;
  border-radius: calc(var(--rpx) * 22);
  background: #ffffff;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 16) calc(var(--rpx) * 12);
}
[data-comp="components/pay-pop/pay-pop"] .pp-tcard-on {
  background: linear-gradient(135deg, #fffdf8 0%, #fdf5e0 58%, #f8eac6 100%);
  border-color: #c79733;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 20) rgba(168, 121, 44, 0.16);
}
[data-comp="components/pay-pop/pay-pop"] .pp-tn {
  font-size: calc(var(--rpx) * 32);
  font-weight: 800;
  color: #4a3a17;
  letter-spacing: calc(var(--rpx) * 0.4);
}
[data-comp="components/pay-pop/pay-pop"] .pp-tp {
  font-size: calc(var(--rpx) * 40);
  font-weight: 800;
  color: #a8791a;
  line-height: 1.25;
  margin-top: calc(var(--rpx) * 2);
}
[data-comp="components/pay-pop/pay-pop"] .pp-ty {
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  margin-left: calc(var(--rpx) * 2);
}
[data-comp="components/pay-pop/pay-pop"] .pp-td {
  font-size: calc(var(--rpx) * 24);
  color: #a8853f;
  margin-top: calc(var(--rpx) * 2);
  line-height: 1.4;
}
[data-comp="components/pay-pop/pay-pop"] /* 弹窗会员卡角标（v7.0.137 定形态、v7.0.139 定颜色）：与会员页同一枚「炫耀金」角标，
   骑在卡顶右角，不做横幅；字号 calc(var(--rpx) * 20) + nowrap，长标注一行读全、不压档名。 */
.pp-tbadge {
  position: absolute;
  top: calc(var(--rpx) * -12);
  right: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 3) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 8);
  /* v7.0.139（木哥令「把角标的风格改为炫耀金的风格」）：红改金 ——
     亮金渐变（左上吃光 → 右下压深）+ 白内高光 + 细金描边 + 深棕字，
     与卡片的金边、金价目同一族，角标自己跳出来但不抢「全效」档名。 */
  background: linear-gradient(135deg, #fdf3cd 0%, #eccd76 36%, #d4a93f 70%, #b8862a 100%);
  border: calc(var(--rpx) * 1) solid #f7e6b4;
  color: #4a3410;
  font-weight: 700;
  letter-spacing: calc(var(--rpx) * 0.6);
  font-size: calc(var(--rpx) * 20);
  line-height: 1.35;
  white-space: nowrap;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(160, 112, 26, 0.35),
    inset 0 calc(var(--rpx) * 1) 0 rgba(255, 255, 255, 0.75);
}
[data-comp="components/pay-pop/pay-pop"] /* ---------- 权益明细（贴主键上方） ---------- */
.pp-perkbox {
  border: calc(var(--rpx) * 1) solid #e3cfa3;
  border-bottom: 0;
  border-radius: calc(var(--rpx) * 10) calc(var(--rpx) * 10) 0 0;
  background: linear-gradient(135deg, #fffdf8 0%, #fdf5e0 58%, #f8eac6 100%);
  margin-top: calc(var(--rpx) * 14);
}
[data-comp="components/pay-pop/pay-pop"] .pp-perkbox-h {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10) calc(var(--rpx) * 10) 0 0;
  background: rgba(201, 151, 51, 0.14);
  font-size: calc(var(--rpx) * 24);
  color: #8a6b28;
}
[data-comp="components/pay-pop/pay-pop"] .pp-pb {
  font-size: calc(var(--rpx) * 28);
  font-weight: 800;
  color: #4a3208;
}
[data-comp="components/pay-pop/pay-pop"] .pp-perks {
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20) 0;
}
[data-comp="components/pay-pop/pay-pop"] .pp-perk {
  display: flex;
  align-items: flex-start;
  line-height: 1.9;
}
[data-comp="components/pay-pop/pay-pop"] .pp-ck {
  font-size: calc(var(--rpx) * 24);
  color: #c79733;
  width: calc(var(--rpx) * 20);
  flex: 0 0 calc(var(--rpx) * 20);
}
[data-comp="components/pay-pop/pay-pop"] .pp-pk {
  font-size: calc(var(--rpx) * 28);
  color: #4a3a17;
  flex: 1;
}
[data-comp="components/pay-pop/pay-pop"] .pp-perkfine {
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 20) calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  color: #96907e;
  line-height: 1.5;
}
[data-comp="components/pay-pop/pay-pop"] /* ---------- 金色主键 ---------- */
.pp-buywrap {
  margin-top: calc(var(--rpx) * 14);
}
[data-comp="components/pay-pop/pay-pop"] .pp-btn {
  width: 100%;
  height: calc(var(--rpx) * 82);
  line-height: calc(var(--rpx) * 82);
  padding: 0;
  border-radius: calc(var(--rpx) * 10);
  background: linear-gradient(180deg, #fbeecd 0%, #eed79f 46%, #dcb96a 78%, #cfa64f 100%);
  color: #6b4a12;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  letter-spacing: calc(var(--rpx) * 0.4);
  box-shadow: inset 0 calc(var(--rpx) * 1) 0 rgba(255, 255, 255, 0.8), inset 0 0 0 calc(var(--rpx) * 1) rgba(255, 255, 255, 0.5),
    0 calc(var(--rpx) * 8) calc(var(--rpx) * 24) rgba(150, 105, 25, 0.2);
}
[data-comp="components/pay-pop/pay-pop"] .pp-btn::after {
  border: none;
}
[data-comp="components/pay-pop/pay-pop"] /* 与权益块合成一个整体：上圆角归权益块，下圆角归主键 */
.pp-btn-attached {
  border-radius: 0;
}
[data-comp="components/pay-pop/pay-pop"] /* v7.0.110（T-041）：用券免单次键 —— 白底描边，压在金色主键上方，不抢主键 */
.pp-btn-coupon {
  margin-bottom: calc(var(--rpx) * 14);
  background: #fffdf6;
  color: #6b4a12;
  border: calc(var(--rpx) * 2) solid #d8c491;
  box-shadow: none;
  font-weight: 600;
}
[data-comp="components/pay-pop/pay-pop"] .pp-fine {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #96907e;
  line-height: 1.55;
  text-align: center;
}
[data-comp="components/pay-pop/pay-pop"] .pp-warn {
  color: #c25a2a;
}
[data-comp="components/pay-pop/pay-pop"] /* ---- v4.86.544：训练营的会员省钱条（摆在两档价上面那条）----
   540 撤掉的是「贴在主键上的旧会员条」，这一条是 A 线 536 那条令的原物：
   先看见「会员 8 折 · 这单省 N 墨宝」，再看见两档价；点它翻到会员档。
   类名 pp-cclub 而不是旧名 —— test-420 锁着「旧会员条零残留」。 */
.pp-cclub {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  background: linear-gradient(135deg, #d8b25c, #a8792c);
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 14);
}
[data-comp="components/pay-pop/pay-pop"] .pp-cclub-hover {
  opacity: 0.88;
}
[data-comp="components/pay-pop/pay-pop"] /* 摆在价目上面那条：四角都圆（不贴主键，所以不做半圆角） */
.pp-cclub-top {
  border-radius: calc(var(--rpx) * 14);
}
[data-comp="components/pay-pop/pay-pop"] .pp-cclub-t {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 28);
  color: #ffffff;
  line-height: 1.4;
}
[data-comp="components/pay-pop/pay-pop"] .pp-cclub-btn {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 999);
  background: #6b4d14;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
}
[data-comp="components/pay-pop/pay-pop"] /* 从会员档退回训练营两档的那一行（金铜细字，不抢价目） */
.pp-back {
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 28);
  color: #a8792c;
}



/* ---- pages/game/home/home.wxss ---- */
[data-route="pages/game/home/home"] /**
 * 猫咪乐园（v4.18）
 * 字号遵循微信规范：正文 calc(var(--rpx) * 28)(14px) / 次要 calc(var(--rpx) * 24)(12px) / 辅助最小 calc(var(--rpx) * 22)(11px)
 * 图标 40~calc(var(--rpx) * 48)(20~24px)
 */
.page-wrap {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pages/game/home/home"] .loading {
  padding: calc(var(--rpx) * 120) 0;
  text-align: center;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/game/home/home"] .login-card {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/game/home/home"] .login-title {
  font-size: calc(var(--rpx) * 32);
  color: #191919;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/game/home/home"] /* ================= ① 养猫（一只猫 + 四个动作 + 三条状态） =================
   v4.86.67（木哥）：原「我的身份」头像卡整卡撤下（头像 / 昵称 / 勋章 / Lv 进度条都不再展示）；
   卡里那句「还差多少成为下一级」挪到本卡标题行右侧（.scene-lv-hint），
   「我的猫 · 墨灵猫」那行搬进本卡（.cat-next-row，点它进猫咪升级详情页）。 */
.scene-head-top {
  display: flex;
  align-items: center;
}
[data-route="pages/game/home/home"] /* 标题行里的标题不吃通用卡的 margin，不然这一排会偏 */
.scene-head-top .card-title {
  margin-bottom: 0;
  flex-shrink: 0;
}
[data-route="pages/game/home/home"] /* 标题行右侧：还差多少成为下一级（原来在身份卡里）——右对齐小灰字，够长就折行 */
.scene-lv-hint {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 16);
  text-align: right;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.4;
}
[data-route="pages/game/home/home"] /* 标题行第二排：展开/收起 ＋ 今天照顾了 X/4 */
.scene-head-sub {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: calc(var(--rpx) * 10);
}
[data-route="pages/game/home/home"] .scene-head-sub .scene-tip-toggle {
  margin-right: calc(var(--rpx) * 14);
}
[data-route="pages/game/home/home"] /* 我的猫 · 墨灵猫：猫名跟着等级长；点右边去猫咪升级详情页（全站唯一入口） */
.cat-next-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 14);
  background: #e8f7ee;
  border: calc(var(--rpx) * 1) solid #d5f0df;
}
[data-route="pages/game/home/home"] .cat-next-face {
  width: calc(var(--rpx) * 34);
  height: calc(var(--rpx) * 34);
  margin-right: calc(var(--rpx) * 10);
  flex-shrink: 0;
  display: block;
}
[data-route="pages/game/home/home"] .cat-next-label {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  font-weight: 500;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pages/game/home/home"] .cat-next-go {
  flex-shrink: 0;
  max-width: calc(var(--rpx) * 300);
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 16);
  font-weight: 500;
}
[data-route="pages/game/home/home"] /* ================= ② 养猫场景 ================= */
.scene-card {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 20) calc(var(--rpx) * 24);
}
[data-route="pages/game/home/home"] .scene-head {
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pages/game/home/home"] .scene-cat-name {
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
  color: #888888;
}
[data-route="pages/game/home/home"] .scene {
  position: relative;
  height: calc(var(--rpx) * 480);
  border-radius: calc(var(--rpx) * 20);
  overflow: hidden;
  background: #eef9f1;
}
[data-route="pages/game/home/home"] .scene-wall {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  height: calc(var(--rpx) * 340);
  background: linear-gradient(180deg, #ddf3e5, #c4ead2);
}
[data-route="pages/game/home/home"] .scene-floor {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: calc(var(--rpx) * 180);
  background: linear-gradient(180deg, #9ad7ac, #7fc394);
  border-top: calc(var(--rpx) * 6) solid #6cb383;
}
[data-route="pages/game/home/home"] /* v4.86.201（木哥）：原占位窗框（scene-window / sun / cloud）撤下，同位置换
   「家庭」入口。三维感是画出来的：屋顶/房身两块渐变叠出受光面与侧面，
   再压一道投影，点上去整座小屋轻轻下压（hover 态），像一枚立体的图标。 */
.scene-home {
  position: absolute;
  left: calc(var(--rpx) * 44);
  top: calc(var(--rpx) * 30);
  width: calc(var(--rpx) * 170);
  display: flex;
  flex-direction: column;
  align-items: center;
}
[data-route="pages/game/home/home"] .scene-home-hover {
  transform: translateY(calc(var(--rpx) * 4)) scale(0.97);
  opacity: 0.88;
}
[data-route="pages/game/home/home"] .scene-home-house {
  position: relative;
  width: calc(var(--rpx) * 130);
  height: calc(var(--rpx) * 104);
  filter: drop-shadow(0 calc(var(--rpx) * 10) calc(var(--rpx) * 12) rgba(23, 92, 55, 0.22));
}
[data-route="pages/game/home/home"] /* v4.86.250（木哥令）：「家庭的图标做闪光效果。明显一些的」——
   金色光圈一明一暗循环 + 轻微放大呼吸，1.2s 一轮，一眼能看出这可以点。
   只动 filter 与 opacity，不碰 transform（hover 态的按压位移不冲突）。 */
.scene-home-house {
  animation: home-shine 1.2s ease-in-out infinite;
}


@keyframes home-shine {
  0%,
  100% {
    filter: drop-shadow(0 calc(var(--rpx) * 10) calc(var(--rpx) * 12) rgba(23, 92, 55, 0.22))
      drop-shadow(0 0 calc(var(--rpx) * 0) rgba(255, 199, 79, 0));
    opacity: 1;
  }
  50% {
    transform: scale(1.07);
    filter: drop-shadow(0 calc(var(--rpx) * 10) calc(var(--rpx) * 12) rgba(23, 92, 55, 0.22))
      drop-shadow(0 0 calc(var(--rpx) * 22) rgba(255, 199, 79, 0.95))
      drop-shadow(0 0 calc(var(--rpx) * 44) rgba(255, 236, 170, 0.6));
    opacity: 0.96;
  }
}
[data-route="pages/game/home/home"] /* 屋顶：等腰梯形（左亮右暗两片渐变拼出立体切面） */
.scene-home-roof {
  position: absolute;
  left: 0;
  top: 0;
  width: 0;
  height: 0;
  border-left: calc(var(--rpx) * 65) solid transparent;
  border-right: calc(var(--rpx) * 65) solid transparent;
  border-bottom: calc(var(--rpx) * 46) solid #e4684f;
}
[data-route="pages/game/home/home"] /* 房身：正面受光、右侧压暗 —— 用内嵌渐变造体积 */
.scene-home-body {
  position: absolute;
  left: calc(var(--rpx) * 14);
  top: calc(var(--rpx) * 46);
  width: calc(var(--rpx) * 102);
  height: calc(var(--rpx) * 58);
  border-radius: 0 0 calc(var(--rpx) * 8) calc(var(--rpx) * 8);
  background: linear-gradient(180deg, #fff4e2 0%, #ffe3c2 62%, #f3c99b 100%);
  border: calc(var(--rpx) * 3) solid #e8a06b;
  border-top: none;
  overflow: hidden;
}
[data-route="pages/game/home/home"] /* 门：拱形，深色 + 内阴影，玻璃上一点暖光 */
.scene-home-door {
  position: absolute;
  left: 50%;
  bottom: 0;
  width: calc(var(--rpx) * 26);
  height: calc(var(--rpx) * 36);
  margin-left: calc(var(--rpx) * -13);
  border-radius: calc(var(--rpx) * 13) calc(var(--rpx) * 13) 0 0;
  background: linear-gradient(180deg, #a4653d, #7c4526);
  box-shadow: inset 0 calc(var(--rpx) * 4) calc(var(--rpx) * 6) rgba(0, 0, 0, 0.25);
}
[data-route="pages/game/home/home"] .scene-home-window-l, [data-route="pages/game/home/home"] .scene-home-window-r {
  position: absolute;
  top: calc(var(--rpx) * 12);
  width: calc(var(--rpx) * 18);
  height: calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 5);
  background: linear-gradient(180deg, #bfe6f7, #8ecdea);
  border: calc(var(--rpx) * 2) solid #d89a68;
}
[data-route="pages/game/home/home"] .scene-home-window-l { left: calc(var(--rpx) * 10); }
[data-route="pages/game/home/home"] .scene-home-window-r { right: calc(var(--rpx) * 10); }
[data-route="pages/game/home/home"] .scene-home-text {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #0a9e4d;
  font-weight: 600;
  letter-spacing: calc(var(--rpx) * 2);
  text-shadow: 0 calc(var(--rpx) * 2) 0 rgba(255, 255, 255, 0.8);
}
[data-route="pages/game/home/home"] /* v4.86.67（木哥）：原来是墙上一枚奖杯画框；奖杯撤下，同一个位置改成「进入乐园」门口 ——
   点它进墨灵猫 · 十境飞升（原「乐园玩法」绿卡整卡并进这里，不再单独占一张卡）。 */
.scene-door {
  position: absolute;
  right: calc(var(--rpx) * 44);
  top: calc(var(--rpx) * 46);
  width: calc(var(--rpx) * 132);
  height: calc(var(--rpx) * 100);
  background: #ffffff;
  border: calc(var(--rpx) * 6) solid #8fd0a4;
  border-radius: calc(var(--rpx) * 16);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-shadow: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 18) rgba(23, 92, 55, 0.14);
}
[data-route="pages/game/home/home"] .scene-door-hover {
  opacity: 0.82;
}
[data-route="pages/game/home/home"] .scene-door-icon {
  font-size: calc(var(--rpx) * 40);
  line-height: 1;
}
[data-route="pages/game/home/home"] .scene-door-text {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #0a9e4d;
  font-weight: 600;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pages/game/home/home"] .scene-rug {
  position: absolute;
  left: 50%;
  bottom: calc(var(--rpx) * 108);
  width: calc(var(--rpx) * 360);
  height: calc(var(--rpx) * 92);
  margin-left: calc(var(--rpx) * -180);
  background: #b9e5c6;
  border-radius: 50%;
  border: calc(var(--rpx) * 6) solid #9bd3ab;
}
[data-route="pages/game/home/home"] /* v4.86.326：猫语播报开关（场景左下角一枚圆键；关掉压暗+🔇，本地记住） */
.scene-voice {
  position: absolute;
  left: calc(var(--rpx) * 24);
  bottom: calc(var(--rpx) * 132);
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.9);
  border: calc(var(--rpx) * 2) solid #9bd3ab;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 28);
  z-index: 5;
}
[data-route="pages/game/home/home"] .scene-voice-off {
  opacity: 0.55;
}
[data-route="pages/game/home/home"] /* 猫本体：外层负责"随等级长大"，内层负责呼吸 */
/* v4.84.1：木哥「猫再比现在大三分之一」——200×190 → 266×253（≈×1.333）。
   底边锚点 bottom:calc(var(--rpx) * 152) 不动，所以是「原地长大」：脚还落在原来的地面线上，
   只是整只猫高了一头（白圆片 ::before 按 96% 跟着放大）。 */
.pet-cat-wrap {
  position: absolute;
  left: 50%;
  bottom: calc(var(--rpx) * 152);
  width: calc(var(--rpx) * 266);
  height: calc(var(--rpx) * 253);
  margin-left: calc(var(--rpx) * -133);
  z-index: 2;
}
[data-route="pages/game/home/home"] .cat-level-1 {
  transform: scale(0.8);
}
[data-route="pages/game/home/home"] .cat-level-2 {
  transform: scale(0.9);
}
[data-route="pages/game/home/home"] .cat-level-3 {
  transform: scale(1);
}
[data-route="pages/game/home/home"] .cat-level-4 {
  transform: scale(1.1);
}
[data-route="pages/game/home/home"] .pet-cat {
  position: relative;
  width: 100%;
  height: 100%;
  animation: pet-breathe 3.2s ease-in-out infinite;
}
[data-route="pages/game/home/home"] /* 白色圆片垫底：绿线猫压在绿场景上会融掉（对比度不到 2:1），
   垫一个白圆像聚光灯，线还是那根线，但跳出来了 */
.pet-cat::before {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: 96%;
  height: 96%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 20) rgba(23, 92, 55, 0.12);
}


@keyframes pet-breathe {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(calc(var(--rpx) * -8));
  }
}
[data-route="pages/game/home/home"] .pet-cat-img {
  position: relative;   /* 压在白圆片上 */
  width: 100%;
  height: 100%;
  display: block;
}
[data-route="pages/game/home/home"] /* ================= 刺刺毛（v4.27）：没照顾好时每 3 秒露一次丑脸 =================
   小猫的「最少照顾次数」没达到（喂饭 1 次/天、铲屎 1 次/天、两天梳毛、一周洗澡），
   就把猫画成灰扑扑、炸毛、瘪嘴的样子闪一下，同时叫一轮猫叫催主人去做任务。
   v4.29 起：几件事没做好就几只猫一起叫，叫声高低长短跟着猫的成长形态走（见 utils/meow.js）。 */
.pet-cat.cat-sad {
  animation: cat-shiver 0.4s linear infinite;
}


@keyframes cat-shiver {
  0%,
  100% {
    transform: translateX(calc(var(--rpx) * -4));
  }
  50% {
    transform: translateX(calc(var(--rpx) * 4));
  }
}
[data-route="pages/game/home/home"] /* v4.86.250（木哥令「猫的周围的图形效果，删除」）：原炸毛刺刺毛
   （.cf-spikes / .cf-spike / .sp1~.sp6 六枚灰三角）整块撤下，样式一并清掉。 */

/* 生气的小符号 */
.cf-mad {
  position: absolute;
  left: calc(var(--rpx) * -26);
  top: calc(var(--rpx) * -32);
  font-size: calc(var(--rpx) * 40);
  animation: mad-pop 0.6s ease-in-out infinite alternate;
}


@keyframes mad-pop {
  from {
    transform: scale(0.86);
  }
  to {
    transform: scale(1.12);
  }
}
[data-route="pages/game/home/home"] /* v4.86.375（371 号令）：猫头顶的拟声气泡（.cf-meow / meow-float）整块撤下
   （木哥令：那个字不要了，直接说事）；.cat-bubble（366 号令）承接猫的话。 */

/* v4.86.93（木哥）：「不要弹窗说明什么动作没有做，弹窗取消」——
   原「刺刺毛横幅」（.cat-cry / .cc-*）与「常驻提示条」（.sad-tip / .sad-tip-*）整块撤掉；
   改成四个动作图标自己说话：需要做的闪动 + 亮起，没什么要做的不亮。
   判定只有一处：item.taskDot（这件事还没做完），见 utils/growth.petTaskRows。 */

@keyframes obj-need-blink {
  0%,
  100% {
    border-color: #07c160;
    box-shadow: 0 0 0 0 rgba(7, 193, 96, 0.45);
  }
  50% {
    border-color: #ffb300;
    box-shadow: 0 0 0 calc(var(--rpx) * 12) rgba(255, 179, 0, 0);
  }
}
[data-route="pages/game/home/home"] /* 这件事还没做完 → 亮着 + 一直闪（绿金描边呼吸）；点一下：有票去用、没票去赚 */
.scene-obj.obj-need {
  opacity: 1;
  background: #ffffff;
  border-color: #07c160;
  animation: obj-need-blink 1.4s ease-in-out infinite;
}
[data-route="pages/game/home/home"] /* 没什么要做的 → 不亮（压暗），不跟"要做"的那几个抢眼睛 */
.scene-obj.obj-idle {
  opacity: 0.5;
  border-color: #eeeeee;
}
[data-route="pages/game/home/home"] /* 四个可点动作：底部一条，等宽排开（场景宽约 calc(var(--rpx) * 662)，4 格 calc(var(--rpx) * 92) + 间距刚好放下） */
.scene-objs {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(var(--rpx) * 18);
  z-index: 4;
  display: flex;
  align-items: flex-end;
  justify-content: space-around;
  padding: 0 calc(var(--rpx) * 10);
  box-sizing: border-box;
}
[data-route="pages/game/home/home"] .scene-obj {
  /* 相对定位是必须的：右上角的角标 / 小红点要贴在自己这一格的右上角（v4.29 补） */
  position: relative;
  width: calc(var(--rpx) * 92);
  height: calc(var(--rpx) * 92);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.94);
  border: calc(var(--rpx) * 3) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 20);
}
[data-route="pages/game/home/home"] .obj-emoji {
  font-size: calc(var(--rpx) * 40);
  line-height: 1;
}
[data-route="pages/game/home/home"] /* v4.74.12 四大件统一用游戏里的 pick 图（同图拷进主包 /images/pet/） */
.obj-img {
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
}
[data-route="pages/game/home/home"] .obj-label {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.1;
  color: #888888;
  font-weight: 600;
}
[data-route="pages/game/home/home"] .obj-done {
  opacity: 0.4;
}
[data-route="pages/game/home/home"] /* 右上角的次数角标：>0 才显示，0 不显示 */
.obj-badge {
  position: absolute;
  top: calc(var(--rpx) * -10);
  right: calc(var(--rpx) * -10);
  min-width: calc(var(--rpx) * 30);
  height: calc(var(--rpx) * 30);
  padding: 0 calc(var(--rpx) * 6);
  box-sizing: border-box;
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 30);
  text-align: center;
  font-weight: 700;
}
[data-route="pages/game/home/home"] /* 同时还有小红点时，角标往左让一让，别把小红点压住（v4.29） */
.obj-badge-shift {
  right: calc(var(--rpx) * 16);
}
[data-route="pages/game/home/home"] /* 右上角小红点（v4.26 起，v4.29 改口径）：这件事还没做完——今天的任务没做，
   或者猫还没照顾好。样式对齐微信未读红点（小红点 + 白边）。 */
.obj-dot {
  position: absolute;
  top: calc(var(--rpx) * -6);
  right: calc(var(--rpx) * -6);
  z-index: 2;
  width: calc(var(--rpx) * 18);
  height: calc(var(--rpx) * 18);
  border-radius: 50%;
  background: #fa5151;
  border: calc(var(--rpx) * 3) solid #ffffff;
}
[data-route="pages/game/home/home"] .obj-locked {
  opacity: 0.62;
  border-style: dashed;
}
[data-route="pages/game/home/home"] /* ---- 四个动作 ＋ 今天的任务（v4.26 合并表） ---- */
.pt-list {
  margin-top: calc(var(--rpx) * 18);
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
  padding-top: calc(var(--rpx) * 6);
}
[data-route="pages/game/home/home"] .pt-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 6);
  border-bottom: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/game/home/home"] .pt-row:last-child {
  border-bottom: none;
}
[data-route="pages/game/home/home"] .pt-row:active {
  background: #ececec;
  border-radius: calc(var(--rpx) * 14);
}
[data-route="pages/game/home/home"] .pt-off {
  opacity: 0.86;
}
[data-route="pages/game/home/home"] .pt-icon-wrap {
  position: relative;
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/game/home/home"] .pt-icon {
  font-size: calc(var(--rpx) * 40);
  line-height: 1;
}
[data-route="pages/game/home/home"] /* v4.74.12 四大件统一用游戏里的 pick 图 */
.pt-img {
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
}
[data-route="pages/game/home/home"] .pt-badge {
  position: absolute;
  top: calc(var(--rpx) * -12);
  right: calc(var(--rpx) * -12);
  min-width: calc(var(--rpx) * 28);
  height: calc(var(--rpx) * 28);
  padding: 0 calc(var(--rpx) * 6);
  box-sizing: border-box;
  border-radius: calc(var(--rpx) * 999);
  background: #fa5151;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 28);
  text-align: center;
  font-weight: 600;
}
[data-route="pages/game/home/home"] /* 同时还有小红点时，角标往左让一让（v4.29） */
.pt-badge-shift {
  right: calc(var(--rpx) * 16);
}
[data-route="pages/game/home/home"] /* 右上角小红点（v4.29 口径）：这件事还没做完 */
.pt-dot {
  position: absolute;
  top: calc(var(--rpx) * -8);
  right: calc(var(--rpx) * -8);
  z-index: 2;
  width: calc(var(--rpx) * 18);
  height: calc(var(--rpx) * 18);
  border-radius: 50%;
  background: #fa5151;
  border: calc(var(--rpx) * 3) solid #ffffff;
}
[data-route="pages/game/home/home"] .pt-main {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 18);
}
[data-route="pages/game/home/home"] .pt-line {
  display: flex;
  align-items: baseline;
}
[data-route="pages/game/home/home"] .pt-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
  flex-shrink: 0;
}
[data-route="pages/game/home/home"] .pt-state {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pages/game/home/home"] .pt-state-on {
  color: #07c160;
  font-weight: 600;
}
[data-route="pages/game/home/home"] .pt-state-done {
  color: #07c160;
}
[data-route="pages/game/home/home"] .pt-task {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pages/game/home/home"] /* 照顾进度：够了几次（灰）／没照顾够（红） */
.pt-care {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  flex-shrink: 0;
}
[data-route="pages/game/home/home"] .pt-care-ok {
  color: #888888;
}
[data-route="pages/game/home/home"] .pt-care-bad {
  color: #fa5151;
  font-weight: 600;
}
[data-route="pages/game/home/home"] .pt-task-warn {
  color: #fa9d3b;
}
[data-route="pages/game/home/home"] .pt-done .pt-task {
  color: #b2b2b2;
}
[data-route="pages/game/home/home"] .pt-go {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  font-weight: 600;
}
[data-route="pages/game/home/home"] /* 猫名 + 情绪 + 等级进度 */
.cat-head {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 22);
}
[data-route="pages/game/home/home"] .cat-head-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/game/home/home"] .cat-head-tag {
  margin-left: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  background: #e8f7ee;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 12);
}
[data-route="pages/game/home/home"] .lv-bar {
  height: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: #f2f2f2;
  margin-top: calc(var(--rpx) * 16);
  overflow: hidden;
}
[data-route="pages/game/home/home"] .lv-bar-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  transition: width 0.3s;
}
[data-route="pages/game/home/home"] .cat-hint {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pages/game/home/home"] .pet-stats {
  display: flex;
  gap: calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/game/home/home"] .pet-stat {
  flex: 1;
}
[data-route="pages/game/home/home"] .pet-stat-k {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pages/game/home/home"] .pet-bar {
  height: calc(var(--rpx) * 14);
  background: #f2f2f2;
  border-radius: calc(var(--rpx) * 999);
  overflow: hidden;
}
[data-route="pages/game/home/home"] .pet-bar-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 999);
  transition: width 0.4s ease;
}
[data-route="pages/game/home/home"] .pet-bar-food {
  background: #07c160;
}
[data-route="pages/game/home/home"] .pet-bar-clean {
  background: #576b95;
}
[data-route="pages/game/home/home"] .pet-bar-mood {
  background: #07c160;
}
[data-route="pages/game/home/home"] .scene-tip {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pages/game/home/home"] /* v4.74.13 玩法说明默认折叠：「展开/收起」两字按钮在左侧，说明文字展开时跟在旁边 */
.scene-tip-row {
  display: flex;
  align-items: flex-start;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/game/home/home"] .scene-tip-toggle {
  flex-shrink: 0;
  margin-right: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 22);
  border: calc(var(--rpx) * 1) solid rgba(217, 182, 74, 0.55);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(217, 182, 74, 0.12);
  font-size: calc(var(--rpx) * 20);
  color: #8a6d1f;
  line-height: 1.4;
}
[data-route="pages/game/home/home"] .scene-tip-toggle-hover {
  background: rgba(217, 182, 74, 0.28);
}
[data-route="pages/game/home/home"] .scene-tip-row .scene-tip {
  flex: 1;
  margin-top: 0;
}
[data-route="pages/game/home/home"] /* ================= ② 资源条 ================= */
.res-row {
  display: flex;
  gap: calc(var(--rpx) * 14);
  margin: 0 0 calc(var(--rpx) * 28);
}
[data-route="pages/game/home/home"] .res {
  flex: 1;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 8) calc(var(--rpx) * 16);
  text-align: center;
}
[data-route="pages/game/home/home"] .res-num {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #191919;
}
[data-route="pages/game/home/home"] .res-max {
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  font-weight: 400;
}
[data-route="pages/game/home/home"] .res-label {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/game/home/home"] .res-tick {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/game/home/home"] /* ================= ④ 玩法网格 ================= */
.game-grid {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pages/game/home/home"] .game-item {
  width: calc(50% - calc(var(--rpx) * 8));
  box-sizing: border-box;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 16) calc(var(--rpx) * 18);
}
[data-route="pages/game/home/home"] .game-icon {
  font-size: calc(var(--rpx) * 48);
  line-height: 1;
}
[data-route="pages/game/home/home"] .game-name {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  font-weight: 500;
}
[data-route="pages/game/home/home"] .game-desc {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  line-height: 1.5;
  min-height: calc(var(--rpx) * 66);
}
[data-route="pages/game/home/home"] .game-foot {
  margin-top: calc(var(--rpx) * 10);
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 10);
}
[data-route="pages/game/home/home"] .game-cost {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/game/home/home"] .game-used {
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pages/game/home/home"] .game-locktext {
  font-size: calc(var(--rpx) * 24);
  color: #fa9d3b;
}
[data-route="pages/game/home/home"] .game-locked {
  opacity: 0.55;
}
[data-route="pages/game/home/home"] .game-locked .game-icon {
  filter: grayscale(1);
}
[data-route="pages/game/home/home"] /* ================= ⑤ 跟猫说话 ================= */
.cat-talk {
  display: flex;
  align-items: center;
  margin-bottom: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 24);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/game/home/home"] .cat-talk-icon {
  font-size: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 14);
}
[data-route="pages/game/home/home"] /* v4.74.16：说说话卡头像换成小程序的圆猫 logo */
.cat-talk-avatar {
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  margin-right: calc(var(--rpx) * 14);
  border-radius: 50%;
  flex-shrink: 0;
  background: #f2f2f2;
}
[data-route="pages/game/home/home"] .cat-talk-text {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  font-weight: 500;
}
[data-route="pages/game/home/home"] .cat-talk-go {
  font-size: calc(var(--rpx) * 40);
  font-weight: 300;
  line-height: 1;
  color: #c8c8cd;
}
[data-route="pages/game/home/home"] /* ================= ⑥ 我的家庭 ================= */
.pet-family-head {
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/game/home/home"] .pet-family-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/game/home/home"] .link-muted {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/game/home/home"] .fam-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 18) 0;
  border-bottom: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/game/home/home"] .fam-row:last-of-type {
  border-bottom: none;
}
[data-route="pages/game/home/home"] .fam-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/game/home/home"] .fam-name {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/game/home/home"] .pet-family-dot {
  width: calc(var(--rpx) * 18);
  height: calc(var(--rpx) * 18);
  border-radius: 50%;
  background: #b2b2b2;
}
[data-route="pages/game/home/home"] .pet-family-dot-on {
  background: #07c160;
}
[data-route="pages/game/home/home"] .pet-share-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/game/home/home"] .pet-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/game/home/home"] .pet-join-row {
  display: flex;
  gap: calc(var(--rpx) * 14);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/game/home/home"] .pet-join-input {
  flex: 1;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 26);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/game/home/home"] .pet-join-btn {
  flex-shrink: 0;
  width: calc(var(--rpx) * 160);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/game/home/home"] .err {
  margin-top: calc(var(--rpx) * 20);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/game/home/home"] /* 玩法卡右上角「全部玩法 ›」链接 */
.link {
  color: #576b95;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/game/home/home"] /* ---------- 分享换灵力（B-4 / G-17：可选、低调、不逼分享） ---------- */
.share-energy {
  display: flex;
  flex-direction: column;
  gap: calc(var(--rpx) * 16);
}
[data-route="pages/game/home/home"] .share-energy-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/game/home/home"] .share-energy-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
  line-height: 1.6;
}
[data-route="pages/game/home/home"] .share-energy-btn {
  margin: 0;
  background: #ffffff;
  color: #07c160;
  font-size: calc(var(--rpx) * 28);
  border: calc(var(--rpx) * 2) solid #07c160;
  border-radius: calc(var(--rpx) * 10);
  line-height: 2.3;
}
[data-route="pages/game/home/home"] .share-energy-note {
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  color: #b2b2b2;
}
[data-route="pages/game/home/home"] /* v4.86.234（木哥令）：展开里的「获得和使用方法」—— 小标题 + 一行一条口径。
   字号只走本仓 5 档（20/24/28/32/40），颜色沿用说明那块灰。 */
.scene-tip-h {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/game/home/home"] .scene-tip-row2 {
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pages/game/home/home"] .scene-tip-k {
  font-size: calc(var(--rpx) * 24);
  color: #555555;
}
[data-route="pages/game/home/home"] .scene-tip-v {
  display: block;
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  line-height: 1.6;
}
[data-route="pages/game/home/home"] /* ---------------- v4.86.364（木哥 361 号令）：和猫说话 ----------------
   猫说完会主动开聆听窗（👂）；这里给用户主动开口的键（按住说话，松手猫回话）。
   轻量、安静：不抢养猫卡的戏，listen 态轻呼吸提示现在可以直接开口。 */
.cat-talk {
  margin: calc(var(--rpx) * 16) calc(var(--rpx) * 24) 0;
  display: flex;
  align-items: center;
}
[data-route="pages/game/home/home"] .cat-talk-state {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  margin-right: calc(var(--rpx) * 16);
  white-space: nowrap;
}
[data-route="pages/game/home/home"] .cat-talk-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  height: calc(var(--rpx) * 72);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  background: #eef9f2;
  border: calc(var(--rpx) * 2) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pages/game/home/home"] /* v4.86.538：全站统一的微信语音图标（圆圈+声波），这里是绿色版 */
.cat-talk-ico {
  width: calc(var(--rpx) * 36);
  height: calc(var(--rpx) * 36);
  margin-right: calc(var(--rpx) * 8);
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48Y2lyY2xlIGN4PSI0OCIgY3k9IjQ4IiByPSI0MiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDdjMTYwIiBzdHJva2Utd2lkdGg9IjUiLz48Y2lyY2xlIGN4PSIzNyIgY3k9IjQ4IiByPSI1IiBmaWxsPSIjMDdjMTYwIi8+PHBhdGggZD0iTTQ5IDM5YTEyIDEyIDAgMCAxIDAgMTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzA3YzE2MCIgc3Ryb2tlLXdpZHRoPSI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNNTcgMzBhMjQgMjQgMCAwIDEgMCAzNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDdjMTYwIiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==");
}
[data-route="pages/game/home/home"] .cat-talk-btn-hover {
  background: #07c160;
  color: #ffffff;
}
[data-route="pages/game/home/home"] .cat-talk-live {
  animation: voice-flash 1.4s ease-in-out infinite;
}
[data-route="pages/game/home/home"] /* v4.86.370（366 号令）：猫的话气泡 —— 猫说的每一句同步上屏（声音哑了字也在） */
.cat-bubble {
  position: absolute;
  left: 50%;
  top: calc(var(--rpx) * 16);
  transform: translateX(-50%);
  max-width: 82%;
  box-sizing: border-box;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 24);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #07c160;
  border-radius: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
  color: #1f3d2b;
  z-index: 30;
  /* v4.86.411（木哥令「气泡文字做一个渐入渐出的动态，驻足屏幕 3 秒」）：
     默认淡出态（透明、略低一点点），由 .cat-bubble-in 打开到全亮 ——
     挂上→隔一帧打开，才有淡入；3 秒后撤掉 .cat-bubble-in，自动淡出。 */
  opacity: 0;
  transform: translateX(-50%) translateY(calc(var(--rpx) * 10));
  transition: opacity 0.35s ease, transform 0.35s ease;
  will-change: opacity, transform;
}
[data-route="pages/game/home/home"] /* 淡入到位（这一句正在看的时候） */
.cat-bubble-in {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
[data-route="pages/game/home/home"] /* 淡出态（挂上时 / 3 秒到点后）：往下 calc(var(--rpx) * 10) 轻轻退场 */
.cat-bubble-out {
  opacity: 0;
  transform: translateX(-50%) translateY(calc(var(--rpx) * 10));
}
[data-route="pages/game/home/home"] /* v4.86.370：麦克风没授权/通道不通时的看得见指引 */
.cat-talk-hint {
  font-size: calc(var(--rpx) * 24);
  color: #7a9a86;
  margin-top: calc(var(--rpx) * 12);
}



/* ---- pages/list/list.wxss ---- */
[data-route="pages/list/list"] /* ==================================================================
 * 作业记录页 · 微信生态皮肤（v4.70.0）
 * 白分组块 + 发丝线 + 灰箭头；日历格子压平、去虚线去米色。
 * ================================================================== */

.login-btn {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/list/list"] /* 本页自用的小链接：微信蓝 */
.link {
  color: #576b95;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/list/list"] /* v4.86.454：弱化链接补样式 —— 「老师中心 ›」「看这一单 ›」「进入 ›」几处挂的是
 * link-muted，本页只定义过 .link，那几行一直是正文黑字，看着不像能点。 */
.link-muted {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/list/list"] /* ---------------- 日历 ---------------- */
.cal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: calc(var(--rpx) * 18);
}
[data-route="pages/list/list"] .cal-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/list/list"] .cal-nav {
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 58);
  text-align: center;
  border-radius: 50%;
  background: #f7f7f7;
  color: #888888;
  font-size: calc(var(--rpx) * 40);
}
[data-route="pages/list/list"] .cal-nav-off {
  opacity: 0.34;
}
[data-route="pages/list/list"] .cal-week {
  display: flex;
  margin-bottom: calc(var(--rpx) * 6);
}
[data-route="pages/list/list"] .cal-week-item {
  flex: 1;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pages/list/list"] .cal-grid {
  display: flex;
  flex-wrap: wrap;
}
[data-route="pages/list/list"] .cal-cell {
  position: relative;
  width: 14.28%;
  height: calc(var(--rpx) * 112);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pages/list/list"] .cal-blank {
  visibility: hidden;
}
[data-route="pages/list/list"] /* v4.86.94（木哥 00:5x 第 2 条）：这一天那篇作业里老师留了言、我还没读。
   钉在格子右上角 —— 不占 cal-marks 那行（那里已经被「作 / 计划点」用了）。 */
.cal-new {
  position: absolute;
  top: calc(var(--rpx) * 8);
  right: calc(var(--rpx) * 8);
  width: calc(var(--rpx) * 14);
  height: calc(var(--rpx) * 14);
  border-radius: 50%;
  background: #fa5151;
}
[data-route="pages/list/list"] /* v4.86.288（木哥令）：那一天有未读点评 → 格子左上角「未读」小胶囊（右上角已被
   留言红点占了）。字号走 calc(var(--rpx) * 20) 档，红底白字与 day 页时间签同一支红。 */
.cal-unread {
  position: absolute;
  top: calc(var(--rpx) * 4);
  left: calc(var(--rpx) * 4);
  padding: 0 calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 24);
  color: #ffffff;
  background: #fa5151;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pages/list/list"] .cal-unread-sm {
  position: static;
}
[data-route="pages/list/list"] /* v7.0.187（木哥令）：邀约胶囊 —— 「未点评」占了左上角，这枚往下错一格，
   同支红底白字；确认后就熄 */
.cal-unread.cal-invite {
  top: calc(var(--rpx) * 32);
}
[data-route="pages/list/list"] .cal-day {
  font-size: calc(var(--rpx) * 28);
  line-height: 1.1;
  color: #191919;
}
[data-route="pages/list/list"] .cal-lunar {
  margin-top: calc(var(--rpx) * 2);
  max-width: 100%;
  overflow: hidden;
  white-space: nowrap;
  font-size: calc(var(--rpx) * 24);
  line-height: 1.1;
  color: #b2b2b2;
}
[data-route="pages/list/list"] .cal-off .cal-day, [data-route="pages/list/list"] .cal-off .cal-lunar {
  color: #fa5151;
}
[data-route="pages/list/list"] .cal-work .cal-day, [data-route="pages/list/list"] .cal-work .cal-lunar {
  color: #b2b2b2;
}
[data-route="pages/list/list"] .cal-today {
  background: #e8f7ee;
}
[data-route="pages/list/list"] .cal-today .cal-day {
  color: #07c160;
  font-weight: 600;
}
[data-route="pages/list/list"] .cal-selected {
  background: #e8f7ee;
  box-shadow: inset 0 0 0 calc(var(--rpx) * 2) #07c160;
}
[data-route="pages/list/list"] /* 作业日标记：一个「作」字小图标（正常绿、灵力补卡橙） */
.cal-marks {
  display: flex;
  align-items: center;
  justify-content: center;
  height: calc(var(--rpx) * 32);
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pages/list/list"] .cal-zuo {
  width: calc(var(--rpx) * 32);
  height: calc(var(--rpx) * 32);
  line-height: calc(var(--rpx) * 32);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  font-weight: 600;
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 6);
}
[data-route="pages/list/list"] .cal-zuo-makeup {
  background: #fa9d3b;
}
[data-route="pages/list/list"] .cal-zuo-sm {
  width: calc(var(--rpx) * 26);
  height: calc(var(--rpx) * 26);
  line-height: calc(var(--rpx) * 26);
  font-size: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 4);
  margin-right: calc(var(--rpx) * 8);
}
[data-route="pages/list/list"] .cal-dot {
  width: calc(var(--rpx) * 12);
  height: calc(var(--rpx) * 12);
  border-radius: 50%;
  background: #fa9d3b;
}
[data-route="pages/list/list"] .cal-foot {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 22);
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pages/list/list"] .cal-foot-item {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/list/list"] .cal-note {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
}
[data-route="pages/list/list"] /* ---------------- 摘要 + 补卡说明 ---------------- */
.summary {
  text-align: center;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/list/list"] .summary-sep {
  margin: 0 calc(var(--rpx) * 16);
  color: #c8c8cd;
}
[data-route="pages/list/list"] .make-card {
  border-left: calc(var(--rpx) * 6) solid #fa9d3b;
}
[data-route="pages/list/list"] .make-line {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pages/list/list"] /* ---------------- 那天的安排 ---------------- */
.sel-lunar {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/list/list"] .plan-empty {
  padding: calc(var(--rpx) * 10) 0;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/list/list"] .plan-item {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 14) 0;
}
[data-route="pages/list/list"] .plan-dot {
  width: calc(var(--rpx) * 12);
  height: calc(var(--rpx) * 12);
  margin-right: calc(var(--rpx) * 14);
  flex-shrink: 0;
  border-radius: 50%;
  background: #fa9d3b;
}
[data-route="pages/list/list"] .plan-done .plan-dot {
  background: #07c160;
}
[data-route="pages/list/list"] .plan-title {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/list/list"] .plan-done .plan-title {
  color: #b2b2b2;
  text-decoration: line-through;
}
[data-route="pages/list/list"] .plan-remind {
  font-size: calc(var(--rpx) * 24);
  color: #fa9d3b;
}
[data-route="pages/list/list"] .plan-more {
  display: block;
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/list/list"] /* ---------------- 补卡说明：压平（去边框） ---------------- */
.makeup-box {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 12);
  background: #e8f7ee;
}
[data-route="pages/list/list"] .makeup-text {
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #07c160;
}
[data-route="pages/list/list"] .makeup-btn {
  margin-top: calc(var(--rpx) * 18);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/list/list"] /* ---------------- 作业列表 ---------------- */
.item {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 26) 0;
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/list/list"] .item-date {
  width: calc(var(--rpx) * 130);
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  font-weight: 500;
}
[data-route="pages/list/list"] .item-body {
  flex: 1;
  min-width: 0;
}
[data-route="pages/list/list"] .item-line {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/list/list"] .item-tag {
  margin-left: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
}
[data-route="pages/list/list"] .item-note {
  margin-top: calc(var(--rpx) * 6);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: calc(var(--rpx) * 420);
}
[data-route="pages/list/list"] /* 微信灰箭头 */
.item-arrow {
  color: #c8c8cd;
  font-size: calc(var(--rpx) * 40);
  font-weight: 300;
  line-height: 1;
}
[data-route="pages/list/list"] .err {
  margin-top: calc(var(--rpx) * 24);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/list/list"] /* ==================================================================
 * 点某天的弹窗 + 最新作业流动榜
 * ================================================================== */

/* ---------------- 弹窗：白底圆角，无重阴影 ---------------- */
.modal-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(var(--rpx) * 40);
  box-sizing: border-box;
}
[data-route="pages/list/list"] .modal {
  width: 100%;
  max-width: calc(var(--rpx) * 640);
  max-height: 80vh;
  overflow-y: auto;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 30) calc(var(--rpx) * 30) calc(var(--rpx) * 34);
  box-sizing: border-box;
}
[data-route="pages/list/list"] .modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pages/list/list"] .modal-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/list/list"] .modal-x {
  width: calc(var(--rpx) * 52);
  height: calc(var(--rpx) * 52);
  line-height: calc(var(--rpx) * 52);
  text-align: center;
  color: #b2b2b2;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/list/list"] .modal-lunar {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/list/list"] .modal-empty {
  padding: calc(var(--rpx) * 16) 0;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/list/list"] .mplan {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 14) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/list/list"] .mplan-dot {
  width: calc(var(--rpx) * 12);
  height: calc(var(--rpx) * 12);
  margin-right: calc(var(--rpx) * 14);
  flex-shrink: 0;
  border-radius: 50%;
  background: #fa9d3b;
}
[data-route="pages/list/list"] .mplan-done .mplan-dot {
  background: #07c160;
}
[data-route="pages/list/list"] .mplan-title {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/list/list"] .mplan-done .mplan-title {
  color: #b2b2b2;
  text-decoration: line-through;
}
[data-route="pages/list/list"] .mplan-remind {
  font-size: calc(var(--rpx) * 24);
  color: #fa9d3b;
}
[data-route="pages/list/list"] .modal-add {
  display: block;
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/list/list"] .modal-past {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/list/list"] .modal-hw {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 12);
  background: #f7f7f7;
}
[data-route="pages/list/list"] .modal-hw-body {
  flex: 1;
  min-width: 0;
}
[data-route="pages/list/list"] .modal-hw-title {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/list/list"] .modal-hw-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pages/list/list"] .modal-more {
  display: block;
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/list/list"] /* ---------------- 最新作业流动榜 ---------------- */
.feed-note {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
}
[data-route="pages/list/list"] .feed-item {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 22) 0;
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/list/list"] .feed-avatar {
  width: calc(var(--rpx) * 84);
  height: calc(var(--rpx) * 84);
  border-radius: 50%;
  flex-shrink: 0;
  background: #f2f2f2;
}
[data-route="pages/list/list"] .feed-avatar-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #e8f7ee;
  color: #07c160;
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
}
[data-route="pages/list/list"] .feed-main {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 20);
}
[data-route="pages/list/list"] .feed-line {
  display: flex;
  align-items: center;
}
[data-route="pages/list/list"] .feed-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
  max-width: calc(var(--rpx) * 260);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pages/list/list"] .badge-mentor {
  margin-left: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #07c160;
  background: #e8f7ee;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
}
[data-route="pages/list/list"] .feed-tag-mine {
  margin-left: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
}
[data-route="pages/list/list"] .feed-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: calc(var(--rpx) * 360);
}
[data-route="pages/list/list"] .feed-meta {
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pages/list/list"] .feed-score {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/list/list"] .feed-score-none {
  color: #b2b2b2;
}
[data-route="pages/list/list"] .feed-ops {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: calc(var(--rpx) * 10);
  margin-left: calc(var(--rpx) * 12);
}
[data-route="pages/list/list"] .feed-op {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 8);
  background: #f7f7f7;
}
[data-route="pages/list/list"] .feed-op-on {
  color: #fa5151;
  background: #feeceb;
}
[data-route="pages/list/list"] .feed-op-add {
  color: #07c160;
  background: #e8f7ee;
}
[data-route="pages/list/list"] .feed-op-done {
  color: #b2b2b2;
  background: transparent;
  padding-right: 0;
}
[data-route="pages/list/list"] /* ==================================================================
 * v4.86.196（木哥 18:0x）：流动榜折叠 —— 展开更多 / 已显示全部
 * ================================================================== */

.feed-more {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 18) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pages/list/list"] .feed-more-end {
  color: #b2b2b2;
  background: transparent;
}
[data-route="pages/list/list"] /* ==================================================================
 * v4.86.95（木哥 01:1x 第 4 条）：最近 7 天点阵 + 四周柱状
 * 从「我的 → 分析」（pkgFamily/pages/family）原样搬来 ——
 * 样式一句不改地抄过来，两边看起来才是同一张卡。
 * ================================================================== */

.days {
  display: flex;
  justify-content: space-between;
}
[data-route="pages/list/list"] .day {
  flex: 1;
  text-align: center;
}
[data-route="pages/list/list"] .day-dot {
  width: calc(var(--rpx) * 72);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  border-radius: 50%;
  margin: 0 auto calc(var(--rpx) * 10);
  background: #f2f2f2;
  color: #b2b2b2;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/list/list"] .day-on .day-dot {
  background: #07c160;
  color: #ffffff;
}
[data-route="pages/list/list"] .day-today .day-dot {
  box-shadow: 0 0 0 calc(var(--rpx) * 4) #a6e0be;
}
[data-route="pages/list/list"] .day-label {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/list/list"] .bars {
  display: flex;
  align-items: flex-end;
  justify-content: space-around;
  height: calc(var(--rpx) * 240);
}
[data-route="pages/list/list"] .bar-wrap {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 100%;
}
[data-route="pages/list/list"] .bar-n {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pages/list/list"] .bar-track {
  flex: 1;
  width: calc(var(--rpx) * 56);
  background: #f2f2f2;
  border-radius: calc(var(--rpx) * 12);
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}
[data-route="pages/list/list"] .bar-fill {
  width: 100%;
  background: #07c160;
  border-radius: calc(var(--rpx) * 12);
  min-height: calc(var(--rpx) * 8);
  transition: height 0.3s;
}
[data-route="pages/list/list"] .bar-label {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin-top: calc(var(--rpx) * 10);
}
[data-route="pages/list/list"] /* 弹窗里那篇作业上的「共 N 篇」（一天交不止一篇时才出现） */
.modal-hw-count {
  margin-left: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/list/list"] /* v4.86.234（木哥令）：老师身份下的点评数据日历 ——「评」标记 + 四格数值 + 最近完成。
   字号只走本仓 5 档（20/24/28/32/40），颜色沿用这页既有那几支灰绿。 */
.cal-zuo-review {
  background: #07c160;
  color: #ffffff;
  position: relative;
}
[data-route="pages/list/list"] .cal-zuo-n {
  font-size: calc(var(--rpx) * 20);
  margin-left: calc(var(--rpx) * 2);
}
[data-route="pages/list/list"] .m-stats {
  display: flex;
  flex-wrap: wrap;
}
[data-route="pages/list/list"] .m-stat {
  width: 50%;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/list/list"] .m-stat-n {
  font-size: calc(var(--rpx) * 40);
  color: #191919;
}
[data-route="pages/list/list"] .m-stat-hot {
  color: #fa5151;
}
[data-route="pages/list/list"] .m-stat-t {
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/list/list"] .m-note {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 20);
  line-height: 1.6;
}
[data-route="pages/list/list"] .m-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 16) 0;
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/list/list"] .m-row-main {
  flex: 1;
}
[data-route="pages/list/list"] .m-row-t {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/list/list"] .m-row-tag {
  margin-left: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #07c160;
}
[data-route="pages/list/list"] .m-row-s {
  font-size: calc(var(--rpx) * 24);
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pages/list/list"] /* v4.86.454：这里原本整份样式被复制了第二遍（第 802–1602 行，796 行，与文件开头逐字相同）。
   两份内容一模一样，所以眼下没走形，但后一份会盖住前一份 —— 以后改前一份的样式不生效，
   还得记住有两处要改。清掉重复的那一份，效果不变（选择器数量前后都是 232 个）。 */

/* v4.86.307（木哥 307 号令）：弹窗里未点评单的红字行 —— 灰底行块同款，右侧红字 */
.mplan-pending {
  border: calc(var(--rpx) * 2) solid #ffd4d4;
}
[data-route="pages/list/list"] .mplan-pending-t {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 34);
  color: #fa5151;
  flex-shrink: 0;
}
[data-route="pages/list/list"] /* v4.86.317（木哥 317 号令）：未读明细入口行 —— 一行摆总数，点整行进明细页 */
.unread-entry {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24);
}
[data-route="pages/list/list"] .unread-entry-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/list/list"] .unread-entry-t {
  display: block;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  line-height: calc(var(--rpx) * 40);
}
[data-route="pages/list/list"] .unread-entry-sub {
  display: block;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: calc(var(--rpx) * 36);
}
[data-route="pages/list/list"] .unread-entry-go {
  margin-left: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  flex-shrink: 0;
}
[data-route="pages/list/list"] /* ============================================================
 * v4.86.441（A 组 r254 B1）· 一周一封信：日历头那枚「本周的信」
 * ------------------------------------------------------------
 * 未读时右上角一枚红点（#fa5151，与全站未读同一个红），读过即撤。
 * 胶囊高度给死，避免 ✉ 与中文混排把日历头撑高、把下面的格子往下挤。
 * ============================================================ */
.cal-title-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/list/list"] .cal-title-wrap .cal-title {
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pages/list/list"] .cal-letter {
  position: relative;
  display: flex;
  align-items: center;
  height: calc(var(--rpx) * 40);
  padding: 0 calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: #f1f8f3;
  border: calc(var(--rpx) * 1) solid #d9eee1;
}
[data-route="pages/list/list"] .cal-letter-ico {
  font-size: calc(var(--rpx) * 24);
  line-height: 1;
  color: #07c160;
}
[data-route="pages/list/list"] .cal-letter-txt {
  margin-left: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  line-height: 1;
  color: #07c160;
}
[data-route="pages/list/list"] .cal-letter-dot {
  position: absolute;
  top: calc(var(--rpx) * -6);
  right: calc(var(--rpx) * -6);
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 16);
  border-radius: 50%;
  background: #fa5151;
  border: calc(var(--rpx) * 2) solid #fff;
}
[data-route="pages/list/list"] /* v7.0.183（木哥令）：班级作业角标（学员+老师共用一套）——
 * 挂格子右上角（左上留给「未点评」胶囊），橙＝有没交/未结束，绿＝全交/全结束 */
.cal-hw {
  position: absolute;
  top: calc(var(--rpx) * 4);
  right: calc(var(--rpx) * 4);
  padding: 0 calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 24);
  color: #ffffff;
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pages/list/list"] .cal-hw-open { background: #e6a23c; }
[data-route="pages/list/list"] .cal-hw-end { background: #07c160; }
[data-route="pages/list/list"] .cal-hw-sm {
  position: static;
  display: inline-block;
}
[data-route="pages/list/list"] /* v7.0.194（木哥令「因为有未提交作业，发现页的未读提醒呢」）：
   「作业」橙标下面那枚未读红点 —— 有作业还没交就亮，交上去才熄；
   与左上「未点评/邀约」胶囊错开位置，一格能同时说清两三件事 */
.cal-hw-dot {
  position: absolute;
  top: calc(var(--rpx) * 30);
  right: calc(var(--rpx) * 8);
  width: calc(var(--rpx) * 14);
  height: calc(var(--rpx) * 14);
  border-radius: 50%;
  background: #fa5151;
  border: calc(var(--rpx) * 2) solid #ffffff;
}
[data-route="pages/list/list"] .cal-hw-dot-sm {
  position: static;
  display: inline-block;
  width: calc(var(--rpx) * 12);
  height: calc(var(--rpx) * 12);
  margin-right: calc(var(--rpx) * 4);
  vertical-align: middle;
}
[data-route="pages/list/list"] /* 弹窗里那行作业的状态字：未完成红（同 mplan-pending-t），完成/结束绿 */
.mplan-hw-st {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 34);
}
[data-route="pages/list/list"] .mplan-hw-end { color: #07c160; }



/* ---- pages/detail/detail.wxss ---- */
[data-route="pages/detail/detail"] .login-btn {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/detail/detail"] .head {
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] .shot {
  width: 100%;
  height: calc(var(--rpx) * 520);
  border-radius: calc(var(--rpx) * 16);
  background: #f7f7f7;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  position: relative;
}
[data-route="pages/detail/detail"] /* v4.86.330：审核中灰标 —— 压在照片左上角，不遮画面主体 */
.sec-chip {
  position: absolute;
  left: calc(var(--rpx) * 16);
  top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
  background: rgba(0, 0, 0, 0.55);
}
[data-route="pages/detail/detail"] .shot-img {
  width: 100%;
  height: 100%;
}
[data-route="pages/detail/detail"] /* v4.86.358（356 号令③）：批改回来的单 —— 顶部作业位直接摆合成批注图。
   原图区固定 calc(var(--rpx) * 520) 高 + aspectFit，批注图照搬会把图压小还留大边；
   定高的放开走 wxml 内联样式（hasImage && mentorMarkImage 时 height:auto，
   class="shot" 字面留给 UGC 举报锁），这里只管里层：widthFix 按宽撑满
   （与老师端 shot-mark、学生端 mark-box 同一口径），叠层 ♪ 的百分比坐标
   才与图片显示区对齐。 */
.mark-top-wrap {
  position: relative;
  width: 100%;
}
[data-route="pages/detail/detail"] .shot-img-wide {
  width: 100%;
  height: auto;
  display: block;
}
[data-route="pages/detail/detail"] .note {
  margin-top: calc(var(--rpx) * 26);
  padding-top: calc(var(--rpx) * 22);
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/detail/detail"] .note-label {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/detail/detail"] .note-text {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/detail/detail"] .review {
  font-size: calc(var(--rpx) * 32);
  line-height: 1.9;
  white-space: pre-wrap;
  color: #191919;
}
[data-route="pages/detail/detail"] /* #659（v4.86.400）：终审池稿分段渲染 —— 段间 12–16px 口径取 calc(var(--rpx) * 26) 留白，
 * 段内行高 1.7；不做序号、不做【】小标题（表情就是序号）；单段不省略不折叠 */
.review-blocks {
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pages/detail/detail"] .review-para {
  font-size: calc(var(--rpx) * 32);
  line-height: 1.7;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 26);
}
[data-route="pages/detail/detail"] .review-para:last-child {
  margin-bottom: 0;
}
[data-route="pages/detail/detail"] /* v4.86.148（木哥）：打字时的「缩小的语音输入波形」——替掉原来那个 ▍ 黑光标。
   三根小竖条上下跳，绿色（跟语音输入同一套语言），跟着文字走、不抢行。 */
.wave {
  display: inline-flex;
  align-items: flex-end;
  height: calc(var(--rpx) * 20);
  margin-left: calc(var(--rpx) * 6);
  vertical-align: middle;
}
[data-route="pages/detail/detail"] .wave-b {
  width: calc(var(--rpx) * 4);
  height: 100%;
  margin-right: calc(var(--rpx) * 3);
  border-radius: calc(var(--rpx) * 2);
  background: #07c160;
  animation: wave-jump 0.9s ease-in-out infinite;
}
[data-route="pages/detail/detail"] .wave-b:nth-child(2) {
  height: 62%;
  animation-delay: 0.15s;
}
[data-route="pages/detail/detail"] .wave-b:nth-child(3) {
  height: 86%;
  animation-delay: 0.3s;
}

@keyframes wave-jump {
  0%,
  100% {
    transform: scaleY(0.35);
  }
  50% {
    transform: scaleY(1);
  }
}
[data-route="pages/detail/detail"] /* 先生落款：手写体签名 + 朱砂印（去 AI 化的视觉一环，属人设内容，保留手写/印章观感）
   字体走 wx.loadFontFace 注册的「HandSign」（子集内嵌 12KB）；
   万一没加载上，退回默认字体的倾斜样式，观感仍成立。 */
.sign-row {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  margin-top: calc(var(--rpx) * 18);
  padding-right: calc(var(--rpx) * 10);
}
[data-route="pages/detail/detail"] .sign-hand {
  font-family: 'HandSign', -apple-system, sans-serif;
  font-size: calc(var(--rpx) * 46);
  line-height: 1.2;
  color: #191919;
  letter-spacing: calc(var(--rpx) * 8);
  margin-right: calc(var(--rpx) * 20);
  transform: rotate(-4deg);
  transform-origin: right center;
}
[data-route="pages/detail/detail"] .sign-seal {
  width: calc(var(--rpx) * 86);
  height: calc(var(--rpx) * 86);
  border: calc(var(--rpx) * 4) solid #fa5151;
  border-radius: calc(var(--rpx) * 8);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  transform: rotate(-6deg);
  opacity: 0.88;
}
[data-route="pages/detail/detail"] .seal-char {
  font-family: 'HandSign', -apple-system, sans-serif;
  font-size: calc(var(--rpx) * 32);
  line-height: calc(var(--rpx) * 36);
  color: #fa5151;
  letter-spacing: calc(var(--rpx) * 2);
}
[data-route="pages/detail/detail"] .actions {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 32);
}
[data-route="pages/detail/detail"] /* v4.86.218（木哥 07:4x 第 1 条）：按键一行放下、不再折行 ——
   字号 32→28（阶梯内）、竖padding 24→20、白名单 nowrap；
   留言键单独亮出来：浅绿底 + 绿字（与「真人」徽章同一族），师生沟通的主入口 */
.actions button {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 20) 0;
  white-space: nowrap;
}
[data-route="pages/detail/detail"] .chat-btn {
  color: #07c160;
  background: #f0faf3;
  border-color: #bfe8cd;
  font-weight: 500;
}
[data-route="pages/detail/detail"] .chat-btn.button-hover {
  background: #e2f4e8;
  color: #07c160;
}
[data-route="pages/detail/detail"] .danger {
  margin-top: calc(var(--rpx) * 30);
  text-align: center;
  color: #b2b2b2;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/detail/detail"] /* v4.86.278：底部「把作业分享给我的朋友/老师点评一下」（button 自带边距要清） */
.share-teacher-btn {
  margin-top: calc(var(--rpx) * 30);
  width: 100%;
}
[data-route="pages/detail/detail"] .share-teacher-btn::after {
  border: none;
}
[data-route="pages/detail/detail"] .cost-tip {
  margin-top: calc(var(--rpx) * 18);
}
[data-route="pages/detail/detail"] /* v4.86.480（木哥 18:53 第 3 条）：这张页的「点评会员」卡整卡撤了，
   .mem-* 十三个选择器跟着一起删 —— 留着就是下次有人照着样式表把它加回来 */

.req-meta {
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pages/detail/detail"] /* v4.86.314：举报入口 —— 一行小字，颜色压到最弱（合规要它、但不能抢点评的注意力） */
.rep-row {
  margin-top: calc(var(--rpx) * 12);
  display: flex;
  justify-content: flex-end;
}
[data-route="pages/detail/detail"] .rep-link {
  font-size: calc(var(--rpx) * 20);
  color: #b0b4ba;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 4) calc(var(--rpx) * 2);
}
[data-route="pages/detail/detail"] .ai-btn {
  color: #07c160;
  font-weight: 500;
}
[data-route="pages/detail/detail"] .badge-mentor {
  background: #e8f7ee;
  color: #07c160;
  margin-left: calc(var(--rpx) * 10);
}
[data-route="pages/detail/detail"] .err {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
}
[data-route="pages/detail/detail"] /* v4.86.86：音色选择的样式（.voice-row/-label/-scroll/-chips/-chip/-chip-on）随功能一起删，
   不再留没人用的样式。 */

.speak-btn {
  color: #576b95;
  font-weight: 500;
}
[data-route="pages/detail/detail"] .speak-on {
  color: #fa5151;
  background: #feeceb;
}
[data-route="pages/detail/detail"] .badge-quality {
  background: #e8f7ee;
  color: #07c160;
  margin-left: calc(var(--rpx) * 10);
}
[data-route="pages/detail/detail"] .rate-box {
  margin-top: calc(var(--rpx) * 22);
  padding: calc(var(--rpx) * 20);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .star-row {
  margin: calc(var(--rpx) * 14) 0 calc(var(--rpx) * 10);
}
[data-route="pages/detail/detail"] .star {
  font-size: calc(var(--rpx) * 56);
  color: #b2b2b2;
  margin-right: calc(var(--rpx) * 18);
}
[data-route="pages/detail/detail"] .star:active {
  transform: scale(1.15);
}
[data-route="pages/detail/detail"] .star-busy {
  opacity: 0.5;
}
[data-route="pages/detail/detail"] /* ---- 作品卡（v4.5） ---- */

.card-btn {
  margin-top: calc(var(--rpx) * 22);
  width: 100%;
  color: #07c160;
  font-weight: 500;
}
[data-route="pages/detail/detail"] .card-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/detail/detail"] .card-sheet {
  width: 86vw;
  max-height: 86vh;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 30);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
}
[data-route="pages/detail/detail"] .card-sheet-title {
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] .card-preview {
  width: 100%;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .card-making {
  height: calc(var(--rpx) * 400);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #888888;
  background: #f7f7f7;
}
[data-route="pages/detail/detail"] .card-sheet-actions {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 22);
}
[data-route="pages/detail/detail"] .card-sheet-actions button {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/detail/detail"] .sheet-save {
  color: #ffffff;
}
[data-route="pages/detail/detail"] .card-sheet-tip {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pages/detail/detail"] /* v4.69.2：离屏画布收进屏内。
   原来用 position:fixed + left:-9999px 藏到屏幕外，iOS 会把这种负偏移的 fixed
   盒子算进页面可滚动宽度 —— 整页因此能被左右拖（「我的」页晃、打卡/记录页没有
   这块画布所以不晃）。现在锚在屏内左上、缩到 1px、透明、不挡点击。
   画布出图只认 canvas.width/height（share-card.js / detail.js 都是这么写的），
   CSS 尺寸只影响显示，改小不影响分享图质量。 */
.share-canvas {
  position: fixed;
  left: 0;
  top: 0;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
  z-index: -1;
}
[data-route="pages/detail/detail"] /* 最佳单字截图裁剪（v4.7） */
.crop-hint {
  margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
}
[data-route="pages/detail/detail"] .crop-area {
  position: relative;
  margin: 0 auto calc(var(--rpx) * 24);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
  overflow: hidden;
}
[data-route="pages/detail/detail"] .crop-img {
  position: absolute;
  left: 0;
  top: 0;
  display: block;
}
[data-route="pages/detail/detail"] .crop-marea {
  position: absolute;
  left: 0;
  top: 0;
  background: transparent;
}
[data-route="pages/detail/detail"] /* 裁剪选框：去掉彩色描边，改用底色区分（calc(var(--rpx) * 1) 发丝线 + 主色浅底） */
.crop-box {
  border: calc(var(--rpx) * 1) solid #f2f2f2;
  background: rgba(7, 193, 96, 0.12);
  box-sizing: border-box;
}
[data-route="pages/detail/detail"] /* 点评维度评分卡（标准体系 v1.0） */
.score-box {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .score-head {
  display: flex;
  align-items: center;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .score-level {
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 18);
}
[data-route="pages/detail/detail"] /* 等级色：类名必须用英文（中文类名会被微信编译器拒绝，报 -80056） */
.score-lv-excellent { background: #fa9d3b; }
[data-route="pages/detail/detail"] .score-lv-good { background: #07c160; }
[data-route="pages/detail/detail"] .score-lv-pass { background: #576b95; }
[data-route="pages/detail/detail"] .score-lv-todo { background: #fa5151; }
[data-route="pages/detail/detail"] .score-note {
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/detail/detail"] .score-dims {
  display: flex;
  flex-direction: column;
  gap: calc(var(--rpx) * 12);
}
[data-route="pages/detail/detail"] .score-dim {
  display: flex;
  align-items: center;
}
[data-route="pages/detail/detail"] .score-dim-name {
  width: calc(var(--rpx) * 150);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/detail/detail"] .score-bar {
  flex: 1;
  height: calc(var(--rpx) * 16);
  background: #f2f2f2;
  border-radius: calc(var(--rpx) * 8);
  overflow: hidden;
}
[data-route="pages/detail/detail"] .score-bar-fill {
  height: 100%;
  background: #07c160;
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pages/detail/detail"] .score-dim-val {
  width: calc(var(--rpx) * 70);
  text-align: right;
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #07c160;
}
[data-route="pages/detail/detail"] .score-best {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/detail/detail"] .score-best-char {
  font-weight: 500;
  color: #fa5151;
}
[data-route="pages/detail/detail"] /* 批注图：文字点评 + 三色圈点标注（图内三色为内容语义，保留） */
.mark-box {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .mark-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pages/detail/detail"] .mark-img {
  width: 100%;
  border-radius: calc(var(--rpx) * 12);
  background: #ffffff;
}
[data-route="pages/detail/detail"] /* v4.86.62：声音标志 —— 叠在老师圈画的原位置上，点了直接听原音 */
.mark-img-wrap {
  position: relative;
}
[data-route="pages/detail/detail"] /* v4.86.63：语音点评独立入口（圈画区外面，一定看得见） */
.voice-strip {
  display: flex;
  align-items: center;
  margin-bottom: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  background: #eef7ef;
  border: calc(var(--rpx) * 2) solid #cde8d0;
}
[data-route="pages/detail/detail"] .voice-strip-on {
  background: #e2f3e5;
  border-color: #7cc47f;
}
[data-route="pages/detail/detail"] .vs-icon {
  font-size: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pages/detail/detail"] .vs-text {
  font-size: calc(var(--rpx) * 28);
  color: #35733a;
}
[data-route="pages/detail/detail"] /* v4.86.70：老师逐处写的点评（序号与图上「第 N 处」标签对应） */
.note-list {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10);
  background: #faf8f2;
  border: calc(var(--rpx) * 2) solid #f0e6cf;
}
[data-route="pages/detail/detail"] .note-item {
  display: flex;
  align-items: flex-start;
  margin-bottom: calc(var(--rpx) * 10);
}
[data-route="pages/detail/detail"] .note-item:last-child {
  margin-bottom: 0;
}
[data-route="pages/detail/detail"] .note-no {
  flex: none;
  margin-right: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #b07b28;
}
[data-route="pages/detail/detail"] .note-txt {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #191919;
}
[data-route="pages/detail/detail"] /* v4.86.72：这一处留了原音 —— 行尾「🔊 听原音」，点了听原声（播放中变「⏹ 播放中」） */
.note-play {
  flex: none;
  margin-left: calc(var(--rpx) * 12);
  color: #07c160;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/detail/detail"] .note-play-on {
  color: #fa9d3b;
}
[data-route="pages/detail/detail"] /* v4.86.79：点了图标才浮出来的那一处文字（在图片下方，不在图上） */
.note-bubble {
  display: flex;
  align-items: flex-start;
  margin-top: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10);
  background: #eef7ef;
  border: calc(var(--rpx) * 2) solid #cde8d0;
}
[data-route="pages/detail/detail"] .nb-no {
  flex: none;
  margin-right: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #35733a;
}
[data-route="pages/detail/detail"] .nb-txt {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #191919;
}
[data-route="pages/detail/detail"] /* v4.86.79：逐处点评的标题行 —— 默认收起，点它展开 */
.note-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pages/detail/detail"] .nh-t {
  font-size: calc(var(--rpx) * 28);
  color: #b07b28;
}
[data-route="pages/detail/detail"] .nh-x {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pages/detail/detail"] /* v4.86.79：图上小图标分两种 —— ♪ 有老师原音 / 💬 只有文字（点了转语音读出来） */
.note-dot-audio {
  /* v4.86.362（359 号令）：固定绿降为兜底色 —— wxml 内联已带该处圈点自己的颜色 */
  color: #07c160;
}
[data-route="pages/detail/detail"] /* v4.86.362（359 号令）：有原音的 ♪ 常驻闪动；keyframes 全站共用 app.wxss 的 voice-flash */
.note-dot-flash {
  animation: voice-flash 1.4s ease-in-out infinite;
}
[data-route="pages/detail/detail"] .note-dot-text {
  color: #4a6fa5;
}
[data-route="pages/detail/detail"] /* v4.86.79：**页内**放大层 —— 图片与图标同一套百分比定位，放大后图标跟着走、照样能点
 * v4.86.259（木哥令）：黑底改全站浅色（与 day 页同款）—— 页底浅灰、深字、白关闭钮 */
.zoom-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
  background: #ededed;
  display: flex;
  flex-direction: column;
}
[data-route="pages/detail/detail"] .zoom-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 32);
}
[data-route="pages/detail/detail"] .zoom-title {
  color: #1a1a1a;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/detail/detail"] .zoom-close {
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  border-radius: 50%;
  background: #ffffff;
  color: #333333;
  font-size: calc(var(--rpx) * 32);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/detail/detail"] /* v4.86.81：双指捏合缩放 —— movable-area 吃手势，movable-view 扛图片+图标 */
.zoom-body {
  flex: 1;
  position: relative;
  overflow: hidden;
}
[data-route="pages/detail/detail"] .zoom-area {
  width: 100%;
  height: 100%;
}
[data-route="pages/detail/detail"] .zoom-wrap {
  position: relative;
  width: 100%;
  height: 100%;
}
[data-route="pages/detail/detail"] .zoom-img {
  display: block;
}
[data-route="pages/detail/detail"] .zoom-foot {
  flex: none;
  padding-bottom: env(safe-area-inset-bottom);
}
[data-route="pages/detail/detail"] .zoom-foot .note-bubble {
  margin: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 8);
}
[data-route="pages/detail/detail"] .zoom-tip {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 32) calc(var(--rpx) * 40);
  color: #8a8a8a;
  font-size: calc(var(--rpx) * 24);
  text-align: center;
}
[data-route="pages/detail/detail"] .voice-dot {
  position: absolute;
  transform: translate(-50%, -50%);
  width: calc(var(--rpx) * 76);
  height: calc(var(--rpx) * 76);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 12) rgba(0, 0, 0, 0.28);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 40);
  z-index: 2;
  /* v4.86.228（木哥令）：所有点评的标记点都 60% 透明度 —— 图上这些 ♪/💬 圆点
     也是标记点，一并压到 0.4，少盖作业；正在播的那处恢复不透明（找得着、听得清）。 */
  opacity: 0.4;
}
[data-route="pages/detail/detail"] .voice-dot-on {
  background: #e8f5e9;
  box-shadow: 0 0 0 calc(var(--rpx) * 6) rgba(76, 175, 80, 0.25);
  opacity: 1;
}
[data-route="pages/detail/detail"] /* v4.86.72：留了原音的那一处，图上原位置的 ♪ 圆点（小一号，和整体原音的 🔊 分开） */
.note-dot {
  width: calc(var(--rpx) * 60);
  height: calc(var(--rpx) * 60);
  color: #07c160;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/detail/detail"] .mark-making {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  padding: calc(var(--rpx) * 40) 0;
  text-align: center;
}
[data-route="pages/detail/detail"] .mark-legend {
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .mark-legend-item {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 8) 0;
}
[data-route="pages/detail/detail"] .mark-dot {
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 16);
  border-radius: 50%;
  margin-right: calc(var(--rpx) * 8);
}
[data-route="pages/detail/detail"] .mark-dot-green { background: #07c160; }
[data-route="pages/detail/detail"] .mark-dot-blue { background: #576b95; }
[data-route="pages/detail/detail"] .mark-dot-red { background: #fa5151; }
[data-route="pages/detail/detail"] /* v4.60 合规：AI 生成内容标注（保留「先生」人设，但必须让用户知道这是 AI 写的） */
.ai-tag {
  font-size: calc(var(--rpx) * 20);
  color: #b2b2b2;
  line-height: 1.4;
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pages/detail/detail"] /* ---------------- 点评进度条（v4.83.7） ----------------
   木哥：「AI点评要点击之后，出来一个进度条，控制在10秒以内」。
   9 秒内冲到 95%，之后停在 95% 等真结果 —— 结果出来才补满 100%。
   节奏由 JS 每 120ms 推一次 revProg，这里只管画。 */
.rev-progress {
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 22);
}
[data-route="pages/detail/detail"] .rev-progress-track {
  height: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #ededed;
  overflow: hidden;
}
[data-route="pages/detail/detail"] .rev-progress-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(90deg, #07c160, #07c160);
  transition: width 0.14s linear;
}
[data-route="pages/detail/detail"] .rev-progress-meta {
  margin-top: calc(var(--rpx) * 12);
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/detail/detail"] .rev-progress-pct {
  color: #07c160;
  font-weight: 500;
}
[data-route="pages/detail/detail"] /* ---------------- 订阅入口（v4.83.7） ----------------
   一次性订阅消息一次授权只能发一条，自动弹窗只在刚交完作业那次出现，
   所以给一个常驻的、用户自己点的口子（点它直接弹微信授权框）。 */
/* v4.86.11 老师邀约卡（点评区 pending 期间的头像+时间+留言） */
.card-title-row {
  display: flex;
  align-items: center;
}
[data-route="pages/detail/detail"] .mentor-ava {
  flex: none;
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  border-radius: 50%;
  margin-right: calc(var(--rpx) * 14);
  background: #f2f2f2;
}
[data-route="pages/detail/detail"] .mentor-ava-txt {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #576b95;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/detail/detail"] /* v4.86.184：头像右边两行 —— 上行昵称 + 徽章（谁评的），下行身份（这是什么） */
.mw-who {
  flex: 1;
  min-width: 0;
}
[data-route="pages/detail/detail"] .mw-name {
  display: flex;
  align-items: center;
}
[data-route="pages/detail/detail"] .mw-name-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/detail/detail"] .mw-role {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/detail/detail"] .invite-card {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 16);
  background: #f7f8fa;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .invite-ava {
  width: calc(var(--rpx) * 88);
  height: calc(var(--rpx) * 88);
  border-radius: 50%;
  margin-right: calc(var(--rpx) * 20);
  flex-shrink: 0;
  background: #eef1f6;
}
[data-route="pages/detail/detail"] .invite-ava-txt {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #576b95;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/detail/detail"] .invite-body {
  flex: 1;
  min-width: 0;
}
[data-route="pages/detail/detail"] .invite-line {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  margin-bottom: calc(var(--rpx) * 6);
}
[data-route="pages/detail/detail"] .invite-sub {
  font-size: calc(var(--rpx) * 24);
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pages/detail/detail"] /* v4.86.13 回看建议（点评卡下方，按字给课时片段） */
.clip-box {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  background: #f7f8fa;
}
[data-route="pages/detail/detail"] .clip-title {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin-bottom: calc(var(--rpx) * 10);
}
[data-route="pages/detail/detail"] .clip-item {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding: calc(var(--rpx) * 6) 0;
}
[data-route="pages/detail/detail"] .clip-label {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
}
[data-route="pages/detail/detail"] .clip-where {
  font-size: calc(var(--rpx) * 24);
  color: #576b95;
}
[data-route="pages/detail/detail"] /* v4.86.35：老师原音（听 / 转文字） */
.voice-note {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .voice-note .vn-play {
  flex: none;
}
[data-route="pages/detail/detail"] .voice-note-text {
  margin-top: calc(var(--rpx) * 12);
  color: #576b95;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/detail/detail"] /* v4.86.94（木哥 00:5x 第 2 条）：老师留言未读 —— 挂在「💬 联系老师」右上角。
   与老师页「和家长交流」那颗同一套做法（.chat-parent 放开裁切 + 角标往回收）。 */
.chat-parent {
  position: relative;
  overflow: visible;
}
[data-route="pages/detail/detail"] .chat-unread {
  position: absolute;
  top: calc(var(--rpx) * -10);
  right: calc(var(--rpx) * -10);
  flex: none;
  min-width: calc(var(--rpx) * 34);
  height: calc(var(--rpx) * 34);
  padding: 0 calc(var(--rpx) * 8);
  box-sizing: border-box;
  border-radius: calc(var(--rpx) * 20);
  background: #fa5151;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 34);
  text-align: center;
}
[data-route="pages/detail/detail"] /* ---- v4.86.195 视频动作纠正成品（老师的视频纠正） ---- */
.vc-box {
  margin-bottom: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  background: #eef7ef;
  border: calc(var(--rpx) * 2) solid #cde8d0;
}
[data-route="pages/detail/detail"] .vc-title {
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  color: #1f7a35;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/detail/detail"] .vc-player {
  width: 100%;
  height: calc(var(--rpx) * 400);
  border-radius: calc(var(--rpx) * 12);
  background: #000000;
}
[data-route="pages/detail/detail"] /* v4.86.306（305 自测修复）：302 的「老师的示范视频」卡在 wxml 里用的是
 * vc-box-title / vc-box-player（与 day 页示范卡同名），这里此前只有
 * vc-title / vc-player（195 视频纠正卡），示范卡标题无样式、video 无宽高
 * 约束（默认 300×150px 居中小窗）。补上与 day 页同款两条。 */
.vc-box-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pages/detail/detail"] .vc-box-player {
  width: 100%;
  height: calc(var(--rpx) * 400);
  border-radius: calc(var(--rpx) * 12);
  background: #000000;
}
[data-route="pages/detail/detail"] /* v4.86.571：「我发的动作视频」框三态（加载中 / 点此重试 / 状态行）—— day 页同款 */
.vc-box-wait, [data-route="pages/detail/detail"] .vc-box-retry {
  width: 100%;
  height: calc(var(--rpx) * 400);
  border-radius: calc(var(--rpx) * 12);
  background: #eeeeee;
  color: #666666;
  font-size: calc(var(--rpx) * 24);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/detail/detail"] .vc-box-retry {
  color: #576b95;
}
[data-route="pages/detail/detail"] .vc-box-sub {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pages/detail/detail"] /* ---------------- v4.86.222（木哥 08:2x）：邀请老师点评作业整卡改版 ---------------- */

/* ① 系统推荐键：浅绿底大按钮 + 「荐」标 + 两行说明 */
.rec-btn {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 10);
  background: #e8f7ee;
  border: calc(var(--rpx) * 1) solid #c9ecd7;
}
[data-route="pages/detail/detail"] .rec-btn-hover {
  background: #dcf2e5;
}
[data-route="pages/detail/detail"] .rec-btn-main {
  display: flex;
  align-items: center;
}
[data-route="pages/detail/detail"] .rec-btn-t {
  flex: 1;
  color: #07c160;
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
}
[data-route="pages/detail/detail"] .rec-badge {
  margin-right: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 8);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] .rec-arrow {
  color: #07c160;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/detail/detail"] .rec-btn-sub {
  margin-top: calc(var(--rpx) * 10);
  color: #5b8a6d;
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pages/detail/detail"] /* ② 自主邀请：与原 actions 同一行距，键名改口 */
.invite-actions {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] /* ---- v4.86.240（木哥令）：挑老师的两颗键并成一行 ----
   自主邀请与指定老师属同一类按键，统一成自主邀请那颗的样式（btn-ghost 绿字）；
   两颗等宽成一行（flex 等分），键面文字显示不全走滚动字幕（duo-mq），
   不折行不截断 —— 键面在放「（上次：×老师）」这类长尾巴时照样完整可读。 */
.invite-duo {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] .invite-duo .duo-btn {
  flex: 1;
  min-width: 0;
  margin: 0;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 12);
  line-height: 1.2;
  overflow: hidden;
}
[data-route="pages/detail/detail"] .duo-clip {
  max-width: 100%;
  overflow: hidden;
}
[data-route="pages/detail/detail"] .duo-t {
  display: inline-block;
  white-space: nowrap;
}
[data-route="pages/detail/detail"] .duo-mq {
  padding-left: 100%;
  animation: duo-marquee 9s linear infinite;
}


@keyframes duo-marquee {
  0% {
    transform: translateX(0);
  }

  100% {
    transform: translateX(-100%);
  }
}
[data-route="pages/detail/detail"] /* 指定老师弹层：复用 card-mask / card-sheet 骨架 */
.appoint-sheet {
  display: flex;
  flex-direction: column;
  max-height: 80vh;
}
[data-route="pages/detail/detail"] .appoint-search {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: #f7f7f7;
}
[data-route="pages/detail/detail"] .appoint-input {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
}
[data-route="pages/detail/detail"] .appoint-placeholder {
  color: #999999;
}
[data-route="pages/detail/detail"] .appoint-clear {
  padding: 0 calc(var(--rpx) * 8);
  color: #999999;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/detail/detail"] .appoint-list {
  flex: 1;
  max-height: 46vh;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pages/detail/detail"] .appoint-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 8);

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .appoint-row-hover {
  background: #ececec;
}
[data-route="pages/detail/detail"] .appoint-row-off {
  opacity: 0.45;
}
[data-route="pages/detail/detail"] .appoint-rec-flag {
  margin-right: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 8);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] .appoint-info {
  flex: 1;
}
[data-route="pages/detail/detail"] .appoint-name {
  color: #1a1a1a;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/detail/detail"] .appoint-rec-t {
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 6);
  background: #e8f7ee;
  color: #07c160;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] .appoint-pause {
  margin-left: calc(var(--rpx) * 12);
  color: #fa5151;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] .appoint-meta {
  margin-top: calc(var(--rpx) * 4);
  color: #999999;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/detail/detail"] .appoint-circle {
  width: calc(var(--rpx) * 36);
  height: calc(var(--rpx) * 36);
  border-radius: 50%;
  border: calc(var(--rpx) * 2) solid #dcdcdc;
  box-sizing: border-box;
}
[data-route="pages/detail/detail"] .appoint-circle-on {
  border-color: #07c160;
  background: #07c160;
}
[data-route="pages/detail/detail"] .appoint-empty {
  padding: calc(var(--rpx) * 48) 0;
}
[data-route="pages/detail/detail"] .appoint-foot {
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pages/detail/detail"] .appoint-go-off {
  opacity: 0.45;
}
[data-route="pages/detail/detail"] .appoint-hint {
  margin-top: calc(var(--rpx) * 12);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] /* v4.86.225（木哥 12:0x）：推荐变按键（跟在标题后）+ 推荐原则说明 + 选定老师展示区 */
.invite-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pages/detail/detail"] .rec-pill {
  display: flex;
  align-items: center;
  border: calc(var(--rpx) * 2) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
  background: #f0faf3;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  flex-shrink: 0;
}
[data-route="pages/detail/detail"] .rec-pill-on {
  background: #07c160;
}
[data-route="pages/detail/detail"] .rec-pill-hover {
  opacity: 0.8;
}
[data-route="pages/detail/detail"] .rec-pill-badge {
  font-size: calc(var(--rpx) * 20);
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
  margin-right: calc(var(--rpx) * 10);
}
[data-route="pages/detail/detail"] .rec-pill-t {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/detail/detail"] .rec-pill-on .rec-pill-t {
  color: #ffffff;
}
[data-route="pages/detail/detail"] .rec-rule {
  display: flex;
  align-items: flex-start;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .rec-rule-badge {
  font-size: calc(var(--rpx) * 20);
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
  margin-right: calc(var(--rpx) * 12);
  margin-top: calc(var(--rpx) * 4);
  flex-shrink: 0;
}
[data-route="pages/detail/detail"] .rec-rule-body {
  flex: 1;
  min-width: 0;
}
[data-route="pages/detail/detail"] .rec-rule-t {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  font-weight: 600;
}
[data-route="pages/detail/detail"] .rec-rule-d {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pages/detail/detail"] .invite-empty {
  padding: calc(var(--rpx) * 30) 0 calc(var(--rpx) * 10);
}
[data-route="pages/detail/detail"] /* v4.86.464：老师身份看自己的打卡时，邀请位只剩这一句（不再摆空壳） */
.invite-mentor-only {
  padding: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #999999;
}
[data-route="pages/detail/detail"] .sel-card {
  display: flex;
  align-items: center;
  border: calc(var(--rpx) * 2) solid #bfe8cd;
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  padding: calc(var(--rpx) * 20);
  margin: calc(var(--rpx) * 10) 0 calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] /* v4.86.240（木哥令）：卡内左侧信息区负责「进主页细看」，右侧是就地拍板的「确认」 */
.sel-info {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
}
[data-route="pages/detail/detail"] .sel-card-hover {
  background: #f7f7f7;
}
[data-route="pages/detail/detail"] .sel-confirm {
  flex-shrink: 0;
  margin: 0 0 0 calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 32);
  line-height: 1.2;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pages/detail/detail"] .sel-ava {
  width: calc(var(--rpx) * 88);
  height: calc(var(--rpx) * 88);
  border-radius: 50%;
  margin-right: calc(var(--rpx) * 20);
  flex-shrink: 0;
  background: #f0faf3;
  color: #07c160;
  font-size: calc(var(--rpx) * 32);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/detail/detail"] .sel-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/detail/detail"] .sel-name {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  display: flex;
  align-items: center;
}
[data-route="pages/detail/detail"] .sel-meta {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pages/detail/detail"] .sel-go {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  font-weight: 600;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pages/detail/detail"] /* ---- v4.86.229 木哥令：老师发起的视频示范（确认通知卡 + 示范视频卡） ---- */
.demo-box .demo-chat {
  margin-top: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 76);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/detail/detail"] .demo-notice {
  margin-top: calc(var(--rpx) * 16);
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 10);
  background: #e8f7ee;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
}
[data-route="pages/detail/detail"] .demo-notice-head {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #191919;
  display: flex;
  align-items: center;
}
[data-route="pages/detail/detail"] .demo-notice-badge {
  flex: none;
  font-size: calc(var(--rpx) * 20);
  font-weight: 500;
  color: #07c160;
  border: calc(var(--rpx) * 2) solid #07c160;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pages/detail/detail"] .demo-notice-body {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #888888;
}
[data-route="pages/detail/detail"] .demo-agree {
  margin-top: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 80);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/detail/detail"] .demo-notice-tip {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pages/detail/detail"] /* v4.86.282（木哥令③）：全渠道邀约清单（分享/自主邀请/指定老师一锅端，可单独取消） */
.inv-box {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .inv-title {
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  color: #333333;
}
[data-route="pages/detail/detail"] .inv-li {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/detail/detail"] .inv-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/detail/detail"] .inv-label {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
}
[data-route="pages/detail/detail"] .inv-label.on {
  color: #07c160;
}
[data-route="pages/detail/detail"] .inv-time {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pages/detail/detail"] .inv-cancel {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 24);
  color: #e64340;
  border: calc(var(--rpx) * 1) solid #e64340;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pages/detail/detail"] /* v4.86.336：弹层里的「不再发了」—— 弱化样式，不抢分享主按钮 */
.card-mute {
  color: #999999;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/detail/detail"] .badge-coach {
  color: #0a7d43;
  background: #e5f5ec;
}
[data-route="pages/detail/detail"] /* v4.86.403（A 组派单 · 作业等级四档）：点评里的等级卡。
   四档唯一口径在 utils/grade.js；这里只管样子（金铜系，和会员卡同色）。 */
/* v4.86.420：逐字卡（学生详情页主位）—— 一字一块：字 + 最好~最差 + 均分 + 人话标签 */
.hw-card {
  margin: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 2) solid #e3efe6;
  border-radius: calc(var(--rpx) * 10);
  background: #f8fcf9;
}
[data-route="pages/detail/detail"] .hw-card-sum {
  font-size: calc(var(--rpx) * 24);
  color: #4a7a5c;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/detail/detail"] .hw-card-grid {
  display: flex;
  flex-wrap: wrap;
}
[data-route="pages/detail/detail"] .hw-char {
  width: calc(33.33% - calc(var(--rpx) * 12));
  margin: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 8);
  border: calc(var(--rpx) * 2) solid #dfe9e2;
  border-radius: calc(var(--rpx) * 8);
  background: #ffffff;
  text-align: center;
}
[data-route="pages/detail/detail"] .hw-char-c {
  font-size: calc(var(--rpx) * 40);
  color: #223a2c;
}
[data-route="pages/detail/detail"] .hw-char-n {
  font-size: calc(var(--rpx) * 20);
  color: #5d7a68;
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pages/detail/detail"] .hw-char-l {
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pages/detail/detail"] .hw-char-tag {
  display: inline-block;
  font-size: calc(var(--rpx) * 20);
  color: #a05a2c;
  background: #fdf3e7;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 8);
  margin: calc(var(--rpx) * 2);
}
[data-route="pages/detail/detail"] .grade-card {
  margin: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 2) solid #efe3cf;
  border-radius: calc(var(--rpx) * 10);
  background: #fffdf8;
}
[data-route="pages/detail/detail"] .grade-badge {
  display: flex;
  align-items: baseline;
}
[data-route="pages/detail/detail"] .grade-icon {
  font-size: calc(var(--rpx) * 32);
  margin-right: calc(var(--rpx) * 8);
}
[data-route="pages/detail/detail"] .grade-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #a8792c;
}
[data-route="pages/detail/detail"] .grade-alias {
  margin-left: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #b39058;
}
[data-route="pages/detail/detail"] .grade-score {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  color: #8a7a63;
}
[data-route="pages/detail/detail"] .grade-desc {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #6b5c48;
}
[data-route="pages/detail/detail"] .grade-reason {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #8a7a63;
}
[data-route="pages/detail/detail"] /* v4.86.448：陪练单卡的名字（不借 mw-name-t —— 那是老师点评卡的类名，
 * 借了会让「老师卡头像行被拆」这类判据抓不准） */
.coach-req {
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] .coach-req-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: bold;
  color: #111111;
}
[data-route="pages/detail/detail"] /* v4.86.468：照片三腿全倒时的诊断行（路径原文 / 试过几条），点一下复制 */
.photo-diag {
  display: block;
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 28);
  color: #9a9a9a;
  word-break: break-all;
}
[data-route="pages/detail/detail"] /* v4.86.496 毛笔示范（点评卡内）：小格 + 出处小签 + 一句口径。
   两个格并排是因为「同字多版」在详情页只取第一版，两个格＝两个字；三列会把卡撑高。 */
.brush-demo {
  margin: calc(var(--rpx) * 22) 0 calc(var(--rpx) * 6);
  padding-top: calc(var(--rpx) * 18);
  border-top: calc(var(--rpx) * 1) solid #f0eeea;
}
[data-route="pages/detail/detail"] .brush-demo-title {
  font-size: calc(var(--rpx) * 24);
  color: #7a7268;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/detail/detail"] .brush-demo-row {
  display: flex;
  gap: calc(var(--rpx) * 14);
}
[data-route="pages/detail/detail"] .brush-cell {
  flex: 1;
  min-width: 0;
}
[data-route="pages/detail/detail"] .brush-player {
  width: 100%;
  height: calc(var(--rpx) * 220);
  border-radius: calc(var(--rpx) * 16);
  background: #f6f4f0;
  overflow: hidden;
}
[data-route="pages/detail/detail"] .brush-tag {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #9a938a;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pages/detail/detail"] .brush-note {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #b0a89e;
  line-height: 1.5;
}
[data-route="pages/detail/detail"] /* v4.86.523：付费动作键（视频动作纠正，按颗扣墨宝）统一微信小店风格——
   压掉全局 .btn-primary 的规范绿，改纯色小店橙胶囊；off 态仍是禁用绿不显眼，不动 */
.btn-primary.hw-video {
  background: #ff6146;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pages/detail/detail"] .btn-primary.hw-video.button-hover, [data-route="pages/detail/detail"] .btn-primary.hw-video[disabled].button-hover {
  background: #e84c30;
}
[data-route="pages/detail/detail"] /* v7.0.039（木哥发截图令）：视频动作纠正独立成卡 —— 金卡独占一块、突出重要性 */
.vc-hero {
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 4);
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 26) calc(var(--rpx) * 30);
  border-radius: calc(var(--rpx) * 20);
  background: linear-gradient(180deg, #fffef9 0%, #fdf3e0 100%);
  border: calc(var(--rpx) * 1) solid #eddfbd;
}
[data-route="pages/detail/detail"] .vc-hero-off {
  opacity: 0.55;
}
[data-route="pages/detail/detail"] .vc-hero-head {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #4a3208;
}
[data-route="pages/detail/detail"] .vc-hero-badge {
  margin-right: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 8);
  background: linear-gradient(135deg, #d8b25c 0%, #a8792c 100%);
  color: #fff;
  font-size: calc(var(--rpx) * 20);
  font-weight: 500;
}
[data-route="pages/detail/detail"] .vc-hero-pitch {
  margin: calc(var(--rpx) * 12) 0 calc(var(--rpx) * 22);
  font-size: calc(var(--rpx) * 24);
  color: #7a6a45;
  line-height: 1.5;
}
[data-route="pages/detail/detail"] .vc-hero .hw-video {
  margin-top: 0;
}
[data-route="pages/detail/detail"] /* v7.0.028（木哥五问②③④）：把这个字练一练（老师点评页） ============ */
.practice-box {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] .practice-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #6b7a6e;
}
[data-route="pages/detail/detail"] .practice-tools {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] .practice-tool {
  flex: 1;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 10);
  background: #f4f8f5;
  text-align: center;
}
[data-route="pages/detail/detail"] .practice-tool-hover {
  background: #e9f3ec;
}
[data-route="pages/detail/detail"] .pt-i {
  width: calc(var(--rpx) * 60);
  height: calc(var(--rpx) * 60);
  margin: 0 auto;
  border-radius: 50%;
  background: #e2f2e7;
  font-size: calc(var(--rpx) * 28);
  line-height: calc(var(--rpx) * 60);
  color: #0a7a3d;
  font-weight: 600;
}
[data-route="pages/detail/detail"] .pt-t {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #16301f;
}
[data-route="pages/detail/detail"] .pt-d {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #8b9a91;
}
[data-route="pages/detail/detail"] /* 点评单字叠加图横滑条（A 组 2026-11-01 对接单 §二）：一行横滑，主攻角标在前 */
.review-gallery {
  display: flex;
  margin-top: calc(var(--rpx) * 16);
  white-space: nowrap;
}
[data-route="pages/detail/detail"] .rg-item {
  position: relative;
  display: inline-block;
  width: calc(var(--rpx) * 200);
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pages/detail/detail"] .rg-img {
  width: calc(var(--rpx) * 200);
  height: calc(var(--rpx) * 200);
  border-radius: calc(var(--rpx) * 12);
  background: #f5f2ec;
}
[data-route="pages/detail/detail"] .rg-tag {
  position: absolute;
  top: calc(var(--rpx) * 8);
  left: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 8);
  background: rgba(90, 90, 90, 0.75);
  color: #fff;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/detail/detail"] .rg-tag.rg-hot {
  background: #d9534f;
}
[data-route="pages/detail/detail"] .rg-cell {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #8a7a66;
  text-align: center;
}
[data-route="pages/detail/detail"] /* ===== v7.0.110（木哥 2026-11-01 令）：逐字叠加图条 =====
   点评文字下面一条横滑小图，点开全屏看大图，大小图都能左右滑。
   小图上角标：写得好/要主攻 + 「字 · 第几行第几个」+ 重叠/占格两项（图小，先给最要紧的两个数）；
   全屏图上四项指标全给（重叠、占格、格心偏、大小），与工位出图底栏同一份数。 */
.gal-box {
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 18) 0 calc(var(--rpx) * 14);
  border-top: calc(var(--rpx) * 2) solid #f0e6d8;
}
[data-route="pages/detail/detail"] .gal-head {
  display: flex;
  align-items: baseline;
  padding: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 12);
}
[data-route="pages/detail/detail"] .gal-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #5d4a2f;
}
[data-route="pages/detail/detail"] .gal-count {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #9b8a72;
}
[data-route="pages/detail/detail"] .gal-swiper {
  width: 100%;
  height: calc(var(--rpx) * 310);
  transition: height 0.28s ease;
}
[data-route="pages/detail/detail"] .gal-swiper-on {
  height: calc(var(--rpx) * 620);
}
[data-route="pages/detail/detail"] .gal-card {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  margin: 0 calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 8) calc(var(--rpx) * 6);
  overflow: hidden;
  border-radius: calc(var(--rpx) * 12);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #f0e6d8;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(93, 74, 47, 0.06);
}
[data-route="pages/detail/detail"] .gal-swiper-on .gal-card {
  margin: 0 calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 16) calc(var(--rpx) * 12);
  border-color: #e8dcc8;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 16) rgba(93, 74, 47, 0.10);
}
[data-route="pages/detail/detail"] .gal-card-on {
  border-color: #e4d6bf;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 16) rgba(93, 74, 47, 0.12);
}
[data-route="pages/detail/detail"] .gal-img {
  flex: 1 1 0;
  height: 0;
  width: 100%;
  min-height: 0;
}
[data-route="pages/detail/detail"] .gal-card .gal-cap {
  flex-shrink: 0;
  margin-top: calc(var(--rpx) * 6);
  line-height: calc(var(--rpx) * 30);
  font-size: calc(var(--rpx) * 20);
  color: #8a7a66;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-route="pages/detail/detail"] .gal-swiper-on .gal-card .gal-cap {
  margin-top: calc(var(--rpx) * 10);
  line-height: calc(var(--rpx) * 34);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/detail/detail"] .gal-badge {
  position: absolute;
  top: calc(var(--rpx) * 8);
  left: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 20);
  color: #3f7d52;
  background: rgba(76, 140, 92, 0.10);
  border: calc(var(--rpx) * 1) solid rgba(76, 140, 92, 0.22);
}
[data-route="pages/detail/detail"] .gal-swiper-on .gal-badge {
  top: calc(var(--rpx) * 24);
  left: calc(var(--rpx) * 24);
}
[data-route="pages/detail/detail"] .gal-badge-focus {
  color: #b4544f;
  background: rgba(200, 76, 72, 0.10);
  border-color: rgba(200, 76, 72, 0.22);
}


/* v7.0.162：旧的全屏平铺层样式整组退役 —— 全屏看大图统一走
   components/card-viewer（华为钱包卡片式：两侧露边/远小近大/跟手缩放）。 */


/* ---- components/pay-wall/pay-wall.wxss ---- */
[data-comp="components/pay-wall/pay-wall"] /* 框 C · 开通弹窗（v4.86.540 木哥 2026-10-26 定稿）
 * 整屏软墙 → 居中弹窗；去图标；与 B/E 同一套金壳（深金带 / 金主键 / 文字链退路）。
 * 木哥 2026-10-26 改口：主键是「开通会员」，退路「下周再来」降为文字链（原来相反）。
 * 字号（v4.86.550）：与 gold-dialog 同一张微信弹窗表 ——
 *   带 / 标题 / 主键 / 文字链 = calc(var(--rpx) * 32) ｜ 副题与权益每行 = calc(var(--rpx) * 28) ｜ 勾号 = calc(var(--rpx) * 24) ｜ 注脚 = calc(var(--rpx) * 20)。 */
.pw-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.52);
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/pay-wall/pay-wall"] .pw-dlg {
  width: calc(var(--rpx) * 480);
  border-radius: calc(var(--rpx) * 30);
  overflow: hidden;
  background: linear-gradient(180deg, #fffdf8 0%, #fffaef 58%, #fdf4e2 100%);
  box-shadow: 0 calc(var(--rpx) * 36) calc(var(--rpx) * 100) rgba(80, 55, 10, 0.28), 0 0 0 calc(var(--rpx) * 1) rgba(214, 186, 124, 0.55);
}
[data-comp="components/pay-wall/pay-wall"] .pw-band {
  height: calc(var(--rpx) * 72);
  background: linear-gradient(135deg, #6d4b10, #8d6620 52%, #6a480e);
  color: #ffe9b8;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  letter-spacing: calc(var(--rpx) * 6);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-comp="components/pay-wall/pay-wall"] .pw-bd {
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 30) calc(var(--rpx) * 22);
}
[data-comp="components/pay-wall/pay-wall"] .pw-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 800;
  color: #4a3208;
  text-align: center;
  line-height: 1.45;
}
[data-comp="components/pay-wall/pay-wall"] .pw-sub {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  color: #a1834a;
  text-align: center;
  line-height: 1.6;
}
[data-comp="components/pay-wall/pay-wall"] .pw-keep {
  margin-top: calc(var(--rpx) * 20);
  padding-top: calc(var(--rpx) * 18);
  border-top: calc(var(--rpx) * 1) solid #f0e3c4;
}
[data-comp="components/pay-wall/pay-wall"] .pw-keep-i {
  display: flex;
  align-items: flex-start;
  line-height: 1.85;
}
[data-comp="components/pay-wall/pay-wall"] .pw-ck {
  font-size: calc(var(--rpx) * 24);
  color: #c79733;
  width: calc(var(--rpx) * 24);
  flex: 0 0 calc(var(--rpx) * 24);
}
[data-comp="components/pay-wall/pay-wall"] .pw-kt {
  font-size: calc(var(--rpx) * 28);
  color: #4a3a17;
  flex: 1;
}
[data-comp="components/pay-wall/pay-wall"] .pw-fine {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 20);
  color: #a2937a;
  text-align: center;
  line-height: 1.5;
}
[data-comp="components/pay-wall/pay-wall"] .pw-acts {
  padding: 0 calc(var(--rpx) * 30) calc(var(--rpx) * 26);
}
[data-comp="components/pay-wall/pay-wall"] .pw-primary {
  height: calc(var(--rpx) * 82);
  border-radius: calc(var(--rpx) * 10);
  background: linear-gradient(180deg, #fbeecd 0%, #eed79f 46%, #dcb96a 78%, #cfa64f 100%);
  color: #6b4a12;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  letter-spacing: calc(var(--rpx) * 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: inset 0 calc(var(--rpx) * 1) 0 rgba(255, 255, 255, 0.8), inset 0 0 0 calc(var(--rpx) * 1) rgba(255, 255, 255, 0.5),
    0 calc(var(--rpx) * 8) calc(var(--rpx) * 24) rgba(150, 105, 25, 0.2);
}
[data-comp="components/pay-wall/pay-wall"] .pw-primary-hover {
  opacity: 0.92;
}
[data-comp="components/pay-wall/pay-wall"] .pw-link {
  margin-top: calc(var(--rpx) * 12);
  height: calc(var(--rpx) * 64);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 32);
  color: #8a7340;
}



/* ---- pages/mine/mine.wxss ---- */
[data-route="pages/mine/mine"] /* ==================================================================
 * 「我的」页 · 微信生态皮肤（v4.70.0）
 * 只换皮：白分组块 + 发丝线 + 灰箭头，去掉渐变/阴影/虚线/药丸。
 * 分组顺序、功能位置、字段一概不动。
 * ================================================================== */

.login-btn {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/mine/mine"] /* ---- ① 身份 hero：微信"我"页的白块 ---- */
.hero {
  position: relative;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 32) calc(var(--rpx) * 26);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/mine/mine"] .hero-gear {
  position: absolute;
  top: calc(var(--rpx) * 20);
  right: calc(var(--rpx) * 24);
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #f7f7f7;
  font-size: calc(var(--rpx) * 32);
  color: #888888;
}
[data-route="pages/mine/mine"] /* v7.0.074（木哥令）：齿轮位不再用 ⚙ 字符，换意见反馈原来的那张真图（gear.png） */
.hero-gear-img {
  width: calc(var(--rpx) * 36);
  height: calc(var(--rpx) * 36);
}
[data-route="pages/mine/mine"] .hero-gear-icon {
  font-size: calc(var(--rpx) * 40);
  line-height: 1;
}
[data-route="pages/mine/mine"] .hero-top {
  display: flex;
  align-items: center;
  padding-right: calc(var(--rpx) * 60);
}
[data-route="pages/mine/mine"] /* 头像这一坨包一层：头像 calc(var(--rpx) * 112) 的圆，右下角挂**勋章角标**（v4.86.478）。
   原先这里是换头像的小笔（✎），木哥令把位置让给勋章/荣誉章 ——
   换头像收到「设置 → 头像」那一行去，这里有更值得露的东西。 */
.hero-avatar-wrap {
  position: relative;
  width: calc(var(--rpx) * 112);
  height: calc(var(--rpx) * 112);
  flex-shrink: 0;
}
[data-route="pages/mine/mine"] /* 角标：白底金圈，里头是已点亮勋章里最靠后的那枚（越靠后越高档）；
   一枚都还没点亮时显示灰的奖牌，点进去看怎么点亮 —— 不做成「什么都没有」。 */
.hero-avatar-badge {
  position: absolute;
  right: calc(var(--rpx) * -6);
  bottom: calc(var(--rpx) * -6);
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  border-radius: 50%;
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #f3d19e;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 40);
  text-align: center;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 6) rgba(0, 0, 0, 0.12);
}
[data-route="pages/mine/mine"] .hero-avatar-badge-empty {
  border-color: #e6e6e6;
  filter: grayscale(1);
  opacity: 0.7;
}
[data-route="pages/mine/mine"] .hero-avatar {
  width: calc(var(--rpx) * 112);
  height: calc(var(--rpx) * 112);
  border-radius: 50%;
  flex-shrink: 0;
}
[data-route="pages/mine/mine"] .hero-avatar-text {
  background: #e8f7ee;
  color: #07c160;
  font-size: calc(var(--rpx) * 48);
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}
[data-route="pages/mine/mine"] .hero-main {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 24);
}
[data-route="pages/mine/mine"] /* v4.86.266（木哥令）：名字行 = 名字（最多 6 字）+ 积分胶囊。
   胶囊在名字行右侧、小齿轮左边（齿轮绝对定位在卡片右上，hero-top 的
   padding-right: calc(var(--rpx) * 60) 已经让开它，所以这里只跟名字抢宽度）。 */
.hero-name-row {
  display: flex;
  align-items: center;
}
[data-route="pages/mine/mine"] .hero-name {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #191919;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pages/mine/mine"] .hero-score {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  display: flex;
  align-items: baseline;
  gap: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: #fbf3dd;
  border: calc(var(--rpx) * 1) solid rgba(217, 168, 58, 0.35);
}
[data-route="pages/mine/mine"] .hs-num {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #a8791b;
}
[data-route="pages/mine/mine"] .hs-unit {
  font-size: calc(var(--rpx) * 20);
  color: #a8791b;
  opacity: 0.8;
}
[data-route="pages/mine/mine"] .hero-lv-row {
  display: flex;
  align-items: baseline;
  margin-top: calc(var(--rpx) * 10);
}
[data-route="pages/mine/mine"] .hero-lv {
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 14);
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pages/mine/mine"] .hero-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/mine/mine"] .hero-days {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin-left: calc(var(--rpx) * 12);
}
[data-route="pages/mine/mine"] /* 升级进度条：扁平，无内阴影 */
.hero-progress {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/mine/mine"] .hero-bar {
  flex: 1;
  height: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: #f2f2f2;
  overflow: hidden;
}
[data-route="pages/mine/mine"] .hero-bar-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  transition: width 0.3s;
}
[data-route="pages/mine/mine"] .hero-bar-num {
  margin-left: calc(var(--rpx) * 14);
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #07c160;
}
[data-route="pages/mine/mine"] .hero-bar-tip {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/mine/mine"] /* 四格统计：黑数字（微信不拿彩色填数字），灰标签，实线分隔 */
/* v4.86.66：.hero-stats/.hero-stat*（打卡四数值）随数值一起挪去打卡页（index 的 .checkin-stats） */

.main-btn {
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/mine/mine"] /* 卡标题右侧的「去看看 ›」链接（好友通讯录等；v4.86.64 财富卡撤后这仍是通用样式） */
.link {
  color: #576b95;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/mine/mine"] /* ---- 互动次数 ---- */
.interact-block {
  margin-top: calc(var(--rpx) * 18);
  padding-top: calc(var(--rpx) * 16);
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/mine/mine"] .interact-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
}
[data-route="pages/mine/mine"] .interact-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/mine/mine"] .interact-sub {
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pages/mine/mine"] .interact-row {
  display: flex;
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pages/mine/mine"] .interact-cell {
  flex: 1;
  margin: 0 calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 14) 0 calc(var(--rpx) * 12);
  text-align: center;
  border-radius: calc(var(--rpx) * 12);
  background: #f7f7f7;
}
[data-route="pages/mine/mine"] .interact-cell:first-child {
  margin-left: 0;
}
[data-route="pages/mine/mine"] .interact-cell:last-child {
  margin-right: 0;
}
[data-route="pages/mine/mine"] .interact-on {
  background: #e8f7ee;
}
[data-route="pages/mine/mine"] .interact-off {
  opacity: 0.55;
}
[data-route="pages/mine/mine"] .ic-icon {
  font-size: calc(var(--rpx) * 32);
  line-height: 1;
}
[data-route="pages/mine/mine"] .ic-num {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
  line-height: 1.2;
}
[data-route="pages/mine/mine"] .ic-unit {
  margin-left: calc(var(--rpx) * 2);
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
  color: #b2b2b2;
}
[data-route="pages/mine/mine"] .ic-name {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/mine/mine"] .interact-tip {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pages/mine/mine"] /* ---- ③ 我的猫 ---- */
.cat-card {
  display: flex;
  align-items: center;
}
[data-route="pages/mine/mine"] .cat-face {
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  margin-right: calc(var(--rpx) * 20);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/mine/mine"] /* 常态是单线绿猫 logo，刺刺毛时仍是 😾（状态不能丢） */
.cat-face-img {
  width: 100%;
  height: 100%;
  display: block;
}
[data-route="pages/mine/mine"] .cat-face-sad {
  font-size: calc(var(--rpx) * 52);
  line-height: 1;
}
[data-route="pages/mine/mine"] .cat-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/mine/mine"] .cat-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/mine/mine"] .cat-tag {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  background: #e8f7ee;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  margin-left: calc(var(--rpx) * 12);
}
[data-route="pages/mine/mine"] .cat-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/mine/mine"] /* 刺刺毛：卡片整体转红调，扁平 */
.cat-card-sad {
  background: #feeceb;
}
[data-route="pages/mine/mine"] .cat-tag-sad {
  color: #ffffff;
  background: #fa5151;
}
[data-route="pages/mine/mine"] /* 微信灰箭头 */
.cat-arrow {
  font-size: calc(var(--rpx) * 40);
  font-weight: 300;
  line-height: 1;
  color: #c8c8cd;
}
[data-route="pages/mine/mine"] /* ---- ④ 勋章墙 ---- */
.medal-grid {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 16);
}
[data-route="pages/mine/mine"] .medal {
  width: calc(var(--rpx) * 190);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 6) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 12);
  text-align: center;
  box-sizing: border-box;
}
[data-route="pages/mine/mine"] .medal-got {
  background: #f7f7f7;
}
[data-route="pages/mine/mine"] .medal-lock {
  background: #f7f7f7;
  opacity: 0.55;
}
[data-route="pages/mine/mine"] .medal-icon {
  font-size: calc(var(--rpx) * 48);
  line-height: 1.1;
}
[data-route="pages/mine/mine"] .medal-name {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/mine/mine"] .medal-hint {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  line-height: 1.4;
}
[data-route="pages/mine/mine"] .medal-got .medal-hint {
  color: #07c160;
}
[data-route="pages/mine/mine"] /* ---- ⑤ 战力榜（v4.85 榜单方案 A；v4.86.60 木哥：只铺冠军，其余折叠） ---- */
.board-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/mine/mine"] /* 冠军行（木哥：战力榜只展示冠军）—— 金色高亮，一眼看到第一名 */
.board-champ {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  background: #fff8e6;
  border: calc(var(--rpx) * 2) solid #f2d79b;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/mine/mine"] /* 名次徽标：1 冠军 / 2 亚军 / 3 季军 / 其余就是数字 */
.board-medal {
  flex-shrink: 0;
  width: calc(var(--rpx) * 76);
  margin-right: calc(var(--rpx) * 14);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pages/mine/mine"] .board-medal-1 {
  color: #b06a00;
  font-weight: 600;
}
[data-route="pages/mine/mine"] .board-medal-top {
  color: #07c160;
  font-weight: 600;
}
[data-route="pages/mine/mine"] .board-name {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pages/mine/mine"] /* 战力称号（墨童/墨士/…）：小标签，跟在名字后面 */
.board-title {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  background: #e9f8ef;
  color: #0a7a3d;
  font-size: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pages/mine/mine"] .board-total {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/mine/mine"] .board-tip {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/mine/mine"] /* 「展开其余 N 名 / 收起」（v4.86.60）—— 默认只铺冠军，点这里看全部名次 */
.board-fold {
  margin-top: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 12) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/mine/mine"] .board-fold:active {
  opacity: 0.6;
}
[data-route="pages/mine/mine"] /* ---- ⑥ 常用功能（v4.86.60 木哥：「变成二行然后左右活动的多页」） ----
   每页 2 行 × 4 列（一页 8 格），左右滑动翻页；16 格正好两页。
   ⚠️ swiper **必须给死高度**，不给就是 0 高、整块看不见（这里就是最容易踩的坑）：
      一行 ≈ 上下留白 20+20 + 底片 92 + 名字上边距 10 + 名字行高 ~29 = calc(var(--rpx) * 171)；
      两行 ≈ calc(var(--rpx) * 342)，再给底部那排小圆点留出位置 → calc(var(--rpx) * 380)。 */
.fn-swiper {
  height: calc(var(--rpx) * 380);
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pages/mine/mine"] .fn-page {
  display: flex;
  flex-wrap: wrap;
}
[data-route="pages/mine/mine"] .fn {
  width: 25%;
  padding: calc(var(--rpx) * 20) 0;
  text-align: center;
  box-sizing: border-box;
}
[data-route="pages/mine/mine"] .fn:active {
  opacity: 0.6;
}
[data-route="pages/mine/mine"] /* 养猫格：右上角小红点 */
.fn-rel {
  position: relative;
}
[data-route="pages/mine/mine"] .fn-dot {
  position: absolute;
  top: calc(var(--rpx) * 12);
  right: 50%;
  margin-right: calc(var(--rpx) * -42);
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 16);
  border-radius: 50%;
  background: #fa5151;
}
[data-route="pages/mine/mine"] /* v4.86.65（木哥）：未读数字角标 —— 取代各入口原来的小红点：
   所有未读提醒直接标注具体数，>99 折 99+（口径在 utils/unread-badge.js）。
   位置与 .fn-dot 同一挂点（fn-rel 相对定位），宽度按内容自适应。 */
.fn-badge {
  position: absolute;
  top: calc(var(--rpx) * 6);
  right: 50%;
  margin-right: calc(var(--rpx) * -56);
  min-width: calc(var(--rpx) * 28);
  height: calc(var(--rpx) * 30);
  padding: 0 calc(var(--rpx) * 8);
  box-sizing: border-box;
  border-radius: calc(var(--rpx) * 16);
  background: #fa5151;
  color: #fff;
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 30);
  text-align: center;
  font-weight: 600;
}
[data-route="pages/mine/mine"] /* v4.86.395（木哥令）：查字格「推荐」标 —— 角标挂在 fn-rel 右上（与 .fn-badge 同挂点），
   不占格子位，版式仍 2×4。
   v4.86.436（木哥令：「颜色不对，不醒目；苹果手机还显示不全」）两处都改：
   ① 配色 —— 原来是品牌绿 #07c160 底白字，压在白卡 + 浅绿底片上跟周围的绿糊成一片，
      等于没标。改成暖橙 #ff6a00 实心 + 白字 + 白描边：这是全站唯一一支暖橙，
      跟绿色（品牌/主按钮）、红色（未读角标 #fa5151）都分得开，一眼就能找到。
   ② 位置 —— 原来 top:calc(var(--rpx) * -8)，第一行那格的角标正好顶到 swiper 的裁剪框**外面**，
      iOS 严格裁（安卓有时能漏出来）⇒ 木哥看到的「显示不全 / 缺半个字」。
      现在收回格内 top:calc(var(--rpx) * 4)，压在图标底片右上角，任何机型都不会被裁。
   ③ 尺寸 —— 高度给死 calc(var(--rpx) * 30)（含 calc(var(--rpx) * 2) 白描边，border-box），行高 calc(var(--rpx) * 30)，
      calc(var(--rpx) * 20) 的字在里面有 calc(var(--rpx) * 2) 上下余量，不再挤到边。 */
.fn-rec {
  position: absolute;
  top: calc(var(--rpx) * 4);
  right: 50%;
  margin-right: calc(var(--rpx) * -52);
  height: calc(var(--rpx) * 30);
  padding: 0 calc(var(--rpx) * 10);
  box-sizing: border-box;
  border: calc(var(--rpx) * 2) solid #ffffff;
  border-radius: calc(var(--rpx) * 999);
  background: #ff6a00;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(255, 106, 0, 0.3);
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 26);
  text-align: center;
  font-weight: 600;
}
[data-route="pages/mine/mine"] /* v4.86.436（木哥令）：查字整格上暖底 —— 角标是「点一下才发现」，底色是「扫一眼就看到」。
   只作用于 .fn-hot 这一格（图标底片 #e8f7ee → 暖砂 #fff0e0，名字 #191919 → 砖红 #d9480f），
   其余 15 格保持原样，版式（calc(var(--rpx) * 92) 底片 / 2×4 / 一页 8 格）一格不动。 */
.fn-hot .fn-icon {
  background: #fff0e0;
  box-shadow: 0 0 0 calc(var(--rpx) * 2) rgba(255, 106, 0, 0.18);
}
[data-route="pages/mine/mine"] .fn-hot .fn-name {
  color: #d9480f;
  font-weight: 600;
}
[data-route="pages/mine/mine"] /* 「猫咪乐园 ›」链接前的小红点 */
.link-dot {
  display: flex;
  align-items: center;
}
[data-route="pages/mine/mine"] .link-dot-mark {
  width: calc(var(--rpx) * 14);
  height: calc(var(--rpx) * 14);
  border-radius: 50%;
  background: #fa5151;
  margin-right: calc(var(--rpx) * 8);
}
[data-route="pages/mine/mine"] /* v4.86.65：好友通讯录标题行的未读数字（= 全部好友聊天未读之和），样式与 friends 页行尾角标同款 */
.link-badge {
  min-width: calc(var(--rpx) * 28);
  height: calc(var(--rpx) * 30);
  padding: 0 calc(var(--rpx) * 8);
  box-sizing: border-box;
  border-radius: calc(var(--rpx) * 16);
  background: #fa5151;
  color: #fff;
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 30);
  text-align: center;
  font-weight: 600;
  margin-right: calc(var(--rpx) * 8);
}
[data-route="pages/mine/mine"] /* 图标底片：46px（calc(var(--rpx) * 92)）圆角方块 + 浅绿，微信「服务」页同款做法；
   图标本体 29px —— PNG 画布里图形占 83.2/132，所以铺满 calc(var(--rpx) * 92) 正好 */
.fn-icon {
  width: calc(var(--rpx) * 92);
  height: calc(var(--rpx) * 92);
  margin: 0 auto;
  border-radius: calc(var(--rpx) * 26);
  background: #e8f7ee;
  overflow: hidden;
}
[data-route="pages/mine/mine"] .fn-glyph {
  display: block;
  width: 100%;
  height: 100%;
}
[data-route="pages/mine/mine"] .fn-name {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #191919;
}
[data-route="pages/mine/mine"] /* 网格里的分享按钮：抹掉 button 默认外观 */
.fn-btn {
  background: transparent;
  border: none;
  line-height: normal;
  font-size: inherit;
  padding: calc(var(--rpx) * 20) 0;
  margin: 0;
  border-radius: 0;
}
[data-route="pages/mine/mine"] .fn-btn::after {
  border: none;
}
[data-route="pages/mine/mine"] .fn-tip {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/mine/mine"] /* ---- ⑥½ 常态入口底版（v4.86 / 2026-10-10 木哥）
   视觉效果：不占常用功能格子，也不受说话页那两张卡的 dismiss 影响。
   ★ v4.86.57（木哥）：「把「墨灵猫」加到微信」那条入口从「我的」页撤了，但这套类名留着 ——
     下面 .mentor-row（加老师微信）的版式就是复用它（class="kefu-row mentor-row"）。
     别再当它是「客服专用样式」而顺手清理：删了 mentor-row 会散架。
   视觉按「绿底卡」规范：浅绿底 + 绿描边 + 深绿标题（mentor-row 另外覆写成橙色）。 */
.kefu-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24);
  background: #e9f8ef;
  border: calc(var(--rpx) * 2) solid #a6e0be;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/mine/mine"] /* v7.0.061（木哥令）：新手引导重看一行 —— 与客服行同款，但不叫 kefu-row
   （我的页只留 mentor-row 那一条客服入口，test-mine-mentor-qr 明令） */
.guide-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24);
  background: #f4f7ff;
  border: calc(var(--rpx) * 2) solid #c8d8f5;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/mine/mine"] .kefu-ico {
  width: calc(var(--rpx) * 40);
  height: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 14);
  flex-shrink: 0;
}
[data-route="pages/mine/mine"] .kefu-t {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #0a7a3d;
  font-weight: 600;
}
[data-route="pages/mine/mine"] .kefu-x {
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
}
[data-route="pages/mine/mine"] /* ---- ⑦ 关于 ---- */
.about {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/mine/mine"] .model-note {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/mine/mine"] /* 合规入口：微信蓝，不加下划线 */
.link {
  color: #576b95;
  text-decoration: none;
}
[data-route="pages/mine/mine"] /* 退出登录：微信式白底红字整块按钮 */
.signout {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 26) 0;
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 32);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/mine/mine"] .signout:active {
  background: #ececec;
}
[data-route="pages/mine/mine"] .err {
  margin-top: calc(var(--rpx) * 24);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/mine/mine"] /* ---- 勋章条（头像下方，点进「我的勋章」页） ---- */
.hero-medal-bar {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 22);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 12);
  background: #f7f7f7;
}
[data-route="pages/mine/mine"] .hmb-label {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/mine/mine"] .hmb-list {
  flex: 1;
  display: flex;
  align-items: center;
  margin-left: calc(var(--rpx) * 14);
  overflow: hidden;
}
[data-route="pages/mine/mine"] .hmb-item {
  font-size: calc(var(--rpx) * 32);
  margin-right: calc(var(--rpx) * 6);
}
[data-route="pages/mine/mine"] .hmb-empty {
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pages/mine/mine"] .hmb-more {
  margin-left: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/mine/mine"] .hmb-count {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #07c160;
}
[data-route="pages/mine/mine"] .hmb-go {
  margin-left: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 40);
  font-weight: 300;
  line-height: 1;
  color: #c8c8cd;
}
[data-route="pages/mine/mine"] /* v4.69.2：离屏画布收进屏内。
   原来用 position:fixed + left:-9999px 藏到屏幕外，iOS 会把这种负偏移的 fixed
   盒子算进页面可滚动宽度 —— 整页因此能被左右拖（「我的」页晃、打卡/记录页没有
   这块画布所以不晃）。现在锚在屏内左上、缩到 1px、透明、不挡点击。
   画布出图只认 canvas.width/height（share-card.js / detail.js 都是这么写的），
   CSS 尺寸只影响显示，改小不影响分享图质量。 */
.share-canvas {
  position: fixed;
  left: 0;
  top: 0;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
  z-index: -1;
}
[data-route="pages/mine/mine"] /* ---- ④ 好友通讯录 ---- */
.fr-note {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
}
[data-route="pages/mine/mine"] .fr-peek {
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(var(--rpx) * 16);
  gap: calc(var(--rpx) * 20) 0;
}
[data-route="pages/mine/mine"] .fr-peek-item {
  width: 25%;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0 calc(var(--rpx) * 6);
}
[data-route="pages/mine/mine"] .fr-peek-avatar {
  width: calc(var(--rpx) * 88);
  height: calc(var(--rpx) * 88);
  border-radius: 50%;
  background: #f2f2f2;
}
[data-route="pages/mine/mine"] .fr-peek-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #e8f7ee;
  color: #07c160;
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
}
[data-route="pages/mine/mine"] .fr-peek-name {
  margin-top: calc(var(--rpx) * 8);
  max-width: 100%;
  font-size: calc(var(--rpx) * 24);
  color: #191919;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pages/mine/mine"] .fr-peek-badge {
  margin-top: calc(var(--rpx) * 2);
  font-size: calc(var(--rpx) * 20);
  color: #07c160;
  background: #e8f7ee;
  border-radius: calc(var(--rpx) * 4);
  padding: 0 calc(var(--rpx) * 8);
}
[data-route="pages/mine/mine"] .fr-peek-empty-tip {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/mine/mine"] /* ========= 练字好物（v4.86.398 木哥令「5个商品直接移到商城」）=========
   微信小店商品卡下线后，这里只剩两条 .cell（商城直购 + 收货地址），
   全部用全局样式，本段不再有自己的选择器。 */

/* 页脚：合规入口与版本（居中小灰字，v4.74.5 从「关于点评」卡里挪出来） */
.page-foot {
  margin-top: calc(var(--rpx) * 32);
  padding: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 48);
  text-align: center;
}
[data-route="pages/mine/mine"] .pf-link {
  font-size: calc(var(--rpx) * 24);
  color: #576b95;
}
[data-route="pages/mine/mine"] .pf-line {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #b2b2b2;
}
[data-route="pages/mine/mine"] /* v4.74.20：我的猫卡绿底，视觉突出 */
.cat-card-green {
  background: #e9f8ef;
  border: calc(var(--rpx) * 1) solid rgba(7, 193, 96, 0.22);
}
[data-route="pages/mine/mine"] /* v4.83.2：邀请提醒入口（微信服务通知订阅）的小链接 */
/* ========= v4.86.49：加老师微信（企业微信一对一入口 + 二维码弹层） ========= */
/* v4.86.57：我的页只剩这一条私域入口（客服会话那条已按木哥要求撤掉）——
   底版仍是 kefu-row（复用 .kefu-row/.kefu-ico/.kefu-t/.kefu-x），色系换成橙，
   和别处（说话页/银行页）的客服会话入口区分开。 */
.mentor-row {
  background: #fff4e8;
  border-color: #f5cb9c;
}
[data-route="pages/mine/mine"] .mentor-row .kefu-x {
  color: #e08a2e;
}
[data-route="pages/mine/mine"] .qr-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
  background: rgba(0, 0, 0, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(var(--rpx) * 40);
}
[data-route="pages/mine/mine"] .qr-box {
  width: 100%;
  max-width: calc(var(--rpx) * 560);
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(var(--rpx) * 28);
  background: #fff;
  border-radius: calc(var(--rpx) * 24);
  display: flex;
  flex-direction: column;
  align-items: center;
}
[data-route="pages/mine/mine"] .qr-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #2b2b2b;
}
[data-route="pages/mine/mine"] .qr-img {
  width: calc(var(--rpx) * 400);
  height: calc(var(--rpx) * 400);
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 16);
  background: #f6f6f6;
}
[data-route="pages/mine/mine"] .qr-tip {
  font-size: calc(var(--rpx) * 28);
  color: #e08a2e;
  font-weight: 500;
}
[data-route="pages/mine/mine"] .qr-note {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #8a8a8a;
}
[data-route="pages/mine/mine"] .qr-btn {
  margin-top: calc(var(--rpx) * 28);
  width: 100%;
}
[data-route="pages/mine/mine"] /* ============================================================
 * v4.86.441（A 组 r254 B1）· 一周一封信：「本周的信还没看」那一行
 * ------------------------------------------------------------
 * 只有未读时才出现（wx:if），所以样式里不做隐藏 —— 消失靠 state，不靠 CSS。
 * ============================================================ */
.letter-line {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pages/mine/mine"] .letter-line-main {
  display: flex;
  align-items: center;
}
[data-route="pages/mine/mine"] .letter-line-ico {
  font-size: calc(var(--rpx) * 32);
  color: #07c160;
  margin-right: calc(var(--rpx) * 12);
  line-height: 1;
}
[data-route="pages/mine/mine"] .letter-line-txt {
  font-size: calc(var(--rpx) * 32);
  color: #191919;
}
[data-route="pages/mine/mine"] .letter-line-arrow {
  font-size: calc(var(--rpx) * 32);
  color: #c8c8c8;
  line-height: 1;
}



/* ---- pages/wallet/wallet.wxss ---- */
[data-route="pages/wallet/wallet"] .login-btn {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/wallet/wallet"] /* ---- ① 我的财富（v4.86.64：从 pages/mine 搬来，样式同款） ---- */

/* 右上角「猫咪乐园 ›」链接
 * v4.86.481（木哥 2026-10-24）：「把财富页面和充值页面的 ui 都设计成这个金色风格」
 * —— 本页主色一律换成金铜系（与 components/pay-pop 同一套色）：
 *   主金 #a8792c / 亮金 #d8b25c / 底 #fdf8ec / 边 #c9a15c / 深棕字 #6b4d14
 * 原来这里是微信蓝、数字是品牌绿，与「财富」这件事不是一套语言。 */
.link {
  color: #a8792c;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/wallet/wallet"] /* 「猫咪乐园 ›」链接前的小红点 */
.link-dot {
  display: flex;
  align-items: center;
}
[data-route="pages/wallet/wallet"] .link-dot-mark {
  width: calc(var(--rpx) * 14);
  height: calc(var(--rpx) * 14);
  border-radius: 50%;
  background: #fa5151;
  margin-right: calc(var(--rpx) * 8);
}
[data-route="pages/wallet/wallet"] .wh-tag {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
  color: #ffffff;
  background: #a8792c;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
}
[data-route="pages/wallet/wallet"] .wealth-row {
  display: flex;
  margin-top: calc(var(--rpx) * 18);
  padding-top: calc(var(--rpx) * 18);
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/wallet/wallet"] /* 一行 5 个数字：灵力 / 猫粮 / 梳毛 / 洗澡 / 铲屎 */
.wealth-item {
  position: relative;
  flex: 1;
  min-width: 0;
  text-align: center;
  padding: calc(var(--rpx) * 8) 0;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pages/wallet/wallet"] /* 右上角小红点 */
.wi-dot {
  position: absolute;
  top: calc(var(--rpx) * 2);
  right: 50%;
  margin-right: calc(var(--rpx) * -44);
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 16);
  border-radius: 50%;
  background: #fa5151;
}
[data-route="pages/wallet/wallet"] .wealth-item:active {
  background: #f7f7f7;
}
[data-route="pages/wallet/wallet"] .wi-num {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
  line-height: 1.2;
  white-space: nowrap;
}
[data-route="pages/wallet/wallet"] .wi-max {
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
  color: #b2b2b2;
}
[data-route="pages/wallet/wallet"] .wi-label {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
  white-space: nowrap;
}
[data-route="pages/wallet/wallet"] .res-tip {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pages/wallet/wallet"] /* 小字说明折叠（原「我的」页 v4.74.20 同款：两字按钮在左边） */
.tip-fold-row {
  display: flex;
  align-items: flex-start;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/wallet/wallet"] .tip-fold-toggle {
  flex-shrink: 0;
  margin-right: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 22);
  border: calc(var(--rpx) * 1) solid rgba(217, 182, 74, 0.55);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(217, 182, 74, 0.12);
  font-size: calc(var(--rpx) * 20);
  color: #fa9d3b;
  line-height: 1.4;
}
[data-route="pages/wallet/wallet"] .tip-fold-toggle-hover {
  background: rgba(217, 182, 74, 0.28);
}
[data-route="pages/wallet/wallet"] .tip-fold-row .res-tip {
  flex: 1;
  margin-top: 0;
}
[data-route="pages/wallet/wallet"] /* 墨宝卡片：白底 + 一层极淡金雾（金铜系，金额用主金强调） */
.wallet-card {
  background: linear-gradient(180deg, #fffdf6, #ffffff calc(var(--rpx) * 240));
  border: calc(var(--rpx) * 2) solid #f0e6d2;
}
[data-route="pages/wallet/wallet"] .wallet-card .muted {
  color: #888888;
}
[data-route="pages/wallet/wallet"] .balance {
  margin: calc(var(--rpx) * 18) 0 calc(var(--rpx) * 10);
  display: flex;
  align-items: baseline;
}
[data-route="pages/wallet/wallet"] .balance-num {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  line-height: 1.1;
  color: #a8792c;
}
[data-route="pages/wallet/wallet"] .balance-unit {
  font-size: calc(var(--rpx) * 28);
  margin-left: calc(var(--rpx) * 12);
  color: #888888;
}
[data-route="pages/wallet/wallet"] .wallet-line {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/wallet/wallet"] .rule {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  padding: calc(var(--rpx) * 10) 0;
}
[data-route="pages/wallet/wallet"] .err {
  margin-top: calc(var(--rpx) * 20);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/wallet/wallet"] /* v4.86.506（木哥 07:52 令）：一行左右滑动，不许折行 */
.pack-row {
  white-space: nowrap;
  margin-top: calc(var(--rpx) * 22);
}
[data-route="pages/wallet/wallet"] .pack {
  display: inline-block;
  vertical-align: top;
  width: calc(var(--rpx) * 150);
  margin-right: calc(var(--rpx) * 18);
  text-align: center;
  padding: calc(var(--rpx) * 24) 0;
  border-radius: calc(var(--rpx) * 10);
  /* v4.86.523：充值面额片随收费键统一微信小店橙（原金皮） */
  background: #fffdf8;
  border: calc(var(--rpx) * 2) solid #ffd9d1;
}
[data-route="pages/wallet/wallet"] .pack-num {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #ff6146;
}
[data-route="pages/wallet/wallet"] .pack-price {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #e88a76;
}
[data-route="pages/wallet/wallet"] .pack-busy {
  opacity: 0.55;
}
[data-route="pages/wallet/wallet"] .cost-tip {
  margin-top: calc(var(--rpx) * 18);
}
[data-route="pages/wallet/wallet"] /* ---- 攒墨宝换好礼（v4.5） ---- */

.prize {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: #f7f7f7;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/wallet/wallet"] .prize-busy {
  opacity: 0.55;
}
[data-route="pages/wallet/wallet"] /* v4.86.454：兑换行是「左名右价」的 flex（.prize 用 space-between），中间的 .prize-main
 * 一直没写样式。奖品名一长，右侧「N 积分 / 去兑换」就被顶出卡片外或挤成两行 —— 补 flex:1
 * 让它吃满中间，min-width:0 让长名字老实换行而不是撑破。 */
.prize-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/wallet/wallet"] .prize-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/wallet/wallet"] .prize-desc {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/wallet/wallet"] .prize-cost {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  text-align: center;
  color: #a8792c;
  font-weight: 500;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.5;
}
[data-route="pages/wallet/wallet"] .redeem-list {
  margin-top: calc(var(--rpx) * 18);
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/wallet/wallet"] .redeem-row {
  display: flex;
  justify-content: space-between;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 4) 0;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/wallet/wallet"] .redeem-name {
  color: #191919;
}
[data-route="pages/wallet/wallet"] /* ==================================================================
 * v4.86.266 · 积分（平台第二本财富账）+ 墨宝弹层
 * 卡内分行一律灰底圆角单元格（#f7f7f7 / calc(var(--rpx) * 10) / padding calc(var(--rpx) * 20) / 块距 calc(var(--rpx) * 16)），
 * 见 docs/UI工作规范-卡片内分行.md —— 这里不出现任何细线分行。
 * ================================================================== */

/* 墨宝数值旁边的「充值 / 提现 ›」：给不知道数字能点的家长一条明路 */
.balance-more {
  margin-left: auto;
  align-self: center;
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 24);
  color: #a8792c;
}
[data-route="pages/wallet/wallet"] .point-num {
  color: #a8792c;
}
[data-route="pages/wallet/wallet"] /* 积分卡：标题行右侧的「明细 · 全部方式 ›」沿用 .link */
.pt-sec {
  margin: calc(var(--rpx) * 22) 0 calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #888888;
}
[data-route="pages/wallet/wallet"] .pt-item {
  display: flex;
  align-items: center;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 20);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/wallet/wallet"] .pt-ico {
  flex-shrink: 0;
  width: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 20);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  line-height: 1.2;
  color: #d9a83a;
  font-weight: 600;
}
[data-route="pages/wallet/wallet"] .pt-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/wallet/wallet"] .pt-n {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  font-weight: 500;
}
[data-route="pages/wallet/wallet"] .pt-v {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
  color: #d9a83a;
  background: #fbf3dd;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
}
[data-route="pages/wallet/wallet"] .pt-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.5;
}
[data-route="pages/wallet/wallet"] .pt-act {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  border: calc(var(--rpx) * 1) solid rgba(201, 161, 92, 0.55);
  background: rgba(216, 178, 92, 0.12);
  font-size: calc(var(--rpx) * 20);
  color: #a8792c;
  white-space: nowrap;
}
[data-route="pages/wallet/wallet"] .pt-act:active {
  background: rgba(216, 178, 92, 0.3);
}
[data-route="pages/wallet/wallet"] /* ---------------- 底部弹层（充值 / 提现 · 换积分） ---------------- */

.sheet-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 900;
  display: flex;
  align-items: flex-end;
}
[data-route="pages/wallet/wallet"] .sheet {
  width: 100%;
  box-sizing: border-box;
  background: #fffdf6;
  border-radius: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0 0;
  border-top: calc(var(--rpx) * 4) solid #d8b25c;
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 32) calc(calc(var(--rpx) * 28) + env(safe-area-inset-bottom));
  max-height: 86vh;
  overflow-y: auto;
}
[data-route="pages/wallet/wallet"] .sheet-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pages/wallet/wallet"] .sheet-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #6b4d14;
}
[data-route="pages/wallet/wallet"] .sheet-x {
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 32);
  color: #b2b2b2;
}
[data-route="pages/wallet/wallet"] .sheet-bal {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/wallet/wallet"] .sheet-bal-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #a8792c;
}
[data-route="pages/wallet/wallet"] .sheet-sec {
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #888888;
}
[data-route="pages/wallet/wallet"] .sheet-note {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.5;
}
[data-route="pages/wallet/wallet"] .withdraw-cell {
  display: flex;
  align-items: center;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 20);
}
[data-route="pages/wallet/wallet"] .wc-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/wallet/wallet"] .wc-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/wallet/wallet"] .wc-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
}
[data-route="pages/wallet/wallet"] .wc-act {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(135deg, #d8b25c, #a8792c);
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
}
[data-route="pages/wallet/wallet"] .sheet-conv {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 10);
  background: #fbf3dd;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #a8791b;
}
[data-route="pages/wallet/wallet"] /* ---------------- 换积分档位 ---------------- */

/* v4.86.506（木哥 07:52 令）：一行左右滑动，不许折行 */
.conv-row {
  white-space: nowrap;
  margin-top: calc(var(--rpx) * 22);
}
[data-route="pages/wallet/wallet"] .conv {
  display: inline-block;
  vertical-align: top;
  width: calc(var(--rpx) * 150);
  margin-right: calc(var(--rpx) * 18);
  text-align: center;
  padding: calc(var(--rpx) * 22) 0;
  border-radius: calc(var(--rpx) * 10);
  background: #fffdf8;
  border: calc(var(--rpx) * 2) solid #ece3cf;
}
[data-route="pages/wallet/wallet"] .conv-on {
  background: #fbf3dd;
  border-color: #d9a83a;
}
[data-route="pages/wallet/wallet"] .conv-off {
  opacity: 0.4;
}
[data-route="pages/wallet/wallet"] .conv-b {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
}
[data-route="pages/wallet/wallet"] .conv-p {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/wallet/wallet"] .convert-btn {
  margin-top: calc(var(--rpx) * 26);
  padding: calc(var(--rpx) * 24) 0;
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(135deg, #d8b25c, #a8792c);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #ffffff;
}
[data-route="pages/wallet/wallet"] .convert-btn-off {
  opacity: 0.45;
}
[data-route="pages/wallet/wallet"] /* v4.86.481：积分卡与墨宝卡同一条金边 —— 整页一套语言
 * （v7.0.057⑦：「攒积分换好礼」整卡拆成积分卡里的一颗键，.prize-card 已无节点） */
.point-card {
  border: calc(var(--rpx) * 2) solid #f0e6d2;
}
[data-route="pages/wallet/wallet"] /* v4.86.540：充值入口（金色行，点开统一价目弹层） */
.recharge-entry {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border: calc(var(--rpx) * 1) solid #eddfbd;
  border-radius: calc(var(--rpx) * 20);
  background: linear-gradient(135deg, #fffdf8 0%, #fdf5e0 58%, #f8eac6 100%);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22);
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pages/wallet/wallet"] .recharge-entry-hover {
  opacity: 0.92;
}
[data-route="pages/wallet/wallet"] .re-n {
  font-size: calc(var(--rpx) * 24);
  font-weight: 800;
  color: #4a3208;
}
[data-route="pages/wallet/wallet"] .re-s {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  font-weight: 500;
  color: #9a7420;
}
[data-route="pages/wallet/wallet"] .re-d {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/wallet/wallet"] .re-go {
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
  color: #8a6320;
  white-space: nowrap;
}



/* ---- pages/mentor/apply.wxss ---- */
[data-route="pages/mentor/apply"] .login-btn {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/mentor/apply"] .intro-tip {
  margin-bottom: calc(var(--rpx) * 24);
  line-height: 1.8;
}
[data-route="pages/mentor/apply"] .reject-note {
  background: #feeceb;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 22);
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pages/mentor/apply"] .err {
  margin-top: calc(var(--rpx) * 20);
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/mentor/apply"] .err:last-child {
  text-align: center;
}
[data-route="pages/mentor/apply"] .cert-tip {
  margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 14);
}
[data-route="pages/mentor/apply"] .cert-grid {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 16);
}
[data-route="pages/mentor/apply"] .cert-item {
  position: relative;
  width: calc(var(--rpx) * 180);
  height: calc(var(--rpx) * 180);
  border-radius: calc(var(--rpx) * 16);
  overflow: hidden;
}
[data-route="pages/mentor/apply"] .cert-img {
  width: 100%;
  height: 100%;
}
[data-route="pages/mentor/apply"] .cert-del {
  position: absolute;
  top: 0;
  right: 0;
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  line-height: calc(var(--rpx) * 40);
  text-align: center;
  background: rgba(0, 0, 0, 0.55);
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  border-radius: 0 0 0 calc(var(--rpx) * 16);
}
[data-route="pages/mentor/apply"] .cert-add {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: calc(var(--rpx) * 1) solid #f2f2f2;
  background: #f7f7f7;
  color: #b2b2b2;
}
[data-route="pages/mentor/apply"] .cert-add-icon {
  font-size: calc(var(--rpx) * 48);
  line-height: 1.1;
}
[data-route="pages/mentor/apply"] .cert-add-text {
  font-size: calc(var(--rpx) * 24);
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pages/mentor/apply"] .cert-busy {
  opacity: 0.55;
}
[data-route="pages/mentor/apply"] /* v4.83.5：字段名 + 🎤说话 同一行 */
.field-label-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pages/mentor/apply"] /* v4.86.292（木哥令「名字字号和引导说明字号颠倒了」）：
   字段名放大（28），框内模拟填写（placeholder）缩小（24）—— 只翻本页，
   全站表单的 24/28 口径不动。页面 wxss 晚于 app.wxss 装，同权重覆盖生效。 */
.field-label {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
}
[data-route="pages/mentor/apply"] .field-block .input, [data-route="pages/mentor/apply"] .field-block .area {
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/mentor/apply"] /* v4.86.292（木哥令「按住说话按键前移」）：麦克风整组在字段名前面 */
.field-label-row {
  justify-content: flex-start;
}
[data-route="pages/mentor/apply"] .field-label-row > text {
  margin-left: calc(var(--rpx) * 16);
}
[data-route="pages/mentor/apply"] /* v4.86.11 老师服务规范弹层 */
.rules-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/mentor/apply"] .rules-panel {
  width: 86vw;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 28);
  display: flex;
  flex-direction: column;
}
[data-route="pages/mentor/apply"] .rules-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  text-align: center;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/mentor/apply"] .rules-body {
  max-height: 52vh;
}
[data-route="pages/mentor/apply"] .rules-sec {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #1a1a1a;
  margin: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 8);
}
[data-route="pages/mentor/apply"] .rules-p {
  font-size: calc(var(--rpx) * 24);
  color: #444444;
  line-height: 1.7;
}
[data-route="pages/mentor/apply"] .rules-key {
  color: #b26a00;
  background: #fff8ec;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 12);
  margin: calc(var(--rpx) * 6) 0;
}
[data-route="pages/mentor/apply"] .rules-end {
  text-align: center;
  color: #bbbbbb;
  font-size: calc(var(--rpx) * 20);
  margin: calc(var(--rpx) * 20) 0;
}
[data-route="pages/mentor/apply"] .rules-foot {
  display: flex;
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/mentor/apply"] .rules-btn {
  flex: 1;
  margin: 0 calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/mentor/apply"] /* v4.86.394：必选项字数标注（挂在字段名旁，小一号不抢戏） */
.field-req {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pages/mentor/apply"] /* v4.86.477 手机号 + 短信验证码（木哥「要验手机号权属」）
   一行两块：左边验证码输入框伸缩、右边「获取验证码」按钮定宽，
   按钮在倒计时里显示秒数、验证通过后变「已验证」并置灰。 */
.code-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pages/mentor/apply"] .code-input {
  flex: 1;
  min-width: 0;
}
[data-route="pages/mentor/apply"] .code-input-ok {
  background: #f7f7f7;
  color: #999999;
}
[data-route="pages/mentor/apply"] .code-btn {
  margin-left: calc(var(--rpx) * 16);
  min-width: calc(var(--rpx) * 200);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  padding: 0 calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pages/mentor/apply"] .code-btn::after {
  border: none;
}
[data-route="pages/mentor/apply"] .code-btn-ok {
  color: #999999;
  background: #f2f2f2;
  border-color: #e6e6e6;
}
[data-route="pages/mentor/apply"] .code-tip {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  line-height: 1.6;
}



/* ---- components/opt-chips/opt-chips.wxss ---- */
[data-comp="components/opt-chips/opt-chips"] /* v4.86.506（木哥 07:52 令）：一行左右滑动，不许折行 */
.oc-wrap {
  white-space: nowrap;
  margin-top: calc(var(--rpx) * 12);
}
[data-comp="components/opt-chips/opt-chips"] .oc-chip {
  display: inline-flex;
  vertical-align: top;
  margin-right: calc(var(--rpx) * 14);
  align-items: center;
  gap: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 2) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 999);
  background: #fafafa;
}
[data-comp="components/opt-chips/opt-chips"] .oc-on {
  border-color: #07c160;
  background: #eafaf1;
}
[data-comp="components/opt-chips/opt-chips"] .oc-name {
  font-size: calc(var(--rpx) * 24);
  color: #333333;
}
[data-comp="components/opt-chips/opt-chips"] .oc-on .oc-name {
  color: #07c160;
  font-weight: bold;
}
[data-comp="components/opt-chips/opt-chips"] .oc-sub {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}



/* ---- pages/mentor/list.wxss ---- */
[data-route="pages/mentor/list"] .login-btn {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/mentor/list"] .balance-strip {
  padding-bottom: calc(var(--rpx) * 28);
}
[data-route="pages/mentor/list"] .mentor-card {
  border: calc(var(--rpx) * 2) solid transparent;
  transition: background-color 0.08s;
}
[data-route="pages/mentor/list"] .mentor-card:active {
  background: #ececec;
}
[data-route="pages/mentor/list"] /* v4.86.227 木哥令：成行成列严格对齐 —— 姓名行/价格行/数据行各占一行，超长不出行 */
.mentor-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-route="pages/mentor/list"] .mentor-price {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #07c160;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-route="pages/mentor/list"] .mentor-bio {
  margin-top: calc(var(--rpx) * 14);
  line-height: 1.7;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-route="pages/mentor/list"] .mentor-meta {
  margin-top: calc(var(--rpx) * 10);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-route="pages/mentor/list"] .err {
  margin-top: calc(var(--rpx) * 20);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/mentor/list"] .mentor-row {
  display: flex;
  align-items: flex-start;
}
[data-route="pages/mentor/list"] .mentor-avatar {
  width: calc(var(--rpx) * 84);
  height: calc(var(--rpx) * 84);
  border-radius: 50%;
  margin-right: calc(var(--rpx) * 20);
  flex-shrink: 0;
  background: #ffffff;
}
[data-route="pages/mentor/list"] .mentor-avatar-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #e8f7ee;
  color: #07c160;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
}
[data-route="pages/mentor/list"] .mentor-info {
  flex: 1;
  min-width: 0;
}
[data-route="pages/mentor/list"] /* ---- v4.86.47：约单留言（选填） ---- */
/* 底子复用全局 .area（#f7f7f7 + calc(var(--rpx) * 12) 圆角），这里只压高度、调提示色 */
.invite-note-area {
  min-height: calc(var(--rpx) * 120);
}
[data-route="pages/mentor/list"] .invite-note-ph {
  color: #b2b2b2;
}
[data-route="pages/mentor/list"] .invite-note-tip {
  margin-top: calc(var(--rpx) * 12);
  line-height: 1.6;
}
[data-route="pages/mentor/list"] /* ---- v4.86.48：本机台账提示条（这一篇已经约过谁） ---- */
.local-req-tip {
  background: #fffbe8;
  border: calc(var(--rpx) * 1) solid #ffe7a3;
}
[data-route="pages/mentor/list"] .local-req-line {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #8a6d1f;
}
[data-route="pages/mentor/list"] .local-req-sub {
  margin-top: calc(var(--rpx) * 8);
  line-height: 1.6;
}
[data-route="pages/mentor/list"] /* v4.86.216 木哥令①：不能接单的排最后，卡片也降一档灰度，不再冒充在岗 */
.mentor-card-off {
  opacity: 0.55;
}
[data-route="pages/mentor/list"] /* ---------------- v4.86.222：推荐模式（rec=1） ---------------- */

.rec-tip-line {
  display: flex;
  align-items: center;
  color: #1a1a1a;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/mentor/list"] .rec-tip-badge {
  margin-right: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 8);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/mentor/list"] .rec-tip-sub {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pages/mentor/list"] .badge-coach {
  color: #0a7d43;
  background: #e5f5ec;
}
[data-route="pages/mentor/list"] .badge-rec {
  background: #07c160;
  color: #ffffff;
  margin-right: calc(var(--rpx) * 8);
}
[data-route="pages/mentor/list"] /* v4.86.454：评价徽标补底色 —— wxml 里挂了 badge-quality，这一页却没有这条样式，
 * 「🏅 口碑王 98分」就跟名字挤成一串同色文字（profile 页同一个毛病，一起补的）。 */
.badge-quality {
  background: #e8f7ee;
  color: #07c160;
  margin-left: calc(var(--rpx) * 10);
}
[data-route="pages/mentor/list"] /* ---------------- v4.86.223：筛选条（微信生态下拉筛选同款） ---------------- */

.filter-wrap {
  position: relative;
  z-index: 20;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pages/mentor/list"] /* 白条：五个筛项均分，选中项转微信绿 */
.filter-bar {
  display: flex;
  align-items: center;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 8);
}
[data-route="pages/mentor/list"] .filter-tab {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(var(--rpx) * 20) 0;
  color: #1a1a1a;
  font-size: calc(var(--rpx) * 28);
  transition: color 0.08s;
}
[data-route="pages/mentor/list"] .filter-tab-on, [data-route="pages/mentor/list"] .filter-tab-set {
  color: #07c160;
}
[data-route="pages/mentor/list"] .filter-tab:active {
  opacity: 0.7;
}
[data-route="pages/mentor/list"] /* 下拉小三角（展开时翻转向上） */
.filter-caret {
  width: 0;
  height: 0;
  margin-left: calc(var(--rpx) * 8);
  border-left: calc(var(--rpx) * 8) solid transparent;
  border-right: calc(var(--rpx) * 8) solid transparent;
  border-top: calc(var(--rpx) * 10) solid #b2b2b2;
  transition: transform 0.12s;
}
[data-route="pages/mentor/list"] .filter-tab-on .filter-caret, [data-route="pages/mentor/list"] .filter-tab-set .filter-caret {
  border-top-color: #07c160;
}
[data-route="pages/mentor/list"] .filter-caret-up {
  transform: rotate(180deg);
}
[data-route="pages/mentor/list"] /* 有条件时才亮的「重置」 */
.filter-reset {
  flex-shrink: 0;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 20) calc(var(--rpx) * 20) calc(var(--rpx) * 12);
  color: #07c160;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/mentor/list"] /* 下拉面板：贴在筛选条正下方，浮在名单上（真下拉，不把名单挤下去） */
.filter-panel {
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  max-height: 60vh;
  overflow-y: auto;
  background: #ffffff;
  border-radius: 0 0 calc(var(--rpx) * 10) calc(var(--rpx) * 10);
  box-shadow: 0 calc(var(--rpx) * 12) calc(var(--rpx) * 24) rgba(0, 0, 0, 0.08);
}
[data-route="pages/mentor/list"] .filter-opt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 32);
  color: #1a1a1a;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/mentor/list"] .filter-opt:active {
  background: #f7f7f7;
}
[data-route="pages/mentor/list"] .filter-opt-on {
  color: #07c160;
  font-weight: 600;
}
[data-route="pages/mentor/list"] .filter-opt-check {
  color: #07c160;
  font-weight: 600;
}
[data-route="pages/mentor/list"] /* 遮罩：盖住面板以外的一切，点了就收起 */
.filter-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  z-index: 19;
  background: rgba(0, 0, 0, 0.4);
}
[data-route="pages/mentor/list"] /* 筛完一位不剩的空态卡 */
.f-empty-card {
  text-align: center;
}
[data-route="pages/mentor/list"] .f-empty-btn {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/mentor/list"] /* v4.86.225 木哥令：每张名片两个按键 —— 看介绍（进主页）/ 邀请（选定回上一页）
   v4.86.227 木哥令：按键定尺寸（高 calc(var(--rpx) * 84) 定死、整行禁折）——一个按键不能变行；
   键内文字超长不出键，在键内流动（横向可滑看全，短文案照旧居中）。 */
.mentor-acts {
  display: flex;
  flex-wrap: nowrap;
  border-top: calc(var(--rpx) * 2) solid #f0f0f0;
  padding-top: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/mentor/list"] .m-act {
  flex: 1;
  min-width: 0;
  height: calc(var(--rpx) * 84);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  font-size: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pages/mentor/list"] .m-act-text {
  max-width: 100%;
  width: max-content;
  margin: 0 auto;
  padding: 0 calc(var(--rpx) * 12);
  white-space: nowrap;
  overflow-x: auto;
}
[data-route="pages/mentor/list"] .m-act-intro {
  background: #f7f7f7;
  color: #1a1a1a;
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pages/mentor/list"] .m-act-invite {
  background: #07c160;
  color: #ffffff;
}
[data-route="pages/mentor/list"] .m-act-off {
  background: #f7f7f7;
  color: #999999;
}
[data-route="pages/mentor/list"] .m-act-hover {
  opacity: 0.85;
}
[data-route="pages/mentor/list"] /* v4.86.267：请自己的老师点评 —— 分享入口卡 */
.share-teacher {
  border: calc(var(--rpx) * 2) solid #d8ece0;
}
[data-route="pages/mentor/list"] .share-teacher-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pages/mentor/list"] .share-teacher-btn {
  margin-top: calc(var(--rpx) * 18);
  background: #e2f2e7;
  color: #0a7a3d;
  font-weight: 500;
}
[data-route="pages/mentor/list"] .share-teacher-err {
  margin-top: calc(var(--rpx) * 10);
  color: #c0392b;
}
[data-route="pages/mentor/list"] .share-teacher-tip {
  margin-top: calc(var(--rpx) * 10);
  color: #a08a55;
}
[data-route="pages/mentor/list"] .badge-bound {
  background: #fbf3dd;
  color: #a8791b;
}



/* ---- pages/profile/profile.wxss ---- */
[data-route="pages/profile/profile"] /* ==================================================================
 * 个人资料页 · v4.86.203 整页换壳：仿微信「个人信息」页
 * ------------------------------------------------------------------
 * 木哥 21:4x：「把这个我的里面的设置 ui，完全仿照下图的微信里的页面 ui。」
 * 视觉主张就三条（对齐微信原页）：
 *   ① 灰底（#ededed）+ 白分组块，组与组之间留灰缝；
 *   ② 每行「左标签 / 右值」，值一律浅灰，行尾一枚细箭头；
 *   ③ 组下配小字说明（微信的「组脚注」），能解释的都在行外解释。
 * 行壳统一 .wc-row：头像 / 名字 / ID / 手机号 / 城市 / 学校 / 年级共用。
 * 授权卡（.auth-*）与学校弹层（.pick-*）是锁过的（test-auth-center /
 * test-keyboard），样式原样保留，只给它们换了白底容器。
 *
 * v7.0.037（木哥 20:0x「设置页所有图标参考发现页的图标，统一风格，再结合
 * 微信生态的 ui 设计，等同于发现页的列表设计」）：
 *   行壳从「灰底圆角格子」换成发现页那张表 —— 白卡（calc(var(--rpx) * 16) 圆角、无外边距内衬）
 *   + 一行一条 calc(var(--rpx) * 1) 细线 + 行首 calc(var(--rpx) * 56) 彩底白线图标（app.wxss 的 .ico-tile-s /
 *   .ico-gl-*，与发现页同一份）+ 标签 calc(var(--rpx) * 32) 黑 + 右侧值 calc(var(--rpx) * 28) 灰 + 细箭头。
 *   头像行不另画图标：头像本身就是那一格（微信个人信息页也是这么办的）。
 *   类名一个没改（wc-row / wc-k / wc-end / auth-row 全留着），只换皮。
 * ================================================================== */

.wc-page {
  /* 底色跟发现页同一块灰（#f7f7f7），两页并排看不再一深一浅 */
  background: #f7f7f7;
  min-height: calc(var(--vh) * 100);
}
[data-route="pages/profile/profile"] /* ---------- 白分组与行壳 ---------- */

.wc-group {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  /* v7.0.037：白卡自己装行，行与行之间只留一条细线（发现页同款）。
     外面 calc(var(--rpx) * 24) 的缝由 page-wrap 的 padding 管，这里不再叠内衬，
     否则图标会从行首缩进两次、右侧值和箭头也对不齐。 */
  padding: 0;
  margin-bottom: calc(var(--rpx) * 24);
  overflow: hidden;
}
[data-route="pages/profile/profile"] .wc-row {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  min-height: calc(var(--rpx) * 108);

  background: #ffffff;
  border-bottom: calc(var(--rpx) * 1) solid #f0f0f0;

  /* 行内边距与发现页 .dc-row 同一档（calc(var(--rpx) * 26) 上下 / calc(var(--rpx) * 28) 左右），
     细线一条从头贯到尾，微信列表就是这么分的。 */
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28);
  box-sizing: border-box;
}
[data-route="pages/profile/profile"] /* 末行收线：白卡自己收圆角，末行不再画一条悬空细线 */
.wc-row:last-child {
  border-bottom: none;
}
[data-route="pages/profile/profile"] /* 行本体是 button 的场合（头像 / 手机号）：按微信的样子把按钮壳剥干净 */
.wc-row-btn {
  width: 100%;
  margin: 0;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28);
  /* 按钮行与普通行同一条白底 + 同一条细线，不再「白行 / 灰行」交替 */
  background: #ffffff;
  border-radius: 0;
  border-bottom: calc(var(--rpx) * 1) solid #f0f0f0;
  box-sizing: border-box;
  text-align: left;
  font-weight: normal;
  line-height: inherit;
}
[data-route="pages/profile/profile"] .wc-row-btn:last-child {
  border-bottom: none;
}
[data-route="pages/profile/profile"] .wc-row-btn::after {
  border: none;
}
[data-route="pages/profile/profile"] .wc-k {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 32);
  color: #191919;
}
[data-route="pages/profile/profile"] /* 图标与标签之间 calc(var(--rpx) * 24)（发现页 .dc-name 的 margin-left 同档）。
   只给 .wc-row 里的标签加 —— 开关行里由 .auth-main 的 margin-left 管，不叠双层。 */
.wc-row .wc-k {
  margin-left: calc(var(--rpx) * 24);
}
[data-route="pages/profile/profile"] /* v4.86.478：行内小提示（目前只用在「头像」那一行 —— 换头像全站只剩这一个入口，
   标题旁直说「点这一行换」，别让人猜。字号与 .wc-avatar-alt 同档） */
.wc-k-tip {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pages/profile/profile"] /* 右侧聚合：值 + 可选小动作 + 箭头 */
.wc-end {
  display: flex;
  align-items: center;
  min-width: 0;
  margin-left: auto;
  padding-left: calc(var(--rpx) * 20);
}
[data-route="pages/profile/profile"] .wc-v {
  font-size: calc(var(--rpx) * 28);
  color: #808080;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: calc(var(--rpx) * 420);
}
[data-route="pages/profile/profile"] .wc-v-empty {
  color: #b2b2b2;
}
[data-route="pages/profile/profile"] /* v4.86.493：还没授权的那一项 —— 不摆一个空框让人猜，直说「还没用微信头像 / 名字」 */
.wc-v-warn {
  color: #fa9d3b;
}
[data-route="pages/profile/profile"] /* 行尾细箭头：css 画，不引图 */
.wc-arrow {
  flex-shrink: 0;
  width: calc(var(--rpx) * 18);
  height: calc(var(--rpx) * 18);
  margin-left: calc(var(--rpx) * 14);
  border-top: calc(var(--rpx) * 4) solid #c8c8c8;
  border-right: calc(var(--rpx) * 4) solid #c8c8c8;
  transform: rotate(45deg);
}
[data-route="pages/profile/profile"] /* 名字行：微信同款右对齐输入 */
.wc-input {
  flex: 1;
  min-width: 0;
  text-align: right;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/profile/profile"] .wc-ph {
  color: #b2b2b2;
}
[data-route="pages/profile/profile"] /* 头像：微信是圆角方块（不是圆的），压在行右侧
   v4.86.250（木哥令）：「头像图标小三分之一」—— 112 → calc(var(--rpx) * 74)（约 2/3），
   圆角与字号跟着缩，行高不塌 */
.wc-avatar {
  flex-shrink: 0;
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  border-radius: calc(var(--rpx) * 12);
  background: #f2f2f2;
}
[data-route="pages/profile/profile"] /* v4.86.452（木哥 01:37）：原来这 calc(var(--rpx) * 74) 方块里只塞一个 calc(var(--rpx) * 20) 的「选」字，
   远看像一块坏掉的按钮碎片 —— 这是「头像那格最别扭」的直接原因。
   改成人像剪影，纯 css 画（圆头 + 肩），不引图、不占主包。 */
.wc-avatar-empty {
  position: relative;
  overflow: hidden;
}
[data-route="pages/profile/profile"] .wc-avatar-empty::before {
  content: '';
  position: absolute;
  left: 50%;
  top: calc(var(--rpx) * 10);
  width: calc(var(--rpx) * 18);
  height: calc(var(--rpx) * 18);
  margin-left: calc(var(--rpx) * -9);
  border-radius: 50%;
  background: #c8c8c8;
}
[data-route="pages/profile/profile"] .wc-avatar-empty::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: calc(var(--rpx) * -2);
  width: calc(var(--rpx) * 34);
  height: calc(var(--rpx) * 20);
  margin-left: calc(var(--rpx) * -17);
  border-radius: calc(var(--rpx) * 17) calc(var(--rpx) * 17) 0 0;
  background: #c8c8c8;
}
[data-route="pages/profile/profile"] /* 头像行下面那行小字：相册入口摆在明面上（点它直接开相册） */
.wc-avatar-alt {
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 28) calc(var(--rpx) * 16) calc(var(--rpx) * 108);
  border-bottom: calc(var(--rpx) * 1) solid #f0f0f0;
  font-size: calc(var(--rpx) * 24);
  color: #576b95;
}
[data-route="pages/profile/profile"] /* 行内小动作（清空学校 / 清空年级）：catchtap 挡住冒泡，不触发行本身 */
.wc-clear {
  flex-shrink: 0;
  margin-right: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/profile/profile"] /* ---------- 组脚注与分组标题 ---------- */

.wc-foot {
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  line-height: 1.6;
}
[data-route="pages/profile/profile"] /* 分组标题：与发现页的分卡片节奏对齐 —— 卡上留 calc(var(--rpx) * 34)、卡下留 calc(var(--rpx) * 12) */
.wc-section {
  padding: calc(var(--rpx) * 34) calc(var(--rpx) * 8) calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #808080;
}
[data-route="pages/profile/profile"] .wc-auth-gap {
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pages/profile/profile"] /* ---------- 保存 ---------- */

.wc-save-group {
  margin-top: calc(var(--rpx) * 32);
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 32);
}
[data-route="pages/profile/profile"] .wc-save {
  width: 100%;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/profile/profile"] .login-btn {
  width: 100%;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/profile/profile"] .err {
  margin: calc(var(--rpx) * 20) calc(var(--rpx) * 32) 0;
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  text-align: center;
}
[data-route="pages/profile/profile"] /* ===== 沿用的说明文字样式（弹层 / 授权卡还在用）===== */

/* 组内说明行：左右缩进与行内边距对齐（calc(var(--rpx) * 28)），不再顶着卡片边 */
.section-tip {
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 8);
  padding: 0 calc(var(--rpx) * 28);
  line-height: 1.6;
}
[data-route="pages/profile/profile"] .wc-group .section-tip {
  margin: calc(var(--rpx) * 18) 0 calc(var(--rpx) * 10);
}
[data-route="pages/profile/profile"] .wc-auth-gap {
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pages/profile/profile"] .field-hint {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
}
[data-route="pages/profile/profile"] .mini-btn {
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 22);
  margin-left: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 8);
  border: calc(var(--rpx) * 1) solid #d5f0df;
  background: #ffffff;
  color: #07c160;
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pages/profile/profile"] .mini-btn-primary {
  border-color: #07c160;
  color: #ffffff;
  background: #07c160
}
[data-route="pages/profile/profile"] /* ===== v4.86.36：弹出的地图上搜 → 点选（学校 / 单位）=====
   两条铁律落在样式上也没得商量：
   ① 面板里**没有我们给的名单**（只回圆心），所以这里只有「搜索结果」一种列表；
   ② 名字只能由 confirmPick 从搜索结果里点出来 —— 面板里那个输入框是**搜索词**，
      不是值，它永远不会被当成结果。

   v4.86.44 木哥实测「找到了但选不上、点了没反应」⇒ 面板重排：
   · **结果列表往上提**，紧挨搜索框（手指路径最短，第一屏第一眼就能点）；
   · 地图缩到 calc(var(--rpx) * 260) 且**一有结果就整块撤掉**（`wx:if`），挑结果时不留原生组件；
   · 少了「就选它」那一行按钮（改成点一条即选中）。 */
.pick-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 100;
  background: rgba(0, 0, 0, 0.45);
  display: flex;
  align-items: flex-end;
}
[data-route="pages/profile/profile"] .pick-panel {
  width: 100%;
  height: 82vh;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28) calc(var(--rpx) * 32);
  box-sizing: border-box;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0 0;
  display: flex;
  flex-direction: column;
}
[data-route="pages/profile/profile"] .pick-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: calc(var(--rpx) * 18);
}
[data-route="pages/profile/profile"] .pick-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
}
[data-route="pages/profile/profile"] .pick-close {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pages/profile/profile"] .pick-search {
  display: flex;
  align-items: center;
}
[data-route="pages/profile/profile"] .pick-input {
  flex: 1;
  height: calc(var(--rpx) * 76);
  padding: 0 calc(var(--rpx) * 22);
  box-sizing: border-box;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/profile/profile"] .pick-search .mini-btn {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 14);
}
[data-route="pages/profile/profile"] .pick-map {
  width: 100%;
  height: calc(var(--rpx) * 260);
  margin-top: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pages/profile/profile"] /* scroll-view 给一个确定的高度（flex 撑出来的也算），别让它塌成 0 ——
   塌了的话手指落不到列表上，表现就是「点不动」。 */
.pick-list {
  flex: 1;
  min-height: calc(var(--rpx) * 240);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/profile/profile"] /* 行要**实底**：透明行在真机上偶尔会出现"看着在、点不到"的错觉，
   而且 hover-class 也需要一个底色才看得出按下了。 */
.pick-item {
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 18);
  background: #f7f7f7;

  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/profile/profile"] /* 按下去立刻变绿：木哥说"点了没反应"，一半是没感觉 —— 先给回馈。 */
.pick-item-hover {
  background: #e9f8ef;
}
[data-route="pages/profile/profile"] .pick-item-name {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/profile/profile"] .pick-item-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.5;
}
[data-route="pages/profile/profile"] .pick-empty {
  padding: calc(var(--rpx) * 60) 0;
  text-align: center;
}
[data-route="pages/profile/profile"] .pick-foot {
  flex-shrink: 0;
  padding: calc(var(--rpx) * 14) 0 calc(var(--rpx) * 4);
  text-align: center;
}
[data-route="pages/profile/profile"] /* ===== 授权中心（v4.86.179）：一行 = 左边文字 / 右边开关 =====
   不设字号（继承 .wc-k / .field-hint 的既有档位），避免多一套字号。 */
/* 开关行：与上面的 wc-row 同一条白底细线，只是右边坐的是 switch，不是箭头 */
.auth-row {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  /* 行高留够，开关与上一行的开关不挨着（防误碰） */
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 28);
  background: #ffffff;
  border-bottom: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pages/profile/profile"] .auth-row .ico-tile {
  align-self: center;
}
[data-route="pages/profile/profile"] /* v4.86.238：线退场 —— 相邻行改用单元格自身的间距区分，这个类只剩间距 */
.auth-row-line {
  margin-top: 0;
}
[data-route="pages/profile/profile"] /* v4.86.452：组内末行不留额外缝，底部白边统一由 .wc-group 的下内边距兜 */
.auth-row:last-child {
  border-bottom: none;
}
[data-route="pages/profile/profile"] .auth-row switch {
  flex-shrink: 0;
  margin-left: auto;
}
[data-route="pages/profile/profile"] .auth-main {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 24);
  padding-right: calc(var(--rpx) * 16);
}
[data-route="pages/profile/profile"] /* 「重新识别」文字链（手选城市的回头路，v4.86.203 起从行内小按钮挪进组脚注） */
.wc-relocate {
  color: #07c160;
  font-size: calc(var(--rpx) * 24);
}



/* ---- pages/annotate/annotate.wxss ---- */
[data-route="pages/annotate/annotate"] /* 圈画批注页（v4.86.11）
 * v4.86.218（木哥 07:4x 第 2 条）：整页换微信生态浅色 —— 不要大面积黑。
 * 画布本体仍由 redraw() 自铺白底；页面底、工具条、点评面板、引导气泡、
 * 取图遮罩全部归到微信色板：#ededed 页底 / 白条 + #e5e5e5 分隔线 /
 * 主色 #07c160 / 正文 #1a1a1a。笔迹颜色不动（那是内容不是皮肤）。 */
page {
  background: #ededed;
}
[data-route="pages/annotate/annotate"] .an-wrap {
  width: 100vw;
  height: calc(var(--vh) * 100);
  display: flex;
  flex-direction: column;
}
[data-route="pages/annotate/annotate"] .an-stage {
  flex: 1;
  position: relative;
  overflow: hidden;
}
[data-route="pages/annotate/annotate"] /* v4.86.31：canvas 用**绝对定位四边贴合**撑开，不再靠 height:100%。
   父级 .an-stage 是 flex:1（高度来自 flex 分配），真机上百分比高度对 flex
   子项可能解析不出（量到 0）⇒ canvas 0×0 ⇒ 画布是黑的、白底也画不出来。
   abs + 四边 0 只依赖父级**实际盒子**，不依赖百分比解析。 */
.an-canvas {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
}
[data-route="pages/annotate/annotate"] /* 标注右上角的喇叭：写了点评变红；点一下出输入面板（v4.86.190：♪ = 写点评的唯一入口） */
.an-spk {
  position: absolute;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: #ffffff;
  border: 2px solid #999999;
  color: #999999;
  font-size: 15px;
  line-height: 26px;
  text-align: center;
  z-index: 5;
  box-sizing: border-box;
  /* v4.86.142（木哥 19:3x）：声音符号压到 66% 透明 —— 它标的是「这里有话」,
     不该跟笔迹抢眼。选中/脉动那两态照旧（an-spk-has / an-spk-live）。
     v4.86.228（木哥令「所有点评的标记点都改成 60% 透明度」）：0.66 → 0.4；
     正在编辑的那处（an-spk-live）恢复不透明 —— 手指正按着它，要看得清。 */
  opacity: 0.4;
}
[data-route="pages/annotate/annotate"] /* v4.86.190（木哥）：第一次用点评的分步引导 —— 一条小气泡浮在照片顶部，
 * 不挡中间的作业区（该画照画），点气泡任意处收起。cover-view 才盖得住 canvas。 */
.an-coach {
  position: absolute;
  top: 12px;
  left: 16px;
  right: 16px;
  display: flex;
  align-items: center;
  background: #ffffff;
  border-radius: 10px;
  padding: 12px 14px;
  z-index: 9;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 16) rgba(0, 0, 0, 0.08);
}
[data-route="pages/annotate/annotate"] .an-coach-t {
  flex: 1;
  color: #1a1a1a;
  font-size: 14px;
  line-height: 1.5;
}
[data-route="pages/annotate/annotate"] .an-coach-ok {
  color: #07c160;
  font-size: 14px;
  padding-left: 12px;
}
[data-route="pages/annotate/annotate"] .an-spk-has {
  /* v4.86.362（359 号令）：固定红降为兜底色 —— 内联 style 已带这一笔圈点自己的颜色 */
  border-color: #fa5151;
  color: #fa5151;
}
[data-route="pages/annotate/annotate"] /* v4.86.362（359 号令）：有原音的 ♪ 常驻闪动（任何时候、页面内都在闪）；
   keyframes 全站共用 app.wxss 的 voice-flash（只动 opacity 不碰 transform） */
.an-spk-flash {
  animation: voice-flash 1.4s ease-in-out infinite;
}
[data-route="pages/annotate/annotate"] .an-spk-live {
  border-color: #fa5151;
  color: #fa5151;
  animation: an-pulse 1.2s ease-in-out infinite;
  opacity: 1;
}


@keyframes an-pulse {
  0% {
    transform: scale(1);
    box-shadow: 0 0 0 0 rgba(250, 81, 81, 0.45);
  }
  55% {
    transform: scale(1.18);
    box-shadow: 0 0 0 10px rgba(250, 81, 81, 0);
  }
  100% {
    transform: scale(1);
    box-shadow: 0 0 0 0 rgba(250, 81, 81, 0);
  }
}
[data-route="pages/annotate/annotate"] .an-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 24);
  background: #f7f7f7;
  border-top: calc(var(--rpx) * 1) solid #e5e5e5;
}
[data-route="pages/annotate/annotate"] .an-colors {
  display: flex;
  align-items: center;
}
[data-route="pages/annotate/annotate"] .an-dot {
  width: calc(var(--rpx) * 48);
  height: calc(var(--rpx) * 48);
  border-radius: 50%;
  /* v4.86.142：calc(var(--rpx) * 16) → calc(var(--rpx) * 12)，一行要放 4 色点 + 5 工具（工具改单行不换行） */
  margin-right: calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 4) solid transparent;
  box-sizing: border-box;
}
[data-route="pages/annotate/annotate"] .an-dot-on {
  border-color: #07c160;
  transform: scale(1.15);
}
[data-route="pages/annotate/annotate"] .an-tools {
  display: flex;
  align-items: center;
}
[data-route="pages/annotate/annotate"] /* 工具条按钮（v4.86.218 换浅色）：白底胶囊 + 正文黑字，全圆胶囊（calc(var(--rpx) * 999)），
 * 点一下加深一档（hover-class，见 wxml）；选中态用主色 #07c160。
 * 一行要塞 4 色点 + 5 工具，字号仍走阶梯的 calc(var(--rpx) * 24)、内边距 calc(var(--rpx) * 16)。 */
.an-btn {
  color: #1a1a1a;
  font-size: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #dcdcdc;
  box-sizing: border-box;
  margin-left: calc(var(--rpx) * 8);
  transition: background 0.12s ease;
  /* v4.86.142（木哥 19:3x 截图）：文字居中 —— 原来靠 padding 撑，窄屏上「直线/方框」
     被挤成两行且左偏。改成 flex 居中 + 不换行 + 不参与压缩：字永远在胶囊正中一行。
     同时内边距 20→calc(var(--rpx) * 16)、间距 12→calc(var(--rpx) * 8)，把 4 色点 + 5 工具的整行压回 calc(var(--rpx) * 702) 以内。 */
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  line-height: 1;
  white-space: nowrap;
  flex-shrink: 0;
}
[data-route="pages/annotate/annotate"] .an-btn-hover {
  background: #f0f0f0;
}
[data-route="pages/annotate/annotate"] .an-btn-on {
  background: #07c160;
  border-color: #07c160;
  color: #ffffff;
}
[data-route="pages/annotate/annotate"] .an-btn-on.an-btn-hover {
  background: #06ad56;
}
[data-route="pages/annotate/annotate"] /* v4.86.81：大小滑条永久去掉（木哥 20:4x）—— 拖动就是真实大小，滑条没有存在意义 */

.an-actions {
  display: flex;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24) calc(calc(var(--rpx) * 16) + env(safe-area-inset-bottom));
  background: #f7f7f7;
  border-top: calc(var(--rpx) * 1) solid #e5e5e5;
}
[data-route="pages/annotate/annotate"] .an-act {
  flex: 1;
  margin: 0 calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/annotate/annotate"] /* v4.86.218：页底条回到浅色，btn-ghost 全站默认（白底黑字）就是对的，
   深色特例整块撤掉 —— 只保留选中/按压反馈不额外造色。 */

/* 取图遮罩 / 失败态重试（木哥 2026-10-11 第 1 条：没图不许静默留白）。
   z-index 6 压过喇叭的 5 —— 图都没上来，不该让人先在白板上圈点。 */
.an-photo-tip {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 6;
  /* v4.86.31：整块是 cover-view（要盖住原生 canvas，见 wxml 注释）。
     cover-view 的 CSS 支持面比 view 窄，只用最稳的那几样：绝对定位铺满 +
     纵向 flex 居中 + 不透明的纯色底。 */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: #ededed;
}
[data-route="pages/annotate/annotate"] .an-photo-wait {
  color: #666666;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/annotate/annotate"] .an-photo-fail-t {
  color: #1a1a1a;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/annotate/annotate"] .an-photo-fail-s {
  margin-top: calc(var(--rpx) * 16);
  color: #07c160;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/annotate/annotate"] /* 真机诊断行：只在走了兜底/失败时出现，正常出图时整块遮罩都不在 */
.an-photo-diag {
  margin-top: calc(var(--rpx) * 20);
  color: #999999;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/annotate/annotate"] /* v4.86.276（木哥 00:4x「点声音符号不要调换页面」）：输入面板改成**内联两行**，
   放在圈点工具行上边（文档流里，不盖 canvas —— v4.86.31 教训照旧）。
   一行按住说话、一行单行输入框（行尾「保存」）。画布变矮由
   annotate.js#resizeCanvas() 重新量尺寸 + 重画来兜。 */
.an-note {
  /* v4.86.136：键盘弹出时整块上移（translateY），加个过渡别瞬移 */
  transition: transform 0.22s ease-out;
  background: #ffffff;
  border-top: calc(var(--rpx) * 1) solid #e5e5e5;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24) calc(calc(var(--rpx) * 16) + env(safe-area-inset-bottom));
}
[data-route="pages/annotate/annotate"] /* 第一行：按住说话（+ 留过原音时的「删除」+ 右端「第 N 处」指示） */
/* v7.0.062：闪光引导要量「按住说话」的位置 —— 包一层锚点 view，布局保持原样 */
.an-note-voice-gd {
  display: inline-block;
  vertical-align: middle;
}
[data-route="pages/annotate/annotate"] .an-note-voice {
  display: flex;
  align-items: center;
}
[data-route="pages/annotate/annotate"] .an-note-which {
  margin-left: auto;
  color: #999999;
  font-size: calc(var(--rpx) * 24);
  flex: none;
}
[data-route="pages/annotate/annotate"] /* v4.86.81：删除按钮就在「说话/重录」按键边上（独立大按钮已拆）
   v4.86.91：统一字号 calc(var(--rpx) * 28) + 给足点击热区（微信里删除=红字轻操作） */
.an-note-recdel {
  flex: none;
  margin-left: calc(var(--rpx) * 16);
  color: #fa5151;
  font-size: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pages/annotate/annotate"] /* v4.86.296：面板里的原音试听（▶ 听 / ⏹ 停） */
.an-note-play {
  flex: none;
  margin-left: calc(var(--rpx) * 16);
  color: #06ad56;
  font-size: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pages/annotate/annotate"] /* 第二行：单行输入框 + 行尾「保存」（v4.86.276：一行够用，写着省事） */
.an-note-line {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pages/annotate/annotate"] .an-note-area {
  box-sizing: border-box;
  border-radius: calc(var(--rpx) * 36);
  background: #f7f7f7;
  color: #1a1a1a;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/annotate/annotate"] .an-note-input {
  flex: 1;
  min-width: 0;
  height: calc(var(--rpx) * 72);
  padding: 0 calc(var(--rpx) * 24);
}
[data-route="pages/annotate/annotate"] .an-note-hover {
  background: #f0f0f0;
}
[data-route="pages/annotate/annotate"] /* 行尾「保存」胶囊（微信主色，按压加深一档） */
.an-note-save {
  flex: none;
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 36);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  transition: background 0.12s ease;
}
[data-route="pages/annotate/annotate"] .an-note-save.an-note-hover {
  background: #06ad56;
}



/* ---- pages/pet/pet.wxss ---- */
[data-route="pages/pet/pet"] /* v4.18：养猫页已并入猫咪乐园，本页只做跳转过渡 */
.loading {
  padding: calc(var(--rpx) * 160) 0;
  text-align: center;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
}



/* ---- pages/medal/medal.wxss ---- */
[data-route="pages/medal/medal"] /**
 * 我的勋章（v4.20）
 * 字号守微信规范：正文 calc(var(--rpx) * 28) / 次要 calc(var(--rpx) * 24) / 辅助最小 calc(var(--rpx) * 22)
 */
.page-wrap {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pages/medal/medal"] .loading {
  padding: calc(var(--rpx) * 120) 0;
  text-align: center;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/medal/medal"] /* ---------- 顶部：已点亮多少枚 ---------- */
.medal-head-card {
  display: flex;
  align-items: center;
}
[data-route="pages/medal/medal"] .medal-big {
  width: calc(var(--rpx) * 150);
  text-align: center;
  flex-shrink: 0;
}
[data-route="pages/medal/medal"] .medal-big-num {
  font-size: calc(var(--rpx) * 64);
  font-weight: 600;
  color: #07c160;
  line-height: 1;
}
[data-route="pages/medal/medal"] .medal-big-total {
  font-size: calc(var(--rpx) * 28);
  color: #b2b2b2;
}
[data-route="pages/medal/medal"] .medal-head-text {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 12);
}
[data-route="pages/medal/medal"] .medal-head-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/medal/medal"] .medal-head-text .muted {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/medal/medal"] /* ---------- 勋章墙 ---------- */
.medal-grid {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pages/medal/medal"] .medal {
  width: calc(var(--rpx) * 190);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 6) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 16);
  text-align: center;
  box-sizing: border-box;
}
[data-route="pages/medal/medal"] .medal-got {
  background: #e8f7ee;
}
[data-route="pages/medal/medal"] .medal-lock {
  background: #f7f7f7;
  opacity: 0.66;
}
[data-route="pages/medal/medal"] .medal-icon {
  font-size: calc(var(--rpx) * 48);
  line-height: 1.1;
}
[data-route="pages/medal/medal"] .medal-name {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/medal/medal"] .medal-hint {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  line-height: 1.4;
}
[data-route="pages/medal/medal"] .medal-got .medal-hint {
  color: #07c160;
}
[data-route="pages/medal/medal"] .medal-rule {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/medal/medal"] .medal-rule .muted {
  margin-top: calc(var(--rpx) * 10);
  line-height: 1.7;
}
[data-route="pages/medal/medal"] .err {
  margin-top: calc(var(--rpx) * 20);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/medal/medal"] /* 成就卡（B-5 / G-21）：存相册 + 转发 */
.honor-card {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/medal/medal"] .honor-card .muted {
  margin-top: calc(var(--rpx) * 10);
  line-height: 1.7;
}
[data-route="pages/medal/medal"] .honor-actions {
  display: flex;
  gap: calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/medal/medal"] .honor-btn {
  flex: 1;
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 32);
  color: #ffffff;
  background: #07c160;
  padding: 0;
  margin: 0;
}
[data-route="pages/medal/medal"] .honor-btn-ghost {
  color: #07c160;
  background: #e8f7ee;
  border: calc(var(--rpx) * 1) solid #07c160;
}
[data-route="pages/medal/medal"] button.honor-btn-ghost::after {
  border: none;
}
[data-route="pages/medal/medal"] .honor-tip {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pages/medal/medal"] /* 屏外画布：离屏摆在不挡路的地方，别用 display:none */
.poster-canvas {
  position: fixed;
  left: calc(var(--rpx) * -9999);
  top: 0;
  width: 600px;
  height: 800px;
}



/* ---- pages/cat/cat.wxss ---- */
[data-route="pages/cat/cat"] /**
 * 猫咪升级详情（v4.24）
 * 字号遵循微信规范：正文 calc(var(--rpx) * 28)(14px) / 次要 calc(var(--rpx) * 24)(12px) / 辅助最小 calc(var(--rpx) * 22)(11px)
 * v4.70.0 换皮：白分组块 + 发丝线，渐变/阴影/彩边退场
 */
.page-wrap {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pages/cat/cat"] .loading {
  padding: calc(var(--rpx) * 120) 0;
  text-align: center;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/cat/cat"] .err {
  margin-top: calc(var(--rpx) * 20);
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
  text-align: center;
}
[data-route="pages/cat/cat"] /* ---------------- ① 我现在的猫 ---------------- */
.cat-hero {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 30) calc(var(--rpx) * 28);
  margin-bottom: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  background: #ffffff;
}
[data-route="pages/cat/cat"] .ch-face {
  font-size: calc(var(--rpx) * 96);
  line-height: 1;
  margin-right: calc(var(--rpx) * 24);
  flex-shrink: 0;
}
[data-route="pages/cat/cat"] .cat-level-2 .ch-face {
  font-size: calc(var(--rpx) * 104);
}
[data-route="pages/cat/cat"] .cat-level-3 .ch-face {
  font-size: calc(var(--rpx) * 112);
}
[data-route="pages/cat/cat"] .cat-level-4 .ch-face {
  font-size: calc(var(--rpx) * 120);
}
[data-route="pages/cat/cat"] .ch-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/cat/cat"] .ch-name {
  font-size: calc(var(--rpx) * 40);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/cat/cat"] .ch-desc {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.5;
}
[data-route="pages/cat/cat"] .ch-lv {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/cat/cat"] /* ---------------- ② 升级路线 ---------------- */
.route-tip {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pages/cat/cat"] .route-list {
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pages/cat/cat"] .route-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 16);
  margin-bottom: calc(var(--rpx) * 12);
  background: #ffffff;
}
[data-route="pages/cat/cat"] .route-cur {
  background: #e8f7ee;
}
[data-route="pages/cat/cat"] .route-todo {
  opacity: 0.72;
}
[data-route="pages/cat/cat"] .rr-icon {
  font-size: calc(var(--rpx) * 52);
  line-height: 1;
  margin-right: calc(var(--rpx) * 18);
  flex-shrink: 0;
}
[data-route="pages/cat/cat"] .rr-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/cat/cat"] .rr-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/cat/cat"] .rr-badge {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
}
[data-route="pages/cat/cat"] .rr-badge-past {
  background: #b2b2b2;
}
[data-route="pages/cat/cat"] .rr-desc {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.5;
}
[data-route="pages/cat/cat"] .rr-need {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/cat/cat"] .route-hint {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  font-weight: 500;
}
[data-route="pages/cat/cat"] .lv-now {
  margin-top: calc(var(--rpx) * 18);
  padding-top: calc(var(--rpx) * 16);
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pages/cat/cat"] .lv-bar {
  height: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: #f2f2f2;
  overflow: hidden;
}
[data-route="pages/cat/cat"] .lv-bar-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
}
[data-route="pages/cat/cat"] .lv-hint {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/cat/cat"] /* ---------------- ③ 互动次数 ---------------- */
.act-list {
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pages/cat/cat"] .act-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 16);
  margin-bottom: calc(var(--rpx) * 12);
  background: #ffffff;
}
[data-route="pages/cat/cat"] .ar-icon-wrap {
  position: relative;
  flex-shrink: 0;
  margin-right: calc(var(--rpx) * 18);
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/cat/cat"] .ar-icon {
  font-size: calc(var(--rpx) * 40);
  line-height: 1;
}
[data-route="pages/cat/cat"] /* 右上角小红点（v4.26）：这个动作没次数了、但还赚得动 → 去做任务 */
.ar-dot {
  position: absolute;
  top: calc(var(--rpx) * -4);
  right: calc(var(--rpx) * -4);
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 16);
  border-radius: 50%;
  background: #fa5151;
  border: calc(var(--rpx) * 3) solid #ffffff;
}
[data-route="pages/cat/cat"] .ar-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/cat/cat"] .ar-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/cat/cat"] .ar-count {
  margin-left: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #fa5151;
}
[data-route="pages/cat/cat"] .ar-hint {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/cat/cat"] .ar-earn {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/cat/cat"] .ar-go {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  font-weight: 500;
}
[data-route="pages/cat/cat"] .ar-ready {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/cat/cat"] /* ================= 刺刺毛（v4.27）：没照顾好 ================= */
.ch-sad-tag {
  margin-left: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  font-weight: 500;
  color: #ffffff;
  background: #fa5151;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
}
[data-route="pages/cat/cat"] .cat-hero-sad {
  background: #feeceb;
}
[data-route="pages/cat/cat"] .sad-bar {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  background: #feeceb;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pages/cat/cat"] .sb-icon {
  font-size: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pages/cat/cat"] .sb-body {
  flex: 1;
  min-width: 0;
}
[data-route="pages/cat/cat"] .sb-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #fa5151;
}
[data-route="pages/cat/cat"] .sb-text {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.4;
}
[data-route="pages/cat/cat"] .sb-go {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  font-weight: 500;
}
[data-route="pages/cat/cat"] .care-list {
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pages/cat/cat"] .care-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 8);

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/cat/cat"] .care-row:active {
  background: #ececec;
  border-radius: calc(var(--rpx) * 14);
}
[data-route="pages/cat/cat"] .cr-icon {
  font-size: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 16);
  flex-shrink: 0;
}
[data-route="pages/cat/cat"] .cr-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/cat/cat"] .cr-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pages/cat/cat"] .cr-rule {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
  color: #888888;
}
[data-route="pages/cat/cat"] .cr-now {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/cat/cat"] .care-bad .cr-now {
  color: #fa5151;
  font-weight: 500;
}
[data-route="pages/cat/cat"] .care-bad .cr-icon {
  filter: grayscale(0.3);
}
[data-route="pages/cat/cat"] .cr-go {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  font-weight: 500;
}
[data-route="pages/cat/cat"] .care-bad .cr-go {
  color: #fa9d3b;
}



/* ---- pages/power/power.wxss ---- */
[data-route="pages/power/power"] /* v4.70.0 换皮：战力值深色卡 → 白底黑数字 + 绿进度条（对齐 index.wxss 的 .power-card） */

.pw-page {
  min-height: calc(var(--vh) * 100);
  background: #ededed;
  padding: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 60);
}
[data-route="pages/power/power"] .pw-hero {
  margin: calc(var(--rpx) * 16) 0;
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 32);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  text-align: center;
}
[data-route="pages/power/power"] .pw-hero-cap { font-size: calc(var(--rpx) * 24); color: #888888; letter-spacing: calc(var(--rpx) * 4); }
[data-route="pages/power/power"] .pw-num { font-size: calc(var(--rpx) * 96); font-weight: 600; line-height: 1.1; margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 4); color: #191919; }
[data-route="pages/power/power"] .pw-title { font-size: calc(var(--rpx) * 32); font-weight: 500; color: #191919; letter-spacing: calc(var(--rpx) * 2); }
[data-route="pages/power/power"] .pw-bar { margin: calc(var(--rpx) * 22) calc(var(--rpx) * 40) calc(var(--rpx) * 10); height: calc(var(--rpx) * 12); background: #f2f2f2; border-radius: calc(var(--rpx) * 999); overflow: hidden; }
[data-route="pages/power/power"] .pw-bar-in { height: 100%; background: #07c160; border-radius: calc(var(--rpx) * 999); }
[data-route="pages/power/power"] .pw-next { font-size: calc(var(--rpx) * 24); color: #b2b2b2; }
[data-route="pages/power/power"] .pw-delta {
  display: inline-block; margin-top: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 6) calc(var(--rpx) * 20);
  background: #e8f7ee;
  border-radius: calc(var(--rpx) * 6); color: #07c160; font-size: calc(var(--rpx) * 28); font-weight: 500;
}
[data-route="pages/power/power"] .pw-tabs { display: flex; margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 16); background: #f2f2f2; border-radius: calc(var(--rpx) * 12); padding: calc(var(--rpx) * 6); }
[data-route="pages/power/power"] .pw-tab { flex: 1; text-align: center; padding: calc(var(--rpx) * 16) 0; font-size: calc(var(--rpx) * 28); color: #888888; border-radius: calc(var(--rpx) * 12); }
[data-route="pages/power/power"] .pw-tab.on { background: #ffffff; color: #191919; font-weight: 500; }
[data-route="pages/power/power"] .pw-card { background: #ffffff; border-radius: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 26) calc(var(--rpx) * 24); margin-bottom: calc(var(--rpx) * 18); }
[data-route="pages/power/power"] .pw-h3 { font-size: calc(var(--rpx) * 28); font-weight: 500; color: #191919; margin-bottom: calc(var(--rpx) * 16); }
[data-route="pages/power/power"] .pw-row { display: flex; align-items: flex-start; }
[data-route="pages/power/power"] .pw-ico { font-size: calc(var(--rpx) * 40); margin-right: calc(var(--rpx) * 18); }
[data-route="pages/power/power"] .pw-row-body { flex: 1; }
[data-route="pages/power/power"] .pw-row-top { display: flex; justify-content: space-between; align-items: baseline; }
[data-route="pages/power/power"] .pw-name { font-size: calc(var(--rpx) * 32); color: #191919; font-weight: 500; }
[data-route="pages/power/power"] .pw-val { font-size: calc(var(--rpx) * 32); color: #191919; font-weight: 600; }
[data-route="pages/power/power"] .pw-mini { height: calc(var(--rpx) * 8); background: #f2f2f2; border-radius: calc(var(--rpx) * 999); margin: calc(var(--rpx) * 10) 0 calc(var(--rpx) * 8); overflow: hidden; }
[data-route="pages/power/power"] .pw-mini-in { height: 100%; background: #07c160; border-radius: calc(var(--rpx) * 999); }
[data-route="pages/power/power"] .pw-sub { font-size: calc(var(--rpx) * 24); color: #888888; }
[data-route="pages/power/power"] .pw-tip { margin-top: calc(var(--rpx) * 14); font-size: calc(var(--rpx) * 24); color: #888888; background: #f7f7f7; border-radius: calc(var(--rpx) * 12); padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16); }
[data-route="pages/power/power"] .pw-chart { display: flex; align-items: flex-end; justify-content: space-between; height: calc(var(--rpx) * 140); padding-top: calc(var(--rpx) * 10); }
[data-route="pages/power/power"] .pw-col { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; }
[data-route="pages/power/power"] .pw-col-bar { width: calc(var(--rpx) * 18); background: #e5e5e5; border-radius: calc(var(--rpx) * 6) calc(var(--rpx) * 6) 0 0; }
[data-route="pages/power/power"] .pw-col-bar.up { background: #07c160; }
[data-route="pages/power/power"] .pw-col-day { font-size: calc(var(--rpx) * 20); color: #b2b2b2; margin-top: calc(var(--rpx) * 8); }
[data-route="pages/power/power"] .pw-line { font-size: calc(var(--rpx) * 28); color: #191919; padding: calc(var(--rpx) * 16) 0; border-top: calc(var(--rpx) * 1) solid #f2f2f2; }
[data-route="pages/power/power"] .pw-line:first-of-type { border-top: none; }
[data-route="pages/power/power"] .pw-rank-me { display: flex; align-items: baseline; justify-content: space-between; }
[data-route="pages/power/power"] .pw-rank-me-no { font-size: calc(var(--rpx) * 40); font-weight: 600; color: #191919; }
[data-route="pages/power/power"] .pw-rank-me-sub { font-size: calc(var(--rpx) * 28); color: #888888; }
[data-route="pages/power/power"] .pw-rank-row { display: flex; align-items: center; padding: calc(var(--rpx) * 18) 0; border-top: calc(var(--rpx) * 1) solid #f2f2f2; }
[data-route="pages/power/power"] .pw-rank-row.me { background: #f7f7f7; border-radius: calc(var(--rpx) * 12); padding-left: calc(var(--rpx) * 12); padding-right: calc(var(--rpx) * 12); }
[data-route="pages/power/power"] .pw-rank-no { width: calc(var(--rpx) * 70); font-size: calc(var(--rpx) * 28); color: #b2b2b2; font-weight: 500; }
[data-route="pages/power/power"] .pw-rank-t { flex: 1; font-size: calc(var(--rpx) * 28); color: #191919; }
[data-route="pages/power/power"] .pw-rank-v { font-size: calc(var(--rpx) * 32); color: #191919; font-weight: 600; }
[data-route="pages/power/power"] .pw-rank-me-tag { margin-left: calc(var(--rpx) * 12); font-size: calc(var(--rpx) * 20); background: #07c160; color: #ffffff; border-radius: calc(var(--rpx) * 6); padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10); }
[data-route="pages/power/power"] .pw-empty { font-size: calc(var(--rpx) * 24); color: #b2b2b2; text-align: center; padding: calc(var(--rpx) * 20) 0; }
[data-route="pages/power/power"] .pw-audit { background: #f7f7f7; border-radius: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 24); }
[data-route="pages/power/power"] .pw-audit-line { font-size: calc(var(--rpx) * 24); color: #888888; line-height: 1.7; }
[data-route="pages/power/power"] .pw-login { padding: calc(var(--rpx) * 40) 0; }
[data-route="pages/power/power"] .pw-btn { background: #07c160; color: #ffffff; font-size: calc(var(--rpx) * 32); border-radius: calc(var(--rpx) * 10); padding: calc(var(--rpx) * 22) 0; }
[data-route="pages/power/power"] .pw-err { text-align: center; color: #fa5151; font-size: calc(var(--rpx) * 28); padding: calc(var(--rpx) * 20) 0; }
[data-route="pages/power/power"] /* 榜单口径说明（v4.85 榜单方案 A） */
.pw-note {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
  line-height: 1.6;
}



/* ---- pages/invite/invite.wxss ---- */
[data-route="pages/invite/invite"] /**
 * 邀请家长（v4.85 · B-3 / G-13）
 * 字号守微信规范：正文 calc(var(--rpx) * 28) / 次要 calc(var(--rpx) * 24) / 辅助最小 calc(var(--rpx) * 22)
 */
.page-wrap {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pages/invite/invite"] .loading {
  padding: calc(var(--rpx) * 120) 0;
  text-align: center;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/invite/invite"] /* 屏外画布：不能用 display:none，否则拿不到 canvas 节点 */
.poster-canvas {
  position: fixed;
  left: calc(var(--rpx) * -2000);
  top: 0;
  width: 600px;
  height: 800px;
  z-index: -1;
}
[data-route="pages/invite/invite"] /* ---------- 登录 ---------- */
.login-card {
  text-align: center;
}
[data-route="pages/invite/invite"] .login-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/invite/invite"] .login-card .btn-primary {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/invite/invite"] /* ---------- ① 专属码 ---------- */
.code-card {
  text-align: center;
}
[data-route="pages/invite/invite"] .code-title {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pages/invite/invite"] .code-num {
  margin: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 56);
  font-weight: 600;
  color: #07c160;
  letter-spacing: calc(var(--rpx) * 2);
  line-height: 1.2;
  word-break: break-all;
}
[data-route="pages/invite/invite"] .code-hint {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pages/invite/invite"] .code-btns {
  display: flex;
  gap: calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/invite/invite"] .code-btns button {
  flex: 1;
  margin: 0;
}
[data-route="pages/invite/invite"] /* v4.86.192：海报主按钮下的次行操作（朋友圈引导 / 保存到相册）。
   朋友圈没有程序拉起的转发口子（微信只许右上角 ··· 进）⇒ 做成小键 + 弹窗引导；
   保存到相册从主键降到这里（主键位让给「分享给朋友」）。 */
.poster-sub-btns {
  margin-top: calc(var(--rpx) * 20);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: calc(var(--rpx) * 8);
}
[data-route="pages/invite/invite"] .poster-sub-btn {
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 28);
  font-size: calc(var(--rpx) * 24);
  color: #666666;
}
[data-route="pages/invite/invite"] .poster-sub-hover {
  color: #07c160;
}
[data-route="pages/invite/invite"] .poster-sub-sep {
  width: calc(var(--rpx) * 2);
  height: calc(var(--rpx) * 26);
  background: #e0e0e0;
}
[data-route="pages/invite/invite"] /* ---------- ② 海报 ---------- */
.poster-wrap {
  margin-top: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  overflow: hidden;
  background: #f7f7f7;
}
[data-route="pages/invite/invite"] .poster-img {
  width: 100%;
  display: block;
}
[data-route="pages/invite/invite"] .poster-empty {
  margin-top: calc(var(--rpx) * 24);
  height: calc(var(--rpx) * 320);
  border-radius: calc(var(--rpx) * 16);
  background: #f7f7f7;
  border: calc(var(--rpx) * 2) dashed #e5e5e5;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
[data-route="pages/invite/invite"] .poster-empty-icon {
  font-size: calc(var(--rpx) * 64);
  line-height: 1;
}
[data-route="pages/invite/invite"] .poster-empty-text {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pages/invite/invite"] .poster-btns {
  display: flex;
  gap: calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/invite/invite"] .poster-btns button {
  flex: 1;
  margin: 0;
}
[data-route="pages/invite/invite"] /* ---------- ③ 进度 ---------- */
.invite-head {
  display: flex;
  align-items: baseline;
  margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 4);
}
[data-route="pages/invite/invite"] .invite-num {
  font-size: calc(var(--rpx) * 64);
  font-weight: 600;
  color: #07c160;
  line-height: 1;
}
[data-route="pages/invite/invite"] .invite-unit {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pages/invite/invite"] .tier-list {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/invite/invite"] .tier {
  padding: calc(var(--rpx) * 20) 0;
  border-top: calc(var(--rpx) * 2) solid #f2f2f2;
}
[data-route="pages/invite/invite"] .tier:first-child {
  border-top: none;
}
[data-route="pages/invite/invite"] .tier-head {
  display: flex;
  align-items: center;
}
[data-route="pages/invite/invite"] .tier-badge {
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  flex-shrink: 0;
  border-radius: 50%;
  background: #f2f2f2;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/invite/invite"] .tier-got .tier-badge {
  background: #e9f8ef;
  color: #0a7a3d;
}
[data-route="pages/invite/invite"] .tier-text {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 20);
}
[data-route="pages/invite/invite"] .tier-name {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  font-weight: 500;
}
[data-route="pages/invite/invite"] .tier-got .tier-name {
  color: #0a7a3d;
}
[data-route="pages/invite/invite"] .tier-desc {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/invite/invite"] .tier-grants {
  margin: calc(var(--rpx) * 12) 0 0 calc(var(--rpx) * 84);
}
[data-route="pages/invite/invite"] .tier-grant {
  display: flex;
  align-items: flex-start;
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pages/invite/invite"] .tier-grant-dot {
  flex-shrink: 0;
  width: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  line-height: 1.6;
}
[data-route="pages/invite/invite"] .tier-grant-text {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  line-height: 1.6;
}
[data-route="pages/invite/invite"] /* ---------- 进度条 ---------- */
.bar-wrap {
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 8);
}
[data-route="pages/invite/invite"] .bar-bg {
  height: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 8);
  background: #f2f2f2;
  overflow: hidden;
}
[data-route="pages/invite/invite"] .bar-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 8);
  background: #07c160;
  transition: width 240ms ease;
}
[data-route="pages/invite/invite"] .bar-tip {
  display: block;
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
}
[data-route="pages/invite/invite"] /* ---------- ④ 双边助力 ---------- */
.assist-stat {
  display: flex;
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 8);
}
[data-route="pages/invite/invite"] .assist-cell {
  flex: 1;
  text-align: center;
  padding: calc(var(--rpx) * 16) 0;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pages/invite/invite"] .assist-cell + .assist-cell {
  margin-left: calc(var(--rpx) * 20);
}
[data-route="pages/invite/invite"] .assist-num {
  display: block;
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #07c160;
  line-height: 1.1;
}
[data-route="pages/invite/invite"] .assist-label {
  display: block;
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pages/invite/invite"] .assist-list {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/invite/invite"] .assist-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;
  border-top: calc(var(--rpx) * 2) solid #f2f2f2;
}
[data-route="pages/invite/invite"] .assist-row:first-child {
  border-top: none;
}
[data-route="pages/invite/invite"] .assist-avatar {
  width: calc(var(--rpx) * 72);
  height: calc(var(--rpx) * 72);
  flex-shrink: 0;
  border-radius: 50%;
  background: #f2f2f2;
}
[data-route="pages/invite/invite"] .assist-info {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 20);
}
[data-route="pages/invite/invite"] .assist-name {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/invite/invite"] .assist-tip {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pages/invite/invite"] .assist-btn {
  flex-shrink: 0;
  margin: 0 0 0 calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 28);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  line-height: 2.2;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pages/invite/invite"] .assist-btn-done {
  background: #f2f2f2;
  color: #b2b2b2;
}
[data-route="pages/invite/invite"] /* ---------- ⑤ 码台账 ---------- */
.qr-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 18) 0;
  border-top: calc(var(--rpx) * 2) solid #f2f2f2;
}
[data-route="pages/invite/invite"] .qr-row:first-child {
  border-top: none;
}
[data-route="pages/invite/invite"] .qr-scene {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  word-break: break-all;
}
[data-route="pages/invite/invite"] .qr-stat {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/invite/invite"] /* ---------- ⑤ 规则 ---------- */
.rule-card .muted {
  line-height: 1.7;
}
[data-route="pages/invite/invite"] /* ---------- 通用 ---------- */
.card-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/invite/invite"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pages/invite/invite"] .err {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #feeceb;
  color: #fa5151;
  font-size: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pages/invite/invite"] /* ---------- v4.86.193：邀请名单弹窗（谁进来了） ---------- */
.invited-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pages/invite/invite"] .invited-open {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  padding: calc(var(--rpx) * 8) 0;
}
[data-route="pages/invite/invite"] .invited-open-hover {
  opacity: 0.7;
}
[data-route="pages/invite/invite"] .inv-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 60;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/invite/invite"] .inv-box {
  width: calc(var(--rpx) * 620);
  max-height: 76vh;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 28) calc(var(--rpx) * 24);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
}
[data-route="pages/invite/invite"] .inv-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #191919;
  text-align: center;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pages/invite/invite"] .inv-count {
  font-weight: 400;
  color: #888888;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/invite/invite"] .inv-list {
  flex: 1;
  max-height: 52vh;
  min-height: calc(var(--rpx) * 160);
}
[data-route="pages/invite/invite"] .inv-row {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/invite/invite"] .inv-avatar {
  width: calc(var(--rpx) * 84);
  height: calc(var(--rpx) * 84);
  border-radius: 50%;
  background: #f2f2f2;
  flex-shrink: 0;
}
[data-route="pages/invite/invite"] .inv-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/invite/invite"] .inv-name-t {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  font-weight: 500;
}
[data-route="pages/invite/invite"] .inv-no {
  font-size: calc(var(--rpx) * 20);
  color: #b2b2b2;
  margin-left: calc(var(--rpx) * 12);
}
[data-route="pages/invite/invite"] .inv-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/invite/invite"] .inv-lv {
  color: #4a7c59;
}
[data-route="pages/invite/invite"] .inv-paid {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  background: #f2f2f2;
  color: #999999;
}
[data-route="pages/invite/invite"] .inv-paid-on {
  background: #e8f7ee;
  color: #07c160;
}
[data-route="pages/invite/invite"] .inv-empty {
  padding: calc(var(--rpx) * 60) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pages/invite/invite"] .inv-close {
  margin-top: calc(var(--rpx) * 24);
}



/* ---- pages/benefit/benefit.wxss ---- */
[data-route="pages/benefit/benefit"] /**
 * 阶梯权益（v4.85 · B-4 / G-17）
 * 字号守微信规范：正文 calc(var(--rpx) * 28) / 次要 calc(var(--rpx) * 24) / 辅助最小 calc(var(--rpx) * 22)
 */
.page-wrap {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pages/benefit/benefit"] .loading {
  padding: calc(var(--rpx) * 120) 0;
  text-align: center;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/benefit/benefit"] /* ---------- 登录 ---------- */
.login-card {
  text-align: center;
}
[data-route="pages/benefit/benefit"] .login-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/benefit/benefit"] .login-card .btn-primary {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/benefit/benefit"] /* ---------- 进度 ---------- */
.invite-head {
  display: flex;
  align-items: baseline;
  margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 4);
}
[data-route="pages/benefit/benefit"] .invite-num {
  font-size: calc(var(--rpx) * 64);
  font-weight: 600;
  color: #07c160;
  line-height: 1;
}
[data-route="pages/benefit/benefit"] .invite-unit {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pages/benefit/benefit"] .bar-wrap {
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 8);
}
[data-route="pages/benefit/benefit"] .bar-bg {
  height: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 8);
  background: #f2f2f2;
  overflow: hidden;
}
[data-route="pages/benefit/benefit"] .bar-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 8);
  background: #07c160;
  transition: width 240ms ease;
}
[data-route="pages/benefit/benefit"] .bar-tip {
  display: block;
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
}
[data-route="pages/benefit/benefit"] /* ---------- 档位卡 ---------- */
.tier-head {
  display: flex;
  align-items: center;
}
[data-route="pages/benefit/benefit"] .tier-badge {
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  flex-shrink: 0;
  border-radius: 50%;
  background: #f2f2f2;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/benefit/benefit"] .tier-badge-got {
  background: #e9f8ef;
  color: #0a7a3d;
}
[data-route="pages/benefit/benefit"] .tier-text {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 20);
}
[data-route="pages/benefit/benefit"] .tier-name {
  font-size: calc(var(--rpx) * 32);
  color: #191919;
  font-weight: 500;
}
[data-route="pages/benefit/benefit"] .tier-name-got {
  color: #0a7a3d;
}
[data-route="pages/benefit/benefit"] .tier-desc {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pages/benefit/benefit"] .tier-state {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pages/benefit/benefit"] .tier-state.on {
  color: #0a7a3d;
}
[data-route="pages/benefit/benefit"] .grant-list {
  margin: calc(var(--rpx) * 20) 0 0 calc(var(--rpx) * 84);
  padding-top: calc(var(--rpx) * 16);
  border-top: calc(var(--rpx) * 2) solid #f2f2f2;
}
[data-route="pages/benefit/benefit"] .grant-row {
  display: flex;
  align-items: flex-start;
  margin-top: calc(var(--rpx) * 10);
}
[data-route="pages/benefit/benefit"] .grant-dot {
  flex-shrink: 0;
  width: calc(var(--rpx) * 28);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  line-height: 1.6;
}
[data-route="pages/benefit/benefit"] .grant-text {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 28);
  color: #4c8f68;
  line-height: 1.6;
}
[data-route="pages/benefit/benefit"] /* ---------- 规则 ---------- */
.rule-card .muted {
  line-height: 1.7;
}
[data-route="pages/benefit/benefit"] /* ---------- 通用 ---------- */
.card-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/benefit/benefit"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pages/benefit/benefit"] .code-btns {
  display: flex;
  gap: calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/benefit/benefit"] .code-btns button {
  flex: 1;
  margin: 0;
}
[data-route="pages/benefit/benefit"] .err {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #feeceb;
  color: #fa5151;
  font-size: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 12);
}



/* ---- pages/team/team.wxss ---- */
[data-route="pages/team/team"] /**
 * 组队打卡（v4.85 · B-4 / G-17）
 * 字号守微信规范：正文 calc(var(--rpx) * 28) / 次要 calc(var(--rpx) * 24) / 辅助最小 calc(var(--rpx) * 22)
 */
.page-wrap {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pages/team/team"] .loading {
  padding: calc(var(--rpx) * 120) 0;
  text-align: center;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/team/team"] /* ---------- 登录 ---------- */
.login-card {
  text-align: center;
}
[data-route="pages/team/team"] .login-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/team/team"] .login-card .btn-primary {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/team/team"] /* ---------- 队伍头 ---------- */
.team-head {
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pages/team/team"] .team-name {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #191919;
}
[data-route="pages/team/team"] .team-code {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/team/team"] /* ---------- 目标 ---------- */
.goal-line {
  display: flex;
  align-items: baseline;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/team/team"] .goal-num {
  font-size: calc(var(--rpx) * 64);
  font-weight: 600;
  color: #07c160;
  line-height: 1;
}
[data-route="pages/team/team"] .goal-of {
  margin-left: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pages/team/team"] .goal-label {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/team/team"] .bar-bg {
  height: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 8);
  background: #f2f2f2;
  overflow: hidden;
}
[data-route="pages/team/team"] .bar-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 8);
  background: #07c160;
  transition: width 240ms ease;
}
[data-route="pages/team/team"] .bar-tip {
  display: block;
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  line-height: 1.6;
}
[data-route="pages/team/team"] /* ---------- 队友 ---------- */
.mate-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;
  border-top: calc(var(--rpx) * 2) solid #f2f2f2;
}
[data-route="pages/team/team"] .mate-row:first-of-type {
  border-top: none;
}
[data-route="pages/team/team"] .mate-avatar {
  width: calc(var(--rpx) * 72);
  height: calc(var(--rpx) * 72);
  flex-shrink: 0;
  border-radius: 50%;
  background: #f2f2f2;
}
[data-route="pages/team/team"] .mate-name {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/team/team"] .mate-days {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pages/team/team"] /* ---------- 输入 ---------- */
.inp {
  margin: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pages/team/team"] /* ---------- 退出 ---------- */
.quit-link {
  margin-top: calc(var(--rpx) * 40);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pages/team/team"] /* ---------- 规则 ---------- */
.rule-card .muted {
  line-height: 1.7;
}
[data-route="pages/team/team"] /* ---------- 通用 ---------- */
.card-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/team/team"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pages/team/team"] .code-btns {
  display: flex;
  gap: calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/team/team"] .code-btns button {
  flex: 1;
  margin: 0;
}
[data-route="pages/team/team"] button.btn-primary {
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 12);
  line-height: 2.4;
}
[data-route="pages/team/team"] button.btn-primary[disabled] {
  background: #a6e0be;
  color: #ffffff;
}
[data-route="pages/team/team"] button.btn-ghost {
  background: #ffffff;
  color: #07c160;
  font-size: calc(var(--rpx) * 28);
  border: calc(var(--rpx) * 2) solid #07c160;
  border-radius: calc(var(--rpx) * 12);
  line-height: 2.4;
}
[data-route="pages/team/team"] button.btn-ghost[disabled] {
  color: #a6e0be;
  border-color: #a6e0be;
}
[data-route="pages/team/team"] .err {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #feeceb;
  color: #fa5151;
  font-size: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 12);
}



/* ---- pages/redeem/redeem.wxss ---- */
[data-route="pages/redeem/redeem"] /* 兑换点评卡（G-19）· A 层字号只走 20/24/28/32/40 五档 */

.rc-card {
  text-align: center;
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 32);
}
[data-route="pages/redeem/redeem"] .rc-badge {
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  font-weight: 600;
}
[data-route="pages/redeem/redeem"] .rc-code {
  font-size: calc(var(--rpx) * 32);
  color: #222;
  letter-spacing: calc(var(--rpx) * 2);
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 24);
}
[data-route="pages/redeem/redeem"] .rc-tip {
  display: block;
  margin-bottom: calc(var(--rpx) * 28);
  line-height: 1.6;
}
[data-route="pages/redeem/redeem"] .rc-btn {
  width: 100%;
}
[data-route="pages/redeem/redeem"] /* v7.0.096 兑换前权益预览（云库 104 号）：面额/有效期/来源，字号只走 24/28/32 三档 */
.rc-prev {
  margin: 0 0 calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 24);
  background: #f0f9eb;
  border-radius: calc(var(--rpx) * 10);
  text-align: left;
}
[data-route="pages/redeem/redeem"] .rc-prev-bad {
  background: #f7f7f7;
}
[data-route="pages/redeem/redeem"] .rc-prev-head {
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  font-weight: 600;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pages/redeem/redeem"] .rc-prev-bad .rc-prev-head {
  color: #888;
}
[data-route="pages/redeem/redeem"] .rc-prev-row {
  display: flex;
  justify-content: space-between;
  line-height: 1.8;
}
[data-route="pages/redeem/redeem"] .rc-prev-k {
  font-size: calc(var(--rpx) * 24);
  color: #888;
}
[data-route="pages/redeem/redeem"] .rc-prev-v {
  font-size: calc(var(--rpx) * 28);
  color: #222;
}
[data-route="pages/redeem/redeem"] .rc-prev-img {
  width: calc(var(--rpx) * 240);
  height: calc(var(--rpx) * 240);
  margin: calc(var(--rpx) * 16) auto 0;
  display: block;
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pages/redeem/redeem"] .rc-result {
  font-size: calc(var(--rpx) * 32);
  color: #222;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pages/redeem/redeem"] .rc-result-ok {
  color: #07c160;
  font-weight: 600;
}
[data-route="pages/redeem/redeem"] .rc-actions {
  display: flex;
  justify-content: center;
  gap: calc(var(--rpx) * 40);
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/redeem/redeem"] .rc-link {
  min-height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  padding: 0 calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 28);
  color: #576b95;
}
[data-route="pages/redeem/redeem"] .rc-manual {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/redeem/redeem"] .rc-input {
  flex: 1;
  height: calc(var(--rpx) * 72);
  padding: 0 calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  background: #f5f5f5;
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pages/redeem/redeem"] .rc-manual-btn {
  min-width: calc(var(--rpx) * 140);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 28);
  color: #fff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pages/redeem/redeem"] .rc-help {
  text-align: left;
}
[data-route="pages/redeem/redeem"] .rc-help .muted {
  line-height: 1.7;
}
[data-route="pages/redeem/redeem"] /* v4.86.454：失败提示补样式。
 *  .err —— 卡号不对 / 卡已领过 / 扫码失败都往这里写。原来全站没给它样式，
 *  它跟正文同一个字号同一个色，用户扫一眼根本看不出这是一条失败提示。 */
.err {
  margin: calc(var(--rpx) * 20) 0 0;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 10);
  background: #feeceb;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}




/* ---- pages/voice/voice.wxss ---- */
[data-route="pages/voice/voice"] /* 语音陪练（学生端）
 * 规矩：A 层字号只有 20/24/28/32/40（≥46 是展示级），颜色用 app.wxss 那套。
 * 这一页是「孩子不看屏」的练字，所以屏上不放台词：
 * 猫在说什么 → 靠脉冲的节奏和颜色；该孩子了 → 靠一个键 + 一下震动。
 *
 * 底色：全屏黑（老板 2026-10-24 截图后的定稿）。
 * 理由不是好看：黑底在台灯下不刺眼、不反光，孩子抬眼扫一下也不会被亮白屏
 * 抓走注意力。所以这一页所有区块都从「白卡」改成「黑卡」，
 * 亮色只剩三样：猫、绿色（在说/在听）、以及那一个该按的键。
 */

page {
  background: #000000;
}
[data-route="pages/voice/voice"] .page-wrap {
  min-height: calc(var(--vh) * 100);
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 32) calc(var(--rpx) * 60);
  box-sizing: border-box;
  background: #000000;
}
[data-route="pages/voice/voice"] .note {
  margin-top: calc(var(--rpx) * 160);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #8c8c8c;
}
[data-route="pages/voice/voice"] /* ---------- 打不开（这一态必须出字） ---------- */

.stopcard {
  margin-top: calc(var(--rpx) * 120);
  background: #141414;
  border-radius: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 28);
}
[data-route="pages/voice/voice"] .stoptext {
  font-size: calc(var(--rpx) * 28);
  color: #ededed;
  line-height: 1.8;
}
[data-route="pages/voice/voice"] /* ---------- 开始前：只有一句口号 ---------- */

.gate {
  position: relative;
  padding-top: calc(var(--rpx) * 140);
  text-align: center;
}
[data-route="pages/voice/voice"] .halo {
  position: absolute;
  top: calc(var(--rpx) * 100);
  left: 50%;
  width: calc(var(--rpx) * 400);
  height: calc(var(--rpx) * 400);
  margin-left: calc(var(--rpx) * -200);
  border-radius: 50%;
  background: #0d2318;
}
[data-route="pages/voice/voice"] .gate .cat {
  position: relative;
  z-index: 2;
  width: calc(var(--rpx) * 240);
  height: calc(var(--rpx) * 240);
  border-radius: 50%;
  background: #141414;
}
[data-route="pages/voice/voice"] .slogan {
  margin-top: calc(var(--rpx) * 56);
  font-size: calc(var(--rpx) * 40);
  color: #f5f5f5;
  letter-spacing: calc(var(--rpx) * 2);
  line-height: 1.6;
}
[data-route="pages/voice/voice"] .btn-start {
  margin: calc(var(--rpx) * 96) auto 0;
  width: calc(var(--rpx) * 360);
  padding: calc(var(--rpx) * 26) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pages/voice/voice"] /* ---------- 猫的状态（说话 / 在听 / 等写 / 等拍） ---------- */

.stage {
  position: relative;
  height: calc(var(--rpx) * 520);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/voice/voice"] .stage .cat {
  position: relative;
  z-index: 3;
  width: calc(var(--rpx) * 260);
  height: calc(var(--rpx) * 260);
  border-radius: 50%;
  background: #141414;
}
[data-route="pages/voice/voice"] /* 进度：一条细线，不写百分比 —— 看得见「往前走了」就够，不用读 */
.trace {
  position: absolute;
  top: calc(var(--rpx) * 8);
  left: calc(var(--rpx) * 60);
  right: calc(var(--rpx) * 60);
  height: calc(var(--rpx) * 4);
  border-radius: calc(var(--rpx) * 999);
  background: #262626;
  overflow: hidden;
}
[data-route="pages/voice/voice"] .trace-fill {
  height: calc(var(--rpx) * 4);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
}
[data-route="pages/voice/voice"] .ring {
  position: absolute;
  z-index: 1;
  width: calc(var(--rpx) * 260);
  height: calc(var(--rpx) * 260);
  border-radius: 50%;
  border: calc(var(--rpx) * 4) solid #07c160;
  opacity: 0;
}
[data-route="pages/voice/voice"] /* 猫在说：一圈一圈往外走，慢一点，像呼吸 */
.talk .ring {
  border-color: #07c160;
  animation: pulse 2.6s ease-out infinite;
}
[data-route="pages/voice/voice"] .talk .r2 {
  animation-delay: 1.3s;
}
[data-route="pages/voice/voice"] .talk .cat {
  animation: breath 2.6s ease-in-out infinite;
}
[data-route="pages/voice/voice"] /* 在听：换绿，快一拍，再叠四根声波 */
.listen .ring {
  border-color: #07c160;
  animation: pulse 1.6s ease-out infinite;
}
[data-route="pages/voice/voice"] .listen .r2 {
  animation-delay: 0.8s;
}
[data-route="pages/voice/voice"] /* 等你写：虚线一格，停住不动 —— 动的东西会招人看 */
.write .ring {
  border-color: #4d4d4d;
  border-style: dashed;
  opacity: 1;
  animation: none;
}
[data-route="pages/voice/voice"] .write .r1 {
  width: calc(var(--rpx) * 300);
  height: calc(var(--rpx) * 300);
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pages/voice/voice"] .write .r2 {
  display: none;
}
[data-route="pages/voice/voice"] /* 等你拍：取景框的四个角 */
.photo .ring {
  border-color: #6d84b6;
  border-radius: calc(var(--rpx) * 24);
  opacity: 1;
  animation: none;
}
[data-route="pages/voice/voice"] .photo .r1 {
  width: calc(var(--rpx) * 320);
  height: calc(var(--rpx) * 240);
}
[data-route="pages/voice/voice"] .photo .r2 {
  display: none;
}
[data-route="pages/voice/voice"] /* 声波：只在「在听」的时候出现 */
.bars {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 4;
  display: flex;
  align-items: flex-end;
  height: calc(var(--rpx) * 60);
  margin: calc(var(--rpx) * -30) 0 0 calc(var(--rpx) * -46);
}
[data-route="pages/voice/voice"] .bar {
  width: calc(var(--rpx) * 8);
  margin: 0 calc(var(--rpx) * 4);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  height: calc(var(--rpx) * 16);
  animation: wave 1s ease-in-out infinite;
}
[data-route="pages/voice/voice"] .b2 { animation-delay: 0.15s; }
[data-route="pages/voice/voice"] .b3 { animation-delay: 0.3s; }
[data-route="pages/voice/voice"] .b4 { animation-delay: 0.45s; }


@keyframes pulse {
  0% { transform: scale(1); opacity: 0.55; }
  70% { opacity: 0.08; }
  100% { transform: scale(1.5); opacity: 0; }
}


@keyframes breath {
  0% { transform: scale(1); }
  50% { transform: scale(1.03); }
  100% { transform: scale(1); }
}


@keyframes wave {
  0% { height: calc(var(--rpx) * 14); }
  50% { height: calc(var(--rpx) * 52); }
  100% { height: calc(var(--rpx) * 14); }
}
[data-route="pages/voice/voice"] /* ---------- 孩子的键 ---------- */

.ctl {
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pages/voice/voice"] .choices {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/voice/voice"] .choice {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 40);
  font-size: calc(var(--rpx) * 32);
  color: #ededed;
  background: #1f1f1f;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pages/voice/voice"] .acts {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/voice/voice"] .actbtn {
  margin-top: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 24) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  color: #4ecb8b;
  background: #0f2419;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pages/voice/voice"] .actbtn:first-child {
  margin-top: 0;
}
[data-route="pages/voice/voice"] .btn-main {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 30) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 40);
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pages/voice/voice"] .btn-ghost {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 24) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  color: #a9bde0;
  background: #171b22;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pages/voice/voice"] .btn-quiet {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 24) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #8c8c8c;
  background: #1a1a1a;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pages/voice/voice"] /* ---------- 收尾 / 例外 ---------- */

.card {
  background: #141414;
  border-radius: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 24);
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/voice/voice"] .title {
  font-size: calc(var(--rpx) * 32);
  color: #f5f5f5;
  font-weight: 500;
}
[data-route="pages/voice/voice"] .body {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  color: #8c8c8c;
  line-height: 1.7;
}
[data-route="pages/voice/voice"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #8c8c8c;
}
[data-route="pages/voice/voice"] .report {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 28);
  color: #ededed;
  line-height: 1.8;
}
[data-route="pages/voice/voice"] .row {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pages/voice/voice"] /* 猫真的出不了声时才出字：这里是最后一格，平时空着 */
.silent {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #1a1a1a;
  border-radius: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 32);
  color: #f0f0f0;
  line-height: 1.8;
}
[data-route="pages/voice/voice"] .gap {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  background: #241d10;
  border-radius: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  color: #d8a850;
  line-height: 1.6;
}
[data-route="pages/voice/voice"] .foot {
  margin-top: calc(var(--rpx) * 28);
  text-align: center;
}
[data-route="pages/voice/voice"] .footlink {
  font-size: calc(var(--rpx) * 24);
  color: #6b6b6b;
}
[data-route="pages/voice/voice"] .footdot {
  margin: 0 calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #3a3a3a;
}
[data-route="pages/voice/voice"] .footnote {
  font-size: calc(var(--rpx) * 24);
  color: #3a3a3a;
}
[data-route="pages/voice/voice"] .err {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #ff7b6b;
  line-height: 1.6;
}
[data-route="pages/voice/voice"] /* ------------------------------------------------ 镜头（看手和纸）
 * 木哥 2026-10-24 22:0x：「你的摄像头要能够看到学员的手部和作业纸的全部」。
 * 放在右上角一小块：只是让孩子把手机架好时有个参照，不是让他盯着看。
 * 半透明压暗、圆角、不描边 —— 屏上唯一亮的东西仍然是那只猫。
 */
.cam {
  position: fixed;
  top: calc(var(--rpx) * 24);
  right: calc(var(--rpx) * 24);
  width: calc(var(--rpx) * 168);
  height: calc(var(--rpx) * 168);
  border-radius: calc(var(--rpx) * 24);
  overflow: hidden;
  opacity: 0.34;
  z-index: 5;
}
[data-route="pages/voice/voice"] .camnote {
  position: fixed;
  bottom: calc(var(--rpx) * 120);
  left: 0;
  right: 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #6b6b6b;
}
[data-route="pages/voice/voice"] /* 开镜头时的常驻说明（合规 02 #6） */
.camline {
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: rgba(0, 0, 0, 0.42);
  margin: calc(var(--rpx) * 8) 0 0;
}



/* ---- pages/msg/msg.wxss ---- */
[data-route="pages/msg/msg"] /* 消息 · tab 第 2 页（v4.86.533 起仿微信主页；v4.86.535 加平台通知行；
   v4.86.554 撤掉「木老师双身份」两栏 —— 客服就是墨灵猫，一页到底）——
   白底、头像圆角方、行高 104、灰分隔；字号只用五档（20/24/28/32/40） */
.page {
  min-height: calc(var(--vh) * 100);
  background: #f7f7f7;
  padding: 0 0 calc(var(--rpx) * 40);
  box-sizing: border-box;
}
[data-route="pages/msg/msg"] /* 顶栏 logo 行：直接用全局 .app-header（与打卡/我的完全一致，练字猫咪锁死，见 test-533）*/

.msg-loading {
  padding: calc(var(--rpx) * 60) calc(var(--rpx) * 32);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #999999;
}
[data-route="pages/msg/msg"] /* 加载条（v4.86.533）：全站口径是「条」不是「正在…」文字（见 tools/test-loading297） */
.msg-loadbar {
  width: calc(var(--rpx) * 180);
  height: calc(var(--rpx) * 8);
  margin: 0 auto;
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(90deg, #ededed, #dcdcdc, #ededed);
}
[data-route="pages/msg/msg"] .msg-group-label {
  font-size: calc(var(--rpx) * 24);
  color: #8a8a8a;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 32) calc(var(--rpx) * 8);
}
[data-route="pages/msg/msg"] .msg-list {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  margin: 0 calc(var(--rpx) * 24);
  overflow: hidden;
}
[data-route="pages/msg/msg"] .msg-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28);
  border-bottom: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pages/msg/msg"] .msg-row:last-child {
  border-bottom: none;
}
[data-route="pages/msg/msg"] .msg-row-hover {
  background: #f2f2f2;
}
[data-route="pages/msg/msg"] /* v4.86.547（木哥令「其他都使用自己的头像，把我的页面的头像默认过来即可」）：
   头像位从「名字首字 + 彩底」改成真头像图 —— 有对方头像就用对方的，没有就用
   「我的」页那张默认猫头（logo-circle.png）。四种彩底（客服绿/老师蓝/同学橙/系统灰蓝）
   随之撤掉：底色由图片自己给，缺图时这里兜一层浅灰，不闪白块。 */
.msg-avatar {
  width: calc(var(--rpx) * 92);
  height: calc(var(--rpx) * 92);
  border-radius: calc(var(--rpx) * 16);
  flex-shrink: 0;
  display: block;
  background: #f2f2f2;
}
[data-route="pages/msg/msg"] /* 平台通知（系统那条线）—— 发现页同款图标块：底色直接取发现页「提醒」那一格的天蓝
   （本来画的就是同一枚铃铛），不抢客服的绿，也不再用原来那块灰蓝 */
.msg-sys-tile {
  background: #10aeff;
}
[data-route="pages/msg/msg"] /* v7.0.081（木哥令「管理员·信息反馈单独一条」）：管理员线的图标块 ——
   暖橙底 + 白线对话气泡（.ico-gl-fb，app.wxss 全站一份），
   与平台通知的天蓝、客服的猫标各是一色，三行一眼分得清 */
.msg-fb-tile {
  background: #fa9d3b;
}
[data-route="pages/msg/msg"] .msg-main {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 24);
}
[data-route="pages/msg/msg"] .msg-row-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pages/msg/msg"] .msg-row-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pages/msg/msg"] .msg-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #1a1a1a;
}
[data-route="pages/msg/msg"] .msg-desc {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pages/msg/msg"] .msg-time {
  font-size: calc(var(--rpx) * 20);
  color: #b2b2b2;
}
[data-route="pages/msg/msg"] .msg-sub {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: calc(var(--rpx) * 480);
}
[data-route="pages/msg/msg"] .msg-badge {
  min-width: calc(var(--rpx) * 32);
  height: calc(var(--rpx) * 32);
  line-height: calc(var(--rpx) * 32);
  padding: 0 calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 999);
  background: #fa5151;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  text-align: center;
  box-sizing: border-box;
}
[data-route="pages/msg/msg"] .msg-arrow {
  font-size: calc(var(--rpx) * 32);
  color: #c8c8c8;
  margin-left: calc(var(--rpx) * 12);
}
[data-route="pages/msg/msg"] .msg-empty {
  margin: calc(var(--rpx) * 40) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 32);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  line-height: 1.7;
}
[data-route="pages/msg/msg"] /* v7.0.089（木哥令「好友列表式大栏目」）：栏目全空时的提示行 */
.msg-empty {
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 30);
  color: #9a9a9a;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/msg/msg"] /* ---- v7.0.177（木哥令，附微信截图两张）：左拉控制件 —— 蓝标未读/已读 · 橙不显示 ·
   红删除，仿微信主页同款。三颗钮绝对定位垫底，行 transform 拉开 calc(var(--rpx) * 390) 露出来；
   竖滑不抢（手势判定在 js），transition 只挂 transform 不卡滚动。 ---- */
.msg-swipe {
  position: relative;
  overflow: hidden;
}
[data-route="pages/msg/msg"] .msg-swipe-acts {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  display: flex;
}
[data-route="pages/msg/msg"] .msg-act {
  width: calc(var(--rpx) * 130);
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
}
[data-route="pages/msg/msg"] .msg-act-read {
  background: #576b95;
}
[data-route="pages/msg/msg"] .msg-act-hide {
  background: #e6a23c;
}
[data-route="pages/msg/msg"] .msg-act-del {
  background: #fa5151;
}
[data-route="pages/msg/msg"] .msg-swipe-row {
  position: relative;
  background: #ffffff;
  transition: transform 0.2s ease;
}
[data-route="pages/msg/msg"] .msg-swiped {
  transform: translateX(calc(var(--rpx) * -390));
}



/* ---- pages/msgchat/msgchat.wxss ---- */
[data-route="pages/msgchat/msgchat"] /* 聊天页（v4.86.537 微信化）——
   灰底 #ededed、时间居中灰字、头像贴气泡外侧（calc(var(--rpx) * 80) 圆角方）、
   左白右绿气泡（带小三角）、底部输入条 + 表情/加号面板、语音/图片/位置/红包/转账卡。
   字号只用五档：20 / 24 / 28 / 32 / 40（lint-style 硬口径）。 */
page {
  height: 100%;
}
[data-route="pages/msgchat/msgchat"] .mc-page {
  height: calc(var(--vh) * 100);
  display: flex;
  flex-direction: column;
  background: #ededed;
  box-sizing: border-box;
}
[data-route="pages/msgchat/msgchat"] .mc-flow {
  flex: 1;
  min-height: 0;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24) 0;
  box-sizing: border-box;
}
[data-route="pages/msgchat/msgchat"] .mc-tip {
  text-align: center;
  padding: calc(var(--rpx) * 60) 0;
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pages/msgchat/msgchat"] /* v4.86.549：点评页认单失败的退路（改用微信客服说），样式与旧点评页同款 */
.mc-tip-go {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  color: #8a6320;
}
[data-route="pages/msgchat/msgchat"] .mc-loadbar {
  width: calc(var(--rpx) * 180);
  height: calc(var(--rpx) * 8);
  margin: 0 auto;
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(90deg, #d9d9d9, #f0f0f0, #d9d9d9);
  animation: mc-load 1.1s linear infinite;
}


@keyframes mc-load {
  0% { opacity: 0.4; }
  50% { opacity: 1; }
  100% { opacity: 0.4; }
}
[data-route="pages/msgchat/msgchat"] /* 时间条：居中、灰、无气泡（微信口径） */
.mc-bar-time {
  text-align: center;
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pages/msgchat/msgchat"] /* 一行消息：头像 + 气泡，顶对齐 */
.mc-line {
  display: flex;
  align-items: flex-start;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pages/msgchat/msgchat"] .mc-line-mine {
  /* 自己的行：内容在前、头像在后（微信口径）—— 不能用 row-reverse，
     那会把头像排到气泡左边去（木哥 2026-10-26 20:1x 截图点名的那处） */
  flex-direction: row;
  justify-content: flex-end;
}
[data-route="pages/msgchat/msgchat"] /* 头像：微信是圆角方（不是正圆） */
.mc-ava {
  flex-shrink: 0;
  width: calc(var(--rpx) * 80);
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  border-radius: calc(var(--rpx) * 8);
  background: #5b7ea8;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  text-align: center;
  overflow: hidden;
}
[data-route="pages/msgchat/msgchat"] .mc-ava-mine {
  background: #07c160;
}
[data-route="pages/msgchat/msgchat"] /* 头像可点（v4.86.578：任何一条会话都能点进对方的个人主页），给一点按压反馈 */
.mc-ava-tap:active {
  opacity: 0.7;
}
[data-route="pages/msgchat/msgchat"] /* 发失败的红点（v4.86.578）：点一下重发 */
.mc-fail {
  flex-shrink: 0;
  width: calc(var(--rpx) * 36);
  height: calc(var(--rpx) * 36);
  line-height: calc(var(--rpx) * 36);
  margin: 0 calc(var(--rpx) * 4);
  border-radius: 50%;
  background: #fa5151;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  text-align: center;
}
[data-route="pages/msgchat/msgchat"] /* 发送中的气泡：淡一点，落定后回正（不是转圈，等也不耽误接着说） */
.mc-bubble-pending {
  opacity: 0.65;
}
[data-route="pages/msgchat/msgchat"] /* 两态常挂只切显隐（v4.86.578）：按住说话 / 输入框共用这一条 */
.mc-hide {
  display: none;
}
[data-route="pages/msgchat/msgchat"] /* 气泡 */
.mc-bubble {
  position: relative;
  max-width: 62%;
  margin: 0 calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 8);
  background: #ffffff;
  box-sizing: border-box;
}
[data-route="pages/msgchat/msgchat"] /* 小三角：微信那个尖，用边框拼 */
.mc-bubble::after {
  content: '';
  position: absolute;
  top: calc(var(--rpx) * 26);
  left: calc(var(--rpx) * -10);
  width: 0;
  height: 0;
  border-top: calc(var(--rpx) * 10) solid transparent;
  border-bottom: calc(var(--rpx) * 10) solid transparent;
  border-right: calc(var(--rpx) * 10) solid #ffffff;
}
[data-route="pages/msgchat/msgchat"] .mc-bubble-mine {
  background: #95ec69;
}
[data-route="pages/msgchat/msgchat"] .mc-bubble-mine::after {
  left: auto;
  right: calc(var(--rpx) * -10);
  border-right: 0;
  border-left: calc(var(--rpx) * 10) solid #95ec69;
}
[data-route="pages/msgchat/msgchat"] .mc-text {
  font-size: calc(var(--rpx) * 32);
  line-height: 1.45;
  color: #111111;
  word-break: break-all;
}
[data-route="pages/msgchat/msgchat"] .mc-who {
  display: block;
  margin-bottom: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pages/msgchat/msgchat"] /* 图片气泡 */
.mc-img {
  max-width: calc(var(--rpx) * 400);
  margin: 0 calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 8);
  /* v7.0.199（木哥令「交流时一直有一个闪屏」）：图还没解码时给一块占位浅底 + 最小高度，
     解码完成不再把下面整排消息推下去 —— 列表不再一屏一屏地跳 */
  background: #f2f3f5;
  min-height: calc(var(--rpx) * 120);
}
[data-route="pages/msgchat/msgchat"] /* 语音气泡：宽度按时长（js 算），点一下播 */
.mc-voice {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  height: calc(var(--rpx) * 72);
  margin: 0 calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 8);
  background: #ffffff;
  box-sizing: border-box;
}
[data-route="pages/msgchat/msgchat"] .mc-voice-mine {
  background: #95ec69;
  justify-content: flex-end;
}
[data-route="pages/msgchat/msgchat"] .mc-voice-on {
  opacity: 0.75;
}
[data-route="pages/msgchat/msgchat"] .mc-voice-wave {
  font-size: calc(var(--rpx) * 24);
  color: #333333;
}
[data-route="pages/msgchat/msgchat"] .mc-voice-dur {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #666666;
}
[data-route="pages/msgchat/msgchat"] .mc-voice-mine .mc-voice-dur {
  margin-left: 0;
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pages/msgchat/msgchat"] /* 卡片（位置 / 红包 / 转账） */
.mc-card {
  width: calc(var(--rpx) * 420);
  margin: 0 calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  box-sizing: border-box;
}
[data-route="pages/msgchat/msgchat"] .mc-card-t {
  font-size: calc(var(--rpx) * 32);
  color: #111111;
}
[data-route="pages/msgchat/msgchat"] .mc-card-s {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pages/msgchat/msgchat"] .mc-card-f {
  margin-top: calc(var(--rpx) * 12);
  padding-top: calc(var(--rpx) * 10);
  border-top: calc(var(--rpx) * 1) solid #f0f0f0;
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pages/msgchat/msgchat"] /* 位置卡 */
.mc-loc {
  border: calc(var(--rpx) * 1) solid #e6e6e6;
}
[data-route="pages/msgchat/msgchat"] /* v4.86.579 聊天视频：深底 + 播放键（点开全屏播，页面里不挂 <video>） */
.mc-vid {
  position: relative;
  width: calc(var(--rpx) * 360);
  height: calc(var(--rpx) * 240);
  margin: 0 calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 8);
  background: #2b2b2b;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/msgchat/msgchat"] .mc-vid-play {
  width: calc(var(--rpx) * 88);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  color: #ffffff;
  background: rgba(255, 255, 255, 0.18);
  border-radius: 50%;
}
[data-route="pages/msgchat/msgchat"] .mc-vid-t {
  position: absolute;
  left: calc(var(--rpx) * 16);
  bottom: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  color: rgba(255, 255, 255, 0.72);
}
[data-route="pages/msgchat/msgchat"] /* v4.86.579 作业点评卡：缩略图 + 已点评角标（点开进点评页） */
.mc-hw {
  border: calc(var(--rpx) * 1) solid #dfe9dd;
}
[data-route="pages/msgchat/msgchat"] .mc-hw-row {
  display: flex;
  align-items: center;
}
[data-route="pages/msgchat/msgchat"] .mc-hw-thumb {
  width: calc(var(--rpx) * 96);
  height: calc(var(--rpx) * 96);
  border-radius: calc(var(--rpx) * 8);
  margin-right: calc(var(--rpx) * 16);
  background: #f2f2f2;
  flex-shrink: 0;
}
[data-route="pages/msgchat/msgchat"] .mc-hw-no {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 20);
  color: #bbbbbb;
}
[data-route="pages/msgchat/msgchat"] .mc-hw-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/msgchat/msgchat"] /* 红包卡 v7.0.007 封面换装（木哥选定「墨宝竖款 + 中国纹理」）：
 * 深红底平铺织锦万字纹贴图（images/hb-wan.png，554 字节，金色压到 17%），
 * 回纹角线框 + 竖排楷体金「墨寶」+ 练字猫咪小字 —— 传统红包封的样子 */
.mc-hb {
  width: calc(var(--rpx) * 320);
  overflow: hidden;
  border-radius: calc(var(--rpx) * 16);
  background: #b9321f;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 16) rgba(200, 50, 30, 0.25);
}
[data-route="pages/msgchat/msgchat"] .mc-hb-cover {
  position: relative;
  height: calc(var(--rpx) * 150);
  background-color: #a02a1b;
  background-image: url('../../images/hb-wan.png');
  background-size: calc(var(--rpx) * 56) calc(var(--rpx) * 56);
}
[data-route="pages/msgchat/msgchat"] /* 回纹角线框（细金线内框，CSS 画，不占包体） */
.mc-hb-frame {
  position: absolute;
  left: calc(var(--rpx) * 12);
  right: calc(var(--rpx) * 12);
  top: calc(var(--rpx) * 12);
  bottom: calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 1) solid rgba(243, 193, 75, 0.45);
}
[data-route="pages/msgchat/msgchat"] /* 竖排金「墨寶」 */
.mc-hb-zi {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(var(--rpx) * 22);
  text-align: center;
  color: #f3c14b;
  font-size: calc(var(--rpx) * 40);
  line-height: 1;
  font-family: 'Kaiti SC', 'STKaiti', 'KaiTi', serif;
}
[data-route="pages/msgchat/msgchat"] .mc-hb-zi-b {
  top: calc(var(--rpx) * 68);
}
[data-route="pages/msgchat/msgchat"] .mc-hb-brand {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(var(--rpx) * 10);
  text-align: center;
  color: rgba(247, 221, 171, 0.75);
  font-size: calc(var(--rpx) * 20);
  letter-spacing: calc(var(--rpx) * 4);
}
[data-route="pages/msgchat/msgchat"] /* v7.0.005：body 提到定位层 —— 封面若有定位装饰不压正文；
 * v7.0.007：封口换传统金线（弧口退役） */
.mc-hb-body {
  position: relative;
  z-index: 1;
  border-top: calc(var(--rpx) * 3) solid #f3c14b;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 24) calc(var(--rpx) * 20);
}
[data-route="pages/msgchat/msgchat"] .mc-hb-bless {
  color: #fff7e8;
  font-size: calc(var(--rpx) * 28);
  line-height: calc(var(--rpx) * 42);
  font-family: 'Kaiti SC', 'STKaiti', 'KaiTi', serif;
  letter-spacing: calc(var(--rpx) * 2);
}
[data-route="pages/msgchat/msgchat"] /* v7.0.006：卡面不再塞金额（点开详情看多少墨宝），.mc-hb-amt 退役 */

.mc-hb-tip {
  margin-top: calc(var(--rpx) * 14);
  padding-top: calc(var(--rpx) * 14);
  border-top: calc(var(--rpx) * 1) solid rgba(255, 235, 200, 0.35);
  color: rgba(255, 240, 215, 0.85);
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/msgchat/msgchat"] /* 转账卡：微信金黄 —— v7.0.006 盒子改由 wxml 挂 mc-card 提供（宽度/内边距/圆角），
 * 旧版 mc-tf 单独裸奔被 flex 挤窄、金额和状态字被裁（木哥截图点名） */
.mc-tf {
  background: linear-gradient(160deg, #fa9d3b, #f7b500);
}
[data-route="pages/msgchat/msgchat"] .mc-tf .mc-card-t, [data-route="pages/msgchat/msgchat"] .mc-tf .mc-card-s, [data-route="pages/msgchat/msgchat"] .mc-tf .mc-card-f {
  color: #ffffff;
}
[data-route="pages/msgchat/msgchat"] .mc-tf .mc-card-f {
  border-top: calc(var(--rpx) * 1) solid rgba(255, 255, 255, 0.45);
}
[data-route="pages/msgchat/msgchat"] .mc-tf-row {
  display: flex;
  align-items: center;
}
[data-route="pages/msgchat/msgchat"] .mc-tf-ico {
  font-size: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pages/msgchat/msgchat"] .mc-tf-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/msgchat/msgchat"] /* v7.0.006 已收/已退的卡变暗（红包与转账同款）：降饱和 + 压暗，
 * 状态行（已收下/已退回）本来就在卡面，一眼分得清 */
.mc-gift-done {
  filter: grayscale(0.55) brightness(0.85);
}
[data-route="pages/msgchat/msgchat"] /* 文件卡（v4.86.585 位置换文件） */
.mc-file-row {
  display: flex;
  align-items: center;
}
[data-route="pages/msgchat/msgchat"] .mc-file-ico {
  flex-shrink: 0;
  width: calc(var(--rpx) * 72);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  text-align: center;
  margin-right: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 12);
  background: #eef4ee;
  font-size: calc(var(--rpx) * 40);
}
[data-route="pages/msgchat/msgchat"] .mc-file-main {
  flex: 1;
  min-width: 0;
}
[data-route="pages/msgchat/msgchat"] .mc-pad {
  height: calc(var(--rpx) * 32);
}
[data-route="pages/msgchat/msgchat"] /* 只读线（平台通知） */
.mc-ro {
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 32) calc(env(safe-area-inset-bottom) + calc(var(--rpx) * 24));
  background: #f7f7f7;
  border-top: calc(var(--rpx) * 1) solid #e0e0e0;
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  text-align: center;
}
[data-route="pages/msgchat/msgchat"] /* 底部输入条：微信同构（语音键 输入框 表情 加号）。
 * v4.86.566：底部多垫一层 safe-area —— 以前直接贴 iPhone 底部黑条，抬起来 */
.mc-bar {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16) calc(env(safe-area-inset-bottom) + calc(var(--rpx) * 12));
  background: #f7f7f7;
  border-top: calc(var(--rpx) * 1) solid #dddddd;
  box-sizing: border-box;
}
[data-route="pages/msgchat/msgchat"] .mc-ico {
  flex-shrink: 0;
  width: calc(var(--rpx) * 72);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  text-align: center;
  font-size: calc(var(--rpx) * 40);
  color: #333333;
}
[data-route="pages/msgchat/msgchat"] .mc-ico-on {
  color: #07c160;
}
[data-route="pages/msgchat/msgchat"] /** 自定义导航（返回 + 对方名字 + 客服徽标） */
.mc-nav {
  position: relative;
  flex-shrink: 0;
  background: #ededed;
}
[data-route="pages/msgchat/msgchat"] .mc-nav-mid {
  display: flex;
  align-items: center;
  justify-content: center;
  height: calc(var(--rpx) * 88);
  padding: 0 calc(var(--rpx) * 120);
  box-sizing: border-box;
}
[data-route="pages/msgchat/msgchat"] .mc-nav-title {
  max-width: calc(var(--rpx) * 380);
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-size: calc(var(--rpx) * 32);
  color: #111111;
}
[data-route="pages/msgchat/msgchat"] /* 客服徽标：名字后头那颗小绿标 */
.mc-nav-kf {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 8);
  padding: 0 calc(var(--rpx) * 10);
  height: calc(var(--rpx) * 32);
  line-height: calc(var(--rpx) * 32);
  border-radius: calc(var(--rpx) * 6);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pages/msgchat/msgchat"] .mc-nav-back {
  position: absolute;
  left: calc(var(--rpx) * 8);
  bottom: 0;
  width: calc(var(--rpx) * 88);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  font-size: calc(var(--rpx) * 40);
  color: #111111;
}
[data-route="pages/msgchat/msgchat"] /* v4.86.554：客服线右上角那颗「微信」—— 去微信客服那头找同一个墨灵猫
   （站内是它自动接话，想找人味、想找真人客服时走这扇门） */
.mc-nav-more {
  position: absolute;
  right: calc(var(--rpx) * 8);
  bottom: 0;
  width: calc(var(--rpx) * 96);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
}
[data-route="pages/msgchat/msgchat"] /* 语音键 / 键盘键：微信那枚「圆圈里带声波」的图标（line 1.6 黑），
   全站同款（input 条、语音条、游戏页说话键都指向这里） */
.mc-glyph {
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  margin: calc(var(--rpx) * 8) auto 0;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}
[data-route="pages/msgchat/msgchat"] .mc-glyph-voice {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48Y2lyY2xlIGN4PSI0OCIgY3k9IjQ4IiByPSI0MiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMTkxOTE5IiBzdHJva2Utd2lkdGg9IjUiLz48Y2lyY2xlIGN4PSIzNyIgY3k9IjQ4IiByPSI1IiBmaWxsPSIjMTkxOTE5Ii8+PHBhdGggZD0iTTQ5IDM5YTEyIDEyIDAgMCAxIDAgMTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE5MTkxOSIgc3Ryb2tlLXdpZHRoPSI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNNTcgMzBhMjQgMjQgMCAwIDEgMCAzNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMTkxOTE5IiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==");
}
[data-route="pages/msgchat/msgchat"] .mc-glyph-kb {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48cmVjdCB4PSIxMCIgeT0iMjgiIHdpZHRoPSI3NiIgaGVpZ2h0PSI0MiIgcng9IjgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE5MTkxOSIgc3Ryb2tlLXdpZHRoPSI1Ii8+PHBhdGggZD0iTTIyIDQyaDhNMzggNDJoOE01NCA0Mmg4TTcwIDQyaDRNMjIgNTZoNTIiIHN0cm9rZT0iIzE5MTkxOSIgc3Ryb2tlLXdpZHRoPSI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=");
}
[data-route="pages/msgchat/msgchat"] .mc-face {
  font-size: calc(var(--rpx) * 40);
}
[data-route="pages/msgchat/msgchat"] .mc-plus-key {
  font-size: calc(var(--rpx) * 40);
  color: #333333;
}
[data-route="pages/msgchat/msgchat"] /* 加号面板图标：白底圆角方 + 微信线条图标（不再是 emoji） */
.mc-plus-ico {
  width: calc(var(--rpx) * 104);
  height: calc(var(--rpx) * 104);
  margin: 0 auto;
  border-radius: calc(var(--rpx) * 16);
  background-color: #ffffff;
  background-repeat: no-repeat;
  background-position: center;
  background-size: calc(var(--rpx) * 56) calc(var(--rpx) * 56);
}
[data-route="pages/msgchat/msgchat"] .mc-pi-album {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48cmVjdCB4PSIxMiIgeT0iMTgiIHdpZHRoPSI3MiIgaGVpZ2h0PSI2MCIgcng9IjgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzMzMzMyIgc3Ryb2tlLXdpZHRoPSI1Ii8+PGNpcmNsZSBjeD0iMzQiIGN5PSIzOCIgcj0iNiIgZmlsbD0iIzMzMzMzMyIvPjxwYXRoIGQ9Ik0xOCA2OGwyMC0yMCAxNCAxNCAxMC04IDE2IDE0IiBmaWxsPSJub25lIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==");
}
[data-route="pages/msgchat/msgchat"] /* v4.86.579：作业库（本子 + 三行字）与视频（摄像机 + 播放三角）——
   线条风格与上面几个同一套，不用 emoji */
.mc-pi-lib {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48cmVjdCB4PSIyMCIgeT0iMTYiIHdpZHRoPSI1NiIgaGVpZ2h0PSI2NCIgcng9IjgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzMzMzMyIgc3Ryb2tlLXdpZHRoPSI1Ii8+PHBhdGggZD0iTTMyIDMwaDMyTTMyIDQ0aDMyTTMyIDU4aDIwIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+");
}
[data-route="pages/msgchat/msgchat"] .mc-pi-video {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48cmVjdCB4PSIxMiIgeT0iMjYiIHdpZHRoPSI1MiIgaGVpZ2h0PSI0NCIgcng9IjgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzMzMzMyIgc3Ryb2tlLXdpZHRoPSI1Ii8+PHBhdGggZD0iTTY0IDQwbDE4LTEwdjM2bC0xOC0xMHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzMzMzMyIgc3Ryb2tlLXdpZHRoPSI1IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+");
}
[data-route="pages/msgchat/msgchat"] .mc-pi-camera {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48cmVjdCB4PSIxMCIgeT0iMjgiIHdpZHRoPSI3NiIgaGVpZ2h0PSI1MCIgcng9IjEwIiBmaWxsPSJub25lIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iNSIvPjxwYXRoIGQ9Ik0zNCAyOGw2LTEwaDE2bDYgMTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzMzMzMyIgc3Ryb2tlLXdpZHRoPSI1IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PGNpcmNsZSBjeD0iNDgiIGN5PSI1MyIgcj0iMTQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzMzMzMyIgc3Ryb2tlLXdpZHRoPSI1Ii8+PC9zdmc+");
}
[data-route="pages/msgchat/msgchat"] /* v4.86.585「文件」上岗时漏了图标类 —— 补一张折角文档（线条风格与同一套） */
.mc-pi-file {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48cGF0aCBkPSJNMjQgMTJoMzBsMTggMTh2NTRIMjR6IiBmaWxsPSJub25lIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik01NCAxMnYxOGgxOCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJNMzQgNDhoMjhNMzQgNjJoMjgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzMzMzMzMyIgc3Ryb2tlLXdpZHRoPSI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=");
}
[data-route="pages/msgchat/msgchat"] .mc-pi-location {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48cGF0aCBkPSJNNDggODZzMjgtMjYgMjgtNDZhMjggMjggMCAxIDAtNTYgMGMwIDIwIDI4IDQ2IDI4IDQ2eiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48Y2lyY2xlIGN4PSI0OCIgY3k9IjQwIiByPSI5IiBmaWxsPSJub25lIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iNSIvPjwvc3ZnPg==");
}
[data-route="pages/msgchat/msgchat"] .mc-pi-voicein {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48Y2lyY2xlIGN4PSI0OCIgY3k9IjQ4IiByPSI0MiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMTkxOTE5IiBzdHJva2Utd2lkdGg9IjUiLz48Y2lyY2xlIGN4PSIzNyIgY3k9IjQ4IiByPSI1IiBmaWxsPSIjMTkxOTE5Ii8+PHBhdGggZD0iTTQ5IDM5YTEyIDEyIDAgMCAxIDAgMTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE5MTkxOSIgc3Ryb2tlLXdpZHRoPSI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNNTcgMzBhMjQgMjQgMCAwIDEgMCAzNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMTkxOTE5IiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==");
}
[data-route="pages/msgchat/msgchat"] .mc-pi-hongbao {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48cmVjdCB4PSIxNCIgeT0iMTgiIHdpZHRoPSI2OCIgaGVpZ2h0PSI2MCIgcng9IjEwIiBmaWxsPSIjZmE1MTUxIi8+PHBhdGggZD0iTTQ4IDM0Yy02LTgtMTgtNC0xOCA1IDAgOCAxOCAxOCAxOCAxOHMxOC0xMCAxOC0xOGMwLTktMTItMTMtMTgtNXoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZDlhMCIgc3Ryb2tlLXdpZHRoPSI1IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+");
}
[data-route="pages/msgchat/msgchat"] .mc-pi-transfer {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48Y2lyY2xlIGN4PSI0OCIgY3k9IjQ4IiByPSIzOCIgZmlsbD0iI2ZhOWQzYiIvPjxwYXRoIGQ9Ik0zNCA0OGgyNk01MiAzOGwxMCAxMC0xMCAxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmZmZmIiBzdHJva2Utd2lkdGg9IjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==");
}
[data-route="pages/msgchat/msgchat"] .mc-input {
  flex: 1;
  min-width: 0;
  height: calc(var(--rpx) * 72);
  padding: 0 calc(var(--rpx) * 16);
  margin: 0 calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 8);
  background: #ffffff;
  font-size: calc(var(--rpx) * 32);
  box-sizing: border-box;
}
[data-route="pages/msgchat/msgchat"] /* v4.86.566：输入框包装层 —— 输入框铺满，右端内嵌话筒键 */
.mc-inwrap {
  flex: 1;
  min-width: 0;
  position: relative;
  margin: 0 calc(var(--rpx) * 8);
}
[data-route="pages/msgchat/msgchat"] .mc-inwrap .mc-input {
  flex: none;
  width: 100%;
  margin: 0;
  padding-right: calc(var(--rpx) * 80);
}
[data-route="pages/msgchat/msgchat"] .mc-mic {
  position: absolute;
  right: 0;
  top: 0;
  width: calc(var(--rpx) * 76);
  height: calc(var(--rpx) * 72);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pages/msgchat/msgchat"] .mc-mic-glyph {
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48cmVjdCB4PSIzNyIgeT0iMTQiIHdpZHRoPSIyMiIgaGVpZ2h0PSIzOCIgcng9IjExIiBmaWxsPSJub25lIiBzdHJva2U9IiM3ZjgzODkiIHN0cm9rZS13aWR0aD0iNSIvPjxwYXRoIGQ9Ik0yOCA0NGExOSAxOSAwIDAgMCA0MCAwIiBmaWxsPSJub25lIiBzdHJva2U9IiM3ZjgzODkiIHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTQ4IDYzdjEzTTM4IDc2aDIwIiBmaWxsPSJub25lIiBzdHJva2U9IiM3ZjgzODkiIHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+");
}
[data-route="pages/msgchat/msgchat"] /* 说话中：图标变绿（正在听） */
.mc-mic-on .mc-mic-glyph {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48cmVjdCB4PSIzNyIgeT0iMTQiIHdpZHRoPSIyMiIgaGVpZ2h0PSIzOCIgcng9IjExIiBmaWxsPSJub25lIiBzdHJva2U9IiMwN2MxNjAiIHN0cm9rZS13aWR0aD0iNSIvPjxwYXRoIGQ9Ik0yOCA0NGExOSAxOSAwIDAgMCA0MCAwIiBmaWxsPSJub25lIiBzdHJva2U9IiMwN2MxNjAiIHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTQ4IDYzdjEzTTM4IDc2aDIwIiBmaWxsPSJub25lIiBzdHJva2U9IiMwN2MxNjAiIHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+");
}
[data-route="pages/msgchat/msgchat"] .mc-hold {
  flex: 1;
  min-width: 0;
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  margin: 0 calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 8);
  background: #ffffff;
  color: #333333;
  font-size: calc(var(--rpx) * 28);
  text-align: center;
}
[data-route="pages/msgchat/msgchat"] .mc-hold-on {
  background: #d8f5c8;
  color: #1a1a1a;
}
[data-route="pages/msgchat/msgchat"] .mc-send {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 8);
  padding: 0 calc(var(--rpx) * 24);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  border-radius: calc(var(--rpx) * 8);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pages/msgchat/msgchat"] .mc-send-on {
  background: #07c160;
}
[data-route="pages/msgchat/msgchat"] /* 表情 / 加号面板 */
.mc-panel {
  background: #f7f7f7;
  border-top: calc(var(--rpx) * 1) solid #e0e0e0;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 16) calc(env(safe-area-inset-bottom) + calc(var(--rpx) * 16));
  box-sizing: border-box;
}
[data-route="pages/msgchat/msgchat"] .mc-emoji-grid {
  display: flex;
  flex-wrap: wrap;
}
[data-route="pages/msgchat/msgchat"] .mc-emoji-cell {
  width: 12.5%;
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  font-size: calc(var(--rpx) * 40);
}
[data-route="pages/msgchat/msgchat"] .mc-emoji-foot {
  display: flex;
  justify-content: flex-end;
  padding-top: calc(var(--rpx) * 8);
}
[data-route="pages/msgchat/msgchat"] .mc-emoji-del {
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 8);
  background: #ffffff;
  font-size: calc(var(--rpx) * 24);
  color: #333333;
}
[data-route="pages/msgchat/msgchat"] .mc-plus-grid {
  display: flex;
  flex-wrap: wrap;
}
[data-route="pages/msgchat/msgchat"] .mc-plus-cell {
  width: 25%;
  padding: calc(var(--rpx) * 16) 0;
  text-align: center;
}
[data-route="pages/msgchat/msgchat"] .mc-plus-t {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #666666;
}
[data-route="pages/msgchat/msgchat"] /* 红包/转账底页 */
.mc-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  display: flex;
  align-items: flex-end;
  justify-content: center;
  z-index: 20;
}
[data-route="pages/msgchat/msgchat"] .mc-sheet {
  width: 100%;
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 32) calc(env(safe-area-inset-bottom) + calc(var(--rpx) * 28));
  border-radius: calc(var(--rpx) * 20) calc(var(--rpx) * 20) 0 0;
  background: #ffffff;
  box-sizing: border-box;
}
[data-route="pages/msgchat/msgchat"] .mc-sheet-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #111111;
  text-align: center;
}
[data-route="pages/msgchat/msgchat"] .mc-sheet-s {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  text-align: center;
}
[data-route="pages/msgchat/msgchat"] .mc-sheet-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 24);
  padding-bottom: calc(var(--rpx) * 16);
  border-bottom: calc(var(--rpx) * 1) solid #eeeeee;
}
[data-route="pages/msgchat/msgchat"] .mc-sheet-k {
  width: calc(var(--rpx) * 120);
  font-size: calc(var(--rpx) * 28);
  color: #333333;
}
[data-route="pages/msgchat/msgchat"] .mc-sheet-in {
  flex: 1;
  min-width: 0;
  height: calc(var(--rpx) * 64);
  font-size: calc(var(--rpx) * 40);
  color: #111111;
}
[data-route="pages/msgchat/msgchat"] .mc-sheet-in2 {
  flex: 1;
  min-width: 0;
  height: calc(var(--rpx) * 64);
  font-size: calc(var(--rpx) * 28);
  color: #333333;
}
[data-route="pages/msgchat/msgchat"] .mc-sheet-u {
  font-size: calc(var(--rpx) * 28);
  color: #666666;
}
[data-route="pages/msgchat/msgchat"] .mc-sheet-btn {
  margin-top: calc(var(--rpx) * 32);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  border-radius: calc(var(--rpx) * 10);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pages/msgchat/msgchat"] .mc-sheet-note {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  text-align: center;
}
[data-route="pages/msgchat/msgchat"] /* v7.0.006 红包/转账详情弹层：点开看是多少墨宝、收还是退
 * （微信红包详情同路数：红/金底、福字章、大金额、状态行） */
.mc-gopen {
  width: calc(var(--rpx) * 520);
  margin: auto;
  padding: calc(var(--rpx) * 44) calc(var(--rpx) * 36) calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 20);
  box-sizing: border-box;
  text-align: center;
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-hb {
  background: linear-gradient(170deg, #d94530, #b9321f);
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-tf {
  background: linear-gradient(160deg, #fa9d3b, #f7b500);
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-seal {
  width: calc(var(--rpx) * 88);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  margin: 0 auto;
  border-radius: calc(var(--rpx) * 12);
  background: #f3c14b;
  color: #a02116;
  font-size: calc(var(--rpx) * 56);
  font-weight: 700;
  font-family: 'Kaiti SC', 'STKaiti', 'KaiTi', serif;
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-kind {
  margin-top: calc(var(--rpx) * 18);
  color: rgba(255, 247, 232, 0.85);
  font-size: calc(var(--rpx) * 24);
  letter-spacing: calc(var(--rpx) * 4);
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-amt {
  margin-top: calc(var(--rpx) * 14);
  color: #ffffff;
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-note {
  margin-top: calc(var(--rpx) * 14);
  color: #fff7e8;
  font-size: calc(var(--rpx) * 28);
  font-family: 'Kaiti SC', 'STKaiti', 'KaiTi', serif;
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-st {
  margin-top: calc(var(--rpx) * 16);
  color: rgba(255, 240, 215, 0.85);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-btns {
  display: flex;
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-btn {
  flex: 1;
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-btn1 {
  margin-right: calc(var(--rpx) * 20);
  background: #f3c14b;
  color: #a02116;
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-btn2 {
  border: calc(var(--rpx) * 1) solid rgba(255, 255, 255, 0.6);
  color: #ffffff;
}
[data-route="pages/msgchat/msgchat"] .mc-gopen-x {
  margin-top: calc(var(--rpx) * 22);
  color: rgba(255, 255, 255, 0.6);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pages/msgchat/msgchat"] /* 好友资料卡（客服点头像） */
.mc-friend {
  width: calc(var(--rpx) * 600);
  margin: auto;
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 32) calc(var(--rpx) * 32);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  box-sizing: border-box;
}
[data-route="pages/msgchat/msgchat"] .mc-friend-ava {
  width: calc(var(--rpx) * 120);
  height: calc(var(--rpx) * 120);
  line-height: calc(var(--rpx) * 120);
  margin: 0 auto;
  border-radius: calc(var(--rpx) * 12);
  background: #5b7ea8;
  color: #ffffff;
  font-size: calc(var(--rpx) * 40);
  text-align: center;
}
[data-route="pages/msgchat/msgchat"] .mc-friend-name {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #111111;
  text-align: center;
}
[data-route="pages/msgchat/msgchat"] .mc-friend-uid {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  text-align: center;
}
[data-route="pages/msgchat/msgchat"] .mc-friend-line {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 28);
  color: #333333;
}
[data-route="pages/msgchat/msgchat"] .mc-friend-last {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 8);
  background: #f7f7f7;
  font-size: calc(var(--rpx) * 24);
  color: #666666;
}
[data-route="pages/msgchat/msgchat"] .mc-friend-tip {
  margin-top: calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  text-align: center;
}



/* ---- pages/discover/discover.wxss ---- */
[data-route="pages/discover/discover"] /* 发现 · tab 第 3 页（v4.86.533）：仿微信发现页 —— 灰底白卡、彩色小图标 + 名字 + 箭头 */
.page {
  min-height: calc(var(--vh) * 100);
  background: #f7f7f7;
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pages/discover/discover"] /* 顶栏 logo 行：直接用全局 .app-header（与打卡/我的完全一致，练字猫咪锁死，见 test-533）*/

/* v4.86.546：页名「发现」那一行撤掉（木哥令），第一张白卡自己带顶上间距，
   不然会贴着 logo 行——app-header 的下边距 calc(var(--rpx) * 20) + 这里 calc(var(--rpx) * 20) = calc(var(--rpx) * 40)，
   与撤掉标题前的手感一致 */
.app-header + .dc-group {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pages/discover/discover"] .dc-group {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  margin: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 24);
  overflow: hidden;
}
[data-route="pages/discover/discover"] .dc-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 28);
  border-bottom: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pages/discover/discover"] .dc-row-last {
  border-bottom: none;
}
[data-route="pages/discover/discover"] .dc-row-hover {
  background: #f2f2f2;
}
[data-route="pages/discover/discover"] /* v4.86.547（木哥令「消息系统消息的铃铛改成和发现页一个风格」）：图标块与九枚白色线条
   图示整体搬到 app.wxss 的 `.ico-tile` / `.ico-gl-*` —— 发现页与消息页系统线共用一套，
   不再各写一份。这里只剩分组与行。 */


/* v7.0.150（木哥令「加一个说明……保持一行，小一号的字体，灰色即可」）：
   名字不再独占弹性宽度（改 flex-shrink:0），说明紧跟着排同一行 ——
   calc(var(--rpx) * 24)（比名称 calc(var(--rpx) * 32) 小一号，五档之内）、#888888、超长省略号；
   箭头改 margin-left:auto 顶右，没说明的行外观不变 */
.dc-name {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 32);
  color: #1a1a1a;
  margin-left: calc(var(--rpx) * 24);
}
[data-route="pages/discover/discover"] .dc-desc {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin-left: calc(var(--rpx) * 16);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-route="pages/discover/discover"] .dc-arrow {
  font-size: calc(var(--rpx) * 32);
  color: #c8c8c8;
  margin-left: auto;
}
[data-route="pages/discover/discover"] /* v7.0.085（木哥令「全站未读链条式跟踪」）：行数字角标 —— tab 上亮的数
   在本行能追到；样式与消息页 tile 角标同一族（红底白字、贴箭头左侧） */
.dc-badge {
  min-width: calc(var(--rpx) * 30);
  height: calc(var(--rpx) * 34);
  padding: 0 calc(var(--rpx) * 10);
  margin-right: calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 999);
  background: #fa5151;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 34);
  text-align: center;
  box-sizing: border-box;
}



/* ---- pkgDb/pages/char/char.wxss ---- */
[data-route="pkgDb/pages/char/char"] .page {
  min-height: calc(var(--vh) * 100);
  background: #ededed;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgDb/pages/char/char"] .searchbar {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
}
[data-route="pkgDb/pages/char/char"] .ipt {
  font-size: calc(var(--rpx) * 32);
  color: #191919;
  text-align: center;
}
[data-route="pkgDb/pages/char/char"] .tip {
  margin-top: calc(var(--rpx) * 32);
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  text-align: center;
  line-height: 1.7;
}
[data-route="pkgDb/pages/char/char"] .card {
  margin-top: calc(var(--rpx) * 16);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 28);
}
[data-route="pkgDb/pages/char/char"] .rhead {
  display: flex;
  align-items: flex-end;
  gap: calc(var(--rpx) * 24);
  padding-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgDb/pages/char/char"] .bigchar {
  font-size: calc(var(--rpx) * 96);
  line-height: 1;
  color: #191919;
  font-weight: 500;
}
[data-route="pkgDb/pages/char/char"] .rmeta {
  display: flex;
  flex-direction: column;
  gap: calc(var(--rpx) * 8);
  padding-bottom: calc(var(--rpx) * 6);
}
[data-route="pkgDb/pages/char/char"] .metas {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pkgDb/pages/char/char"] .grade {
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pkgDb/pages/char/char"] .block {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgDb/pages/char/char"] .label {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 10);
}
[data-route="pkgDb/pages/char/char"] .body {
  display: block;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  line-height: 1.75;
}
[data-route="pkgDb/pages/char/char"] .teacher {
  color: #888888;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 18);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgDb/pages/char/char"] .tags {
  margin-top: calc(var(--rpx) * 22);
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 12);
}
[data-route="pkgDb/pages/char/char"] .tag {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  background: #e8f7ee;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 14);
}
[data-route="pkgDb/pages/char/char"] /* 字形结构提示：红=易错，蓝=字形说明（微信链接蓝） */
.t2 {
  color: #fa5151;
  background: #feeceb;
}
[data-route="pkgDb/pages/char/char"] .t3 {
  color: #576b95;
  background: #f7f7f7;
}
[data-route="pkgDb/pages/char/char"] .copy {
  margin-top: calc(var(--rpx) * 28);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  background: #e8f7ee;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 16) 0;
}
[data-route="pkgDb/pages/char/char"] .copy:active {
  background: #e8f7ee;
}
[data-route="pkgDb/pages/char/char"] /* 看老师示范 · 内嵌视频浏览框（2026-10-15 v4.86.198：直接出播放框 + 可全屏 + 免费试看 5 秒）
   v4.86.252：多视频列表 —— 该字所有示范视频都出来（横屏优先在口径层排好） */
.video-box {
  margin-top: calc(var(--rpx) * 28);
  background: #f0f7ff;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 16);
}
[data-route="pkgDb/pages/char/char"] /* v4.86.296（木哥令）：查到的字还没有示范视频 —— 「更新中……敬请期待」 */
.vid-none {
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 16);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgDb/pages/char/char"] .vid-none-t {
  color: #7a8a99;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgDb/pages/char/char"] .vid-item {
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgDb/pages/char/char"] .vid-item:last-child {
  margin-bottom: 0;
}
[data-route="pkgDb/pages/char/char"] .vid {
  width: 100%;
  height: calc(var(--rpx) * 380);
  border-radius: calc(var(--rpx) * 8);
  background: #000000;
}
[data-route="pkgDb/pages/char/char"] .vid-loading {
  height: calc(var(--rpx) * 380);
  display: flex;
  align-items: center;
  justify-content: center;
  background: #e6eff8;
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pkgDb/pages/char/char"] .vid-fallback {
  height: calc(var(--rpx) * 380);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: calc(var(--rpx) * 12);
  background: #e6eff8;
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pkgDb/pages/char/char"] .vid-fallback-hover {
  background: #d8e6f2;
}
[data-route="pkgDb/pages/char/char"] .vf-main {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgDb/pages/char/char"] .vf-sub {
  font-size: calc(var(--rpx) * 20);
  color: #7a8a99;
}
[data-route="pkgDb/pages/char/char"] .vid-foot {
  margin-top: calc(var(--rpx) * 14);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: calc(var(--rpx) * 16);
}
[data-route="pkgDb/pages/char/char"] .vf-ok {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgDb/pages/char/char"] .vf-free {
  font-size: calc(var(--rpx) * 24);
  color: #7a8a99;
  flex-shrink: 1;
}
[data-route="pkgDb/pages/char/char"] .vf-buy {
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 26);
  flex-shrink: 0;
}
[data-route="pkgDb/pages/char/char"] .vf-buy-hover {
  background: #06ad56;
}
[data-route="pkgDb/pages/char/char"] .hotlist {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 16);
}
[data-route="pkgDb/pages/char/char"] .hotitem {
  font-size: calc(var(--rpx) * 32);
  color: #191919;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 24);
}
[data-route="pkgDb/pages/char/char"] .count {
  display: block;
  margin-top: calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pkgDb/pages/char/char"] /* ===== 按年级看生字 + 样张图（B-5 / G-21 ③）=====
   v4.86.516：分类页签行（sz-srcs）随四门课搬去示范页后拆除，只剩册次一排。 */
.sz {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgDb/pages/char/char"] .sz-books {
  white-space: nowrap;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgDb/pages/char/char"] .sz-book {
  display: inline-block;
  margin-right: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 999);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  background: #f7f7f7;
}
[data-route="pkgDb/pages/char/char"] .sz-book-on {
  color: #ffffff;
  background: #07c160;
}
[data-route="pkgDb/pages/char/char"] .sz-lessons {
  white-space: nowrap;
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgDb/pages/char/char"] .sz-lesson {
  display: inline-block;
  min-width: calc(var(--rpx) * 60);
  margin-right: calc(var(--rpx) * 10);
  text-align: center;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  background: #f2f2f2;
}
[data-route="pkgDb/pages/char/char"] .sz-lesson-on {
  color: #ffffff;
  background: #07c160;
}
[data-route="pkgDb/pages/char/char"] .sz-chars {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgDb/pages/char/char"] /* v4.86.350（木哥 349 号令）：课时生字格一行 3 个，整体不超屏宽
   （卡内宽 calc(var(--rpx) * 646) − 2×16 间距 = 614，每格 ≈ calc(var(--rpx) * 204.67) 近正方） */
.sz-char {
  width: calc((100% - calc(var(--rpx) * 32)) / 3);
  height: calc(var(--rpx) * 204);
  text-align: center;
  color: #191919;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #d5f0df;
  border-radius: calc(var(--rpx) * 10);
  box-sizing: border-box;
  overflow: hidden;
}
[data-route="pkgDb/pages/char/char"] /* v4.86.512（木哥 21:49 令）：节内字 >3 一行左右滑，不分多行。
   scroll-view + nowrap：格子固定 calc(var(--rpx) * 204)，多了往右推，页面高度只有一行。 */
.sz-chars-x {
  display: block;
  white-space: nowrap;
}
[data-route="pkgDb/pages/char/char"] .sz-chars-x .sz-char {
  display: inline-block;
  width: calc(var(--rpx) * 204);
  margin-right: calc(var(--rpx) * 16);
  vertical-align: top;
}
[data-route="pkgDb/pages/char/char"] .sz-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgDb/pages/char/char"] .sz-zige {
  display: flex;
  align-items: flex-start;
  gap: calc(var(--rpx) * 22);
}
[data-route="pkgDb/pages/char/char"] /* v4.86.352（木哥 351 号令）：四个格子按键照大字框右侧那种带格子简图（图标 + 名称），
   但横着一排摆（竖排是大字框右侧专属） */
.sz-zige-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(var(--rpx) * 4);
}
[data-route="pkgDb/pages/char/char"] .sz-zige-ico {
  width: calc(var(--rpx) * 52);
  height: calc(var(--rpx) * 52);
  border-width: calc(var(--rpx) * 2);
  border-color: #cfe9db;
  border-radius: calc(var(--rpx) * 6);
  background-color: #eef9f2;
  background-repeat: no-repeat;
  box-sizing: border-box;
}
[data-route="pkgDb/pages/char/char"] .sz-zige-on .sz-zige-ico {
  border-color: #07c160;
}
[data-route="pkgDb/pages/char/char"] .sz-zige-name {
  font-size: calc(var(--rpx) * 20);
  color: #8a8a8a;
}
[data-route="pkgDb/pages/char/char"] .sz-zige-on .sz-zige-name {
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgDb/pages/char/char"] .sz-make {
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 34);
  border-radius: calc(var(--rpx) * 40);
  font-size: calc(var(--rpx) * 28);
  color: #ffffff;
  background: #07c160;
}
[data-route="pkgDb/pages/char/char"] .sz-preview {
  width: 100%;
  margin-top: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pkgDb/pages/char/char"] /* 样张加载/下载进度条（v4.86.265） */
.sz-progress {
  margin-top: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 36);
  border-radius: calc(var(--rpx) * 999);
  background: #f2f2f2;
  overflow: hidden;
  position: relative;
}
[data-route="pkgDb/pages/char/char"] .sz-bar {
  height: 100%;
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  transition: width 0.18s linear;
}
[data-route="pkgDb/pages/char/char"] .sz-pct {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  text-align: center;
  line-height: calc(var(--rpx) * 36);
  font-size: calc(var(--rpx) * 20);
  color: #ffffff;
  text-shadow: 0 calc(var(--rpx) * 1) calc(var(--rpx) * 2) rgba(0, 0, 0, 0.25);
}
[data-route="pkgDb/pages/char/char"] .sz-tip {
  display: block;
  margin-top: calc(var(--rpx) * 16);
  line-height: 1.6;
}
[data-route="pkgDb/pages/char/char"] .sz-canvas {
  position: fixed;
  left: calc(var(--rpx) * -9999);
  top: 0;
  width: 600px;
  height: 800px;
}
[data-route="pkgDb/pages/char/char"] /* v4.86.273：样张来源标签 —— 册子原图时挂「哪册哪课那一页」 */
.sz-src {
  margin-bottom: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  color: #6b7f5e;
  text-align: center;
}
[data-route="pkgDb/pages/char/char"] /* v4.86.289（木哥令）：墨宝支付弹框 —— 确认 / 墨宝不足两态一张弹框。
   字号只走 20/24/28/32 档，圆角 999/10，绿走 #07c160。 */
.bp-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgDb/pages/char/char"] .bp-box {
  width: calc(var(--rpx) * 600);
  box-sizing: border-box;
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 36) calc(var(--rpx) * 32);
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
}
[data-route="pkgDb/pages/char/char"] .bp-title {
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
}
[data-route="pkgDb/pages/char/char"] /* v4.86.446（木哥 15:1x⑤）：付费层首行 = 主字（买的是这一个字的 365 天） */
.bp-char {
  margin-top: calc(var(--rpx) * 22);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
}
[data-route="pkgDb/pages/char/char"] .bp-yuan-note {
  font-size: calc(var(--rpx) * 24);
  color: #191919;
}
[data-route="pkgDb/pages/char/char"] .bp-body {
  margin-top: calc(var(--rpx) * 28);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.5;
  color: #191919;
}
[data-route="pkgDb/pages/char/char"] .bp-num {
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgDb/pages/char/char"] .bp-sub {
  margin-top: calc(var(--rpx) * 10);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgDb/pages/char/char"] .bp-bal {
  margin-top: calc(var(--rpx) * 14);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgDb/pages/char/char"] .bp-row {
  display: flex;
  gap: calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 36);
}
[data-route="pkgDb/pages/char/char"] .bp-btn {
  flex: 1;
  padding: calc(var(--rpx) * 18) 0;
  border-radius: calc(var(--rpx) * 10);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
}
[data-route="pkgDb/pages/char/char"] .bp-btn-ghost {
  background: #f7f7f7;
  color: #191919;
}
[data-route="pkgDb/pages/char/char"] .bp-btn-main {
  /* v4.86.523：墨宝支付/充值主键统一微信小店风格（原规范绿） */
  background: #ff6146;
  color: #ffffff;
}
[data-route="pkgDb/pages/char/char"] .bp-btn-hover {
  opacity: 0.85;
}
[data-route="pkgDb/pages/char/char"] .bp-btn-busy {
  opacity: 0.6;
}
[data-route="pkgDb/pages/char/char"] .bp-btn-block {
  width: 100%;
  box-sizing: border-box;
  margin-top: calc(var(--rpx) * 32);
}
[data-route="pkgDb/pages/char/char"] .bp-back {
  margin-top: calc(var(--rpx) * 20);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pkgDb/pages/char/char"] /* v4.86.499（木哥 00:0x 两张截图）：这条「开会员」入口从「白底暖橙描边的一行字」
   改成截图②那条金条 —— 金渐变底 + 左边小冠 + 两行白字 + 右边深棕金「立即开通 ›」药丸。
   为什么换：v4.86.496 已把收费面统一成金铜系，这里是全仓最后一处还挂着橙色的收费元素，
   留着就像上一个版本的东西没下线。色仍只有一处真相（styles/gold.wxss 同一套）：
   边金 #c9a15c / 主金 #a8792c / 深棕 #6b4d14 / 微金 #fffdf6。
   信息一个字没删 —— 「更合算」「全部字免费看、样图免费下」「点评不限次」全在，
   只是把原来挤在一行的那串字拆成主副两行（窄屏不折成三行）。 */
.bp-member {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 20) calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  background: linear-gradient(100deg, #c9a15c 0%, #b58f45 55%, #a8792c 100%);
  box-shadow: inset 0 calc(var(--rpx) * 1) 0 rgba(255, 253, 246, 0.4), 0 calc(var(--rpx) * 6) calc(var(--rpx) * 16) rgba(107, 77, 20, 0.16);
}
[data-route="pkgDb/pages/char/char"] /* 按压只降一点亮度 —— 不缩、不跳，弹窗里别抖 */
.bp-member-hover {
  opacity: 0.92;
}
[data-route="pkgDb/pages/char/char"] .bp-mb-left {
  display: flex;
  flex: 1;
  align-items: flex-start;
  min-width: 0;
}
[data-route="pkgDb/pages/char/char"] .bp-mb-crown {
  margin-right: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.3;
}
[data-route="pkgDb/pages/char/char"] .bp-mb-txt {
  display: flex;
  flex: 1;
  flex-direction: column;
  min-width: 0;
}
[data-route="pkgDb/pages/char/char"] .bp-mb-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  line-height: 1.3;
  color: #fffdf6;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pkgDb/pages/char/char"] .bp-mb-sub {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.4;
  color: rgba(255, 253, 246, 0.9);
}
[data-route="pkgDb/pages/char/char"] /* 右边那颗深棕金药丸：整条都能点，它只是「看着像个按键」 */
.bp-mb-btn {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 999);
  /* v4.86.523：立即开通键随收费键统一微信小店橙（原深棕金） */
  background: #ff6146;
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  color: #ffffff;
}
[data-route="pkgDb/pages/char/char"] /* v4.86.340（木哥令）：A 组镂空规范字 —— 图与原字号同占位，404 回退电脑体不跳版 */
.bigchar-img {
  width: calc(var(--rpx) * 110);
  height: calc(var(--rpx) * 110);
  flex-shrink: 0;
}
[data-route="pkgDb/pages/char/char"] .sz-char {
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgDb/pages/char/char"] .sz-char-img {
  width: 100%;
  height: 100%;
  /* v4.86.352（木哥 351 号令）：页底格子里的字同样淡成铅笔墨迹 */
  opacity: 0.6;
}
[data-route="pkgDb/pages/char/char"] /* 电脑体回退：字面照 72% 比例给（204 格 ≈ calc(var(--rpx) * 147) 字号，留量取 140） */
.sz-char-txt {
  font-size: calc(var(--rpx) * 140);
  line-height: 1;
}
[data-route="pkgDb/pages/char/char"] /* ===== v4.86.350（木哥 349 号令）：大字格 · 四选一练习格 =====
   底色 = 淡淡的微信绿，格线 = 绿。
   比例规律（A 组源文件实测）：fanzi-t 1024px 格内字身框 ≈ 71.5%，
   zitie-glyph 512px ≈ 77.5%，均正中 —— fanzi 整幅入格即 72%，
   zitie-glyph 缩到 92% 入格把字面对齐到同一比例。 */
.zg-kou, [data-route="pkgDb/pages/char/char"] .zg-tian, [data-route="pkgDb/pages/char/char"] .zg-mi, [data-route="pkgDb/pages/char/char"] .zg-jiu {
  background-color: #eef9f2;
  background-repeat: no-repeat;
  border: calc(var(--rpx) * 3) solid #a9dfc1;
  box-sizing: border-box;
}
[data-route="pkgDb/pages/char/char"] /* 田字格：十字 */
.zg-tian {
  background-image: linear-gradient(#a9dfc1, #a9dfc1), linear-gradient(#a9dfc1, #a9dfc1);
  background-size: calc(var(--rpx) * 3) 100%, 100% calc(var(--rpx) * 3);
  background-position: center, center;
}
[data-route="pkgDb/pages/char/char"] /* 米字格：十字 + 双对角线 */
.zg-mi {
  background-image: linear-gradient(45deg, transparent 49.6%, #a9dfc1 49.6%, #a9dfc1 50.4%, transparent 50.4%),
    linear-gradient(-45deg, transparent 49.6%, #a9dfc1 49.6%, #a9dfc1 50.4%, transparent 50.4%),
    linear-gradient(#a9dfc1, #a9dfc1), linear-gradient(#a9dfc1, #a9dfc1);
  background-size: 100% 100%, 100% 100%, calc(var(--rpx) * 3) 100%, 100% calc(var(--rpx) * 3);
  background-position: 0 0, 0 0, center, center;
}
[data-route="pkgDb/pages/char/char"] /* 九宫格：三分线 */
.zg-jiu {
  background-image: linear-gradient(#a9dfc1, #a9dfc1), linear-gradient(#a9dfc1, #a9dfc1),
    linear-gradient(#a9dfc1, #a9dfc1), linear-gradient(#a9dfc1, #a9dfc1);
  background-size: calc(var(--rpx) * 3) 100%, calc(var(--rpx) * 3) 100%, 100% calc(var(--rpx) * 3), 100% calc(var(--rpx) * 3);
  background-position: 33.2% 0, 66.8% 0, 0 33.2%, 0 66.8%;
}
[data-route="pkgDb/pages/char/char"] .biggrid-wrap {
  display: flex;
  align-items: flex-start;
  gap: calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgDb/pages/char/char"] /* 大字框 calc(var(--rpx) * 480) 见方；fanzi 整幅入格（字面自动 72%） */
.biggrid-zg {
  width: calc(var(--rpx) * 480);
  height: calc(var(--rpx) * 480);
  border-width: calc(var(--rpx) * 4);
  flex-shrink: 0;
  overflow: hidden;
}
[data-route="pkgDb/pages/char/char"] .biggrid-img {
  width: 100%;
  height: 100%;
  /* v4.86.352（木哥 351 号令）：格子里的字淡一些，接近铅笔字的墨迹质感 */
  opacity: 0.6;
}
[data-route="pkgDb/pages/char/char"] /* zitie-glyph 字身 77.5% → 缩到 92% 入格，字面 ≈ 72% 与 fanzi 对齐 */
.biggrid-img-g {
  width: 92%;
  height: 92%;
  margin: 4%;
}
[data-route="pkgDb/pages/char/char"] /* 选格按键：大字框右侧竖排，格子简图 + 文字名 */
.biggrid-picker {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(var(--rpx) * 18);
  padding-top: calc(var(--rpx) * 8);
}
[data-route="pkgDb/pages/char/char"] .bgp-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(var(--rpx) * 4);
}
[data-route="pkgDb/pages/char/char"] .bgp-ico {
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  border-width: calc(var(--rpx) * 2);
  border-color: #cfe9db;
  border-radius: calc(var(--rpx) * 6);
}
[data-route="pkgDb/pages/char/char"] .bgp-on .bgp-ico {
  border-color: #07c160;
}
[data-route="pkgDb/pages/char/char"] .bgp-name {
  font-size: calc(var(--rpx) * 20);
  color: #8a8a8a;
}
[data-route="pkgDb/pages/char/char"] .bgp-on .bgp-name {
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgDb/pages/char/char"] .biggrid-cap {
  display: block;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgDb/pages/char/char"] /* ===== 毛笔示范 · 软笔单字片段（v4.86.348；v4.86.546 木哥 22:56 令改版） =====
   v4.86.546：任何时候只有一行 —— 全部条目进横向滑行（bv-row），不再按 1/2/3 列分
   行/列，不许出现第二行；点哪条哪条播，开播（bindplay）那条挂 bv-big 就地放大到
   左右到边（宽 calc(var(--rpx) * 750)，页 padding calc(var(--rpx) * 24) + 行负边距 calc(var(--rpx) * 6) = calc(var(--rpx) * 18) 一齐吃回来），
   暂停/播完缩回原格原位（calc(var(--rpx) * 313) / calc(var(--rpx) * 176)）归队；
   **只换 class 不重建 video 节点**，播到一半不会跳回开头。
   video 组件不显式给高度会按 300×225 压扁，两档高度必须写死。 */
.bv-row {
  display: block;
  white-space: nowrap;
  margin: 0 calc(var(--rpx) * -6);
}
[data-route="pkgDb/pages/char/char"] .bv-cell {
  display: inline-block;
  width: calc(var(--rpx) * 313);
  padding: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 12);
  box-sizing: border-box;
  vertical-align: top;
}
[data-route="pkgDb/pages/char/char"] .bv-player {
  display: block;
  width: 100%;
  height: calc(var(--rpx) * 176);
  border-radius: calc(var(--rpx) * 10);
  background: #191919;
}
[data-route="pkgDb/pages/char/char"] /* 播放中的那条：宽 calc(var(--rpx) * 750) 左右到边；吃掉页 padding（calc(var(--rpx) * 24)）+ 行负边距（calc(var(--rpx) * 6)） */
.bv-cell.bv-big {
  width: calc(var(--rpx) * 750);
  margin-left: calc(var(--rpx) * -18);
  padding: 0 0 calc(var(--rpx) * 12);
}
[data-route="pkgDb/pages/char/char"] .bv-player.bv-pbig {
  height: calc(var(--rpx) * 422);
  border-radius: 0;
}
[data-route="pkgDb/pages/char/char"] /* 出处全文：装不下才滚（scroll>0 才挂 bv-run），不截省略号、不缩写 */
.bv-src {
  display: block;
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  line-height: 1.5;
  color: #9a9484;
  overflow: hidden;
  white-space: nowrap;
}
[data-route="pkgDb/pages/char/char"] .bv-src-in {
  display: inline-block;
  white-space: nowrap;
}
[data-route="pkgDb/pages/char/char"] .bv-src-in.bv-run {
  animation: bv-marquee 7s ease-in-out infinite alternate;
}


@keyframes bv-marquee {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(var(--shift, 0px));
  }
}
[data-route="pkgDb/pages/char/char"] .bv-more {
  display: block;
  margin-top: calc(var(--rpx) * 2);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pkgDb/pages/char/char"] .bv-toggle {
  margin-top: calc(var(--rpx) * 10);
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 6);
}
[data-route="pkgDb/pages/char/char"] .bv-toggle-t {
  font-size: calc(var(--rpx) * 24);
  color: #7a8a99;
}
[data-route="pkgDb/pages/char/char"] .bv-toggle-i {
  font-size: calc(var(--rpx) * 24);
  color: #7a8a99;
}
[data-route="pkgDb/pages/char/char"] .bv-note {
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pkgDb/pages/char/char"] .bv-note-p {
  display: block;
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  line-height: 1.7;
}
[data-route="pkgDb/pages/char/char"] /* ===== 毛笔里这几笔怎么走 · 硬笔借什么（v4.86.499） =====
   一条一行：左边一个笔画字（横/竖…），右边两句话 —— 毛笔怎么走、硬笔借什么。
   字号统一 24/calc(var(--rpx) * 26) 两档（和本页说明文字同一尺度），颜色只用绿（口径）与深灰（正文）。 */
.bs-row {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 10);
  background: #f7fbf8;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pkgDb/pages/char/char"] .bs-k {
  flex: none;
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  line-height: calc(var(--rpx) * 56);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #d9f0e3;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgDb/pages/char/char"] .bs-txt {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 14);
}
[data-route="pkgDb/pages/char/char"] .bs-soft {
  display: block;
  font-size: calc(var(--rpx) * 24);
  color: #576b61;
  line-height: 1.7;
}
[data-route="pkgDb/pages/char/char"] .bs-hard {
  display: block;
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 28);
  color: #1f2d27;
  line-height: 1.7;
}
[data-route="pkgDb/pages/char/char"] .bs-foot {
  display: block;
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  line-height: 1.7;
}
[data-route="pkgDb/pages/char/char"] /* ===== 课程训练纸样式随四门课搬去示范页（v4.86.516），这里不再保留 ===== */

/* v7.0.208：打印版 PDF 入口（与示范页 .sz-print 同款，尺寸锁 A4） */
.sz-print {
  display: flex;
  flex-direction: column;
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 22);
  border: calc(var(--rpx) * 1) solid #e6dcc4;
  border-radius: calc(var(--rpx) * 12);
  background: #fdfaf2;
}
[data-route="pkgDb/pages/char/char"] .sz-print-t {
  font-size: calc(var(--rpx) * 24);
  color: #8a7346;
}
[data-route="pkgDb/pages/char/char"] .sz-print-s {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #b3a992;
}



/* ---- pkgDb/pages/demo/demo.wxss ---- */
[data-route="pkgDb/pages/demo/demo"] /* 训练营页 · v4.86.528（木哥令「页面ui底色改为白色，和整体平台风格统一」）
 * 白底浅色版：页面 #ffffff，文字黑/灰两档，品牌绿 #07c160 只做选中与重点。
 * 视频框内部保留影院黑（视频本身是黑的），付费层/试看胶囊在框内不变。
 * 字号只走 20/24/28/32 档，圆角 999/10/16 —— 全站口径不变。 */
.page {
  min-height: calc(var(--vh) * 100);
  background: #ffffff;
  /* v4.86.545：顶栏回系统导航条（微信原生占位），页面自己不用再给状态栏+标题让位了 */
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgDb/pages/demo/demo"] /* v4.86.545 留档：自绘顶栏（.navback / .navtitle）整段撤掉，回系统导航条。
   自绘那版按 env(safe-area-inset-top) 硬算 top，换机型/横屏就往上飘 —— 这就是
   「又回去错误的一版」的来源；原生导航条不算，位置永远和查字页同一处。
   历史口径：526 木哥令删的是页内那条自绘白条，不是系统导航条；531 令标页名，
   由 json 的 navigationBarTitleText 给，不必自绘。 */

/* ===== 通栏 hero（留档：当前版式用不到，颜色跟白底走） ===== */
.hero {
  margin: 0 calc(var(--rpx) * -24);
  padding: calc(var(--rpx) * 48) calc(var(--rpx) * 32) calc(var(--rpx) * 36);
  background:
    radial-gradient(120% 160% at 85% -20%, rgba(7, 193, 96, 0.10) 0%, rgba(7, 193, 96, 0) 55%),
    linear-gradient(180deg, #f4fbf6 0%, #ffffff 100%);
  box-sizing: border-box;
}
[data-route="pkgDb/pages/demo/demo"] .hero-cap {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  letter-spacing: calc(var(--rpx) * 4);
}
[data-route="pkgDb/pages/demo/demo"] .hero-title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 10);
}
[data-route="pkgDb/pages/demo/demo"] .hero-name {
  font-size: calc(var(--rpx) * 48);
  font-weight: 600;
  color: #1a1a1a;
  line-height: 1.25;
}
[data-route="pkgDb/pages/demo/demo"] .hero-all {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pkgDb/pages/demo/demo"] .hero-tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: calc(var(--rpx) * 12);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgDb/pages/demo/demo"] .htag {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  background: #f4f5f4;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 16);
}
[data-route="pkgDb/pages/demo/demo"] /* 当前节 = 剧集页那个带边的重点标签 */
.htag-main {
  color: #07c160;
  background: rgba(7, 193, 96, 0.08);
  border: calc(var(--rpx) * 1) solid rgba(7, 193, 96, 0.45);
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 标签行 ===== */
.stats {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 4) calc(var(--rpx) * 6);
}
[data-route="pkgDb/pages/demo/demo"] .stat {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
}
[data-route="pkgDb/pages/demo/demo"] .stat-dot {
  font-size: calc(var(--rpx) * 24);
  color: #d5d5d5;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 区块标题行（选择训练营 / 选节 / 本节要写的字 / 训练纸）===== */
.sec {
  margin-top: calc(var(--rpx) * 36);
}
[data-route="pkgDb/pages/demo/demo"] .sec-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: calc(var(--rpx) * 16);
  margin-bottom: calc(var(--rpx) * 18);
}
[data-route="pkgDb/pages/demo/demo"] .sec-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #1a1a1a;
}
[data-route="pkgDb/pages/demo/demo"] .sec-all {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pkgDb/pages/demo/demo"] /* v4.86.526：本节信息（第N节 + 节名）跟在「选节」标题后（从视频框底挪来） */
.sec-lesson {
  font-size: calc(var(--rpx) * 24);
  color: #555555;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 选节（选集号码排）===== */
.eps {
  white-space: nowrap;
}
[data-route="pkgDb/pages/demo/demo"] .ep {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: calc(var(--rpx) * 108);
  height: calc(var(--rpx) * 88);
  margin-right: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 10);
  background: #f4f5f4;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 单笔片段键（v4.86.550：视频框下边横滑，标注「笔画·笔」）===== */
.sclips {
  margin-top: calc(var(--rpx) * 16);
  white-space: nowrap;
}
[data-route="pkgDb/pages/demo/demo"] .sclip {
  display: inline-flex;
  align-items: center;
  height: calc(var(--rpx) * 60);
  padding: 0 calc(var(--rpx) * 24);
  margin-right: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: #f4f5f4;
  border: calc(var(--rpx) * 1) solid #e5e6e5;
  font-size: calc(var(--rpx) * 24);
  color: #333333;
}
[data-route="pkgDb/pages/demo/demo"] /* v7.0.017：字键（体验营/三支笔）—— 键上就一个汉字，字号比「笔画·笔种」大一号、留白宽一点 */
.sclip-ch {
  padding: 0 calc(var(--rpx) * 30);
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
}
[data-route="pkgDb/pages/demo/demo"] /* v7.0.044：多字键（横折弯钩 / 握笔姿势 / 速度练习 / 整页书写）—— 名字有几个字就几个字，
   字号回正常档，别把一行挤爆；不截断、不改名，家长点之前就得看清是哪一条。 */
.sclip-w {
  padding: 0 calc(var(--rpx) * 22);
  font-size: calc(var(--rpx) * 24);
  max-width: calc(var(--rpx) * 320);
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-route="pkgDb/pages/demo/demo"] /* v7.0.044：这一条还没出片（ready.json 里没有）—— 淡一档但仍摆着，
   点了明说「在整理中」；片子传上去同一个键立刻能播，不发版。 */
.sclip-wait {
  color: #b6b9b8;
  border-color: #ececeb;
  background: #fafaf9;
}
[data-route="pkgDb/pages/demo/demo"] .sclip-hover {
  opacity: 0.85;
}
[data-route="pkgDb/pages/demo/demo"] .sclip-on {
  background: #07c160;
  border-color: #07c160;
  color: #ffffff;
  font-weight: 600;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 选节（选集）===== */

.ep-no {
  font-size: calc(var(--rpx) * 32);
  color: #333333;
}
[data-route="pkgDb/pages/demo/demo"] .ep-hover {
  opacity: 0.85;
}
[data-route="pkgDb/pages/demo/demo"] .ep-on {
  background: #07c160;
}
[data-route="pkgDb/pages/demo/demo"] .ep-on .ep-no {
  color: #ffffff;
  font-weight: 600;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 本节要写的字（田字格墙）===== */
.sz-chars {
  display: flex;
  flex-wrap: wrap;
  /* v4.86.529：≤3 个定宽小格 + 整行居中；
     v4.86.532（木哥令「设置一个字距」）：字距改用 margin（calc(var(--rpx) * 32) 间隔 = 左右各 calc(var(--rpx) * 16)），
     scroll-view 里 gap 兼容性不稳，margin 保险 */
  justify-content: center;
}
[data-route="pkgDb/pages/demo/demo"] /* 节内字 >3 一行左右滑（512 号口径）：scroll-view + nowrap，格子定宽往右推 */
.sz-chars-x {
  display: block;
  white-space: nowrap;
}
[data-route="pkgDb/pages/demo/demo"] .sz-chars-x .sz-char {
  display: inline-block;
  width: calc(var(--rpx) * 204);
  margin-right: calc(var(--rpx) * 16);
  vertical-align: top;
}
[data-route="pkgDb/pages/demo/demo"] .sz-char {
  width: calc(var(--rpx) * 180);
  height: calc(var(--rpx) * 180);
  /* v4.86.532：字距用 margin 撑（格与格 calc(var(--rpx) * 32)），比 gap 在 scroll-view 里稳 */
  margin: 0 calc(var(--rpx) * 16);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  /* 白底田字格（526），白底版页面上更贴练习册纸观感 */
  color: #1a1a1a;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #bfe3d2;
  border-radius: calc(var(--rpx) * 10);
  box-sizing: border-box;
  overflow: hidden;
  flex-shrink: 0;
  position: relative; /* v7.0.004：笔画名小字贴格底 */
}
[data-route="pkgDb/pages/demo/demo"] .sz-char-hover {
  border-color: #07c160;
}
[data-route="pkgDb/pages/demo/demo"] .sz-char-img {
  width: 100%;
  height: 100%;
  /* v7.0.133（木哥 12:3x 令「训练营里格子里的字色度减轻，保持铅笔字的质感灰度」）：
     原来 opacity: 1 = 满墨，屏幕上像印的黑字；压到 0.6 与查字页格子同一档。
     墨色浓淡本身在范字库出库时已归一（屏幕腿 webp 统一铅笔灰度），这里只定显示档。 */
  opacity: 0.6;
}
[data-route="pkgDb/pages/demo/demo"] .sz-char-txt {
  font-size: calc(var(--rpx) * 120);
  line-height: 1;
  color: #1a1a1a;
  white-space: nowrap;
}
[data-route="pkgDb/pages/demo/demo"] /* v7.0.004（木哥截图：长横/垂露竖被断行截掉）—— 笔画名按字数分档，一格容得下整名 */
.sz-char-txt.sz-t2 { font-size: calc(var(--rpx) * 92); }
[data-route="pkgDb/pages/demo/demo"] .sz-char-txt.sz-t3 { font-size: calc(var(--rpx) * 60); letter-spacing: 0; }
[data-route="pkgDb/pages/demo/demo"] .sz-char-txt.sz-t4 { font-size: calc(var(--rpx) * 46); letter-spacing: 0; }
[data-route="pkgDb/pages/demo/demo"] /* 田字格底（526 木哥令：白底 + 十字分四格）：格线淡绿，字图直接铺 */
.zg-tian {
  background-color: #ffffff;
  background-image: linear-gradient(#bfe3d2, #bfe3d2), linear-gradient(#bfe3d2, #bfe3d2);
  background-size: calc(var(--rpx) * 2) 100%, 100% calc(var(--rpx) * 2);
  background-position: center, center;
  background-repeat: no-repeat;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 训练纸 ===== */
.sz-sheets {
  display: flex;
  flex-direction: column;
  gap: calc(var(--rpx) * 20);
}
[data-route="pkgDb/pages/demo/demo"] /* 纸 >1 张一行左右滑（512 号口径）：单张全宽，多张定宽 calc(var(--rpx) * 360) 往右推 */
.sz-sheets-x {
  display: block;
  white-space: nowrap;
}
[data-route="pkgDb/pages/demo/demo"] .sz-sheets-x .sz-sheet {
  display: inline-block;
  width: calc(var(--rpx) * 360);
  margin-right: calc(var(--rpx) * 20);
  vertical-align: top;
}
[data-route="pkgDb/pages/demo/demo"] .sz-sheets-x .sz-sheet-img {
  width: calc(var(--rpx) * 360);
}
[data-route="pkgDb/pages/demo/demo"] .sz-sheet {
  width: 100%;
}
[data-route="pkgDb/pages/demo/demo"] .sz-sheet-img {
  width: 100%;
  border-radius: calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 1) solid #ececec;
  background: #ffffff;
}
[data-route="pkgDb/pages/demo/demo"] .sz-sheet-cap {
  display: block;
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 2) dashed #dddddd;
  background: #fafafa;
  color: #999999;
  font-size: calc(var(--rpx) * 28);
  text-align: center;
}
[data-route="pkgDb/pages/demo/demo"] .sz-sheet-ph {
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 2) dashed #dddddd;
  background: #fafafa;
}
[data-route="pkgDb/pages/demo/demo"] .sz-sheet-ph-t {
  color: #999999;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgDb/pages/demo/demo"] .sec-tip {
  display: block;
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #b0b0b0;
}
[data-route="pkgDb/pages/demo/demo"] /* v7.0.205：打印版 PDF 入口（尺寸锁 A4，打印店/家里打印机都不用调缩放） */
.sz-print {
  display: flex;
  flex-direction: column;
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 22);
  border: calc(var(--rpx) * 1) solid #e6dcc4;
  border-radius: calc(var(--rpx) * 12);
  background: #fdfaf2;
}
[data-route="pkgDb/pages/demo/demo"] .sz-print-t {
  font-size: calc(var(--rpx) * 24);
  color: #8a7346;
}
[data-route="pkgDb/pages/demo/demo"] .sz-print-s {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #b3a992;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 换一门（海报墙，留档：523 起换成小键排）===== */
.wall {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 16);
}
[data-route="pkgDb/pages/demo/demo"] .poster {
  width: calc((100% - calc(var(--rpx) * 16)) / 2);
  box-sizing: border-box;
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  background: #f8f8f8;
  border: calc(var(--rpx) * 1) solid #ececec;
}
[data-route="pkgDb/pages/demo/demo"] .poster-hover {
  opacity: 0.88;
}
[data-route="pkgDb/pages/demo/demo"] .poster-on {
  border-color: rgba(7, 193, 96, 0.55);
  background: linear-gradient(160deg, rgba(7, 193, 96, 0.08) 0%, #f8f8f8 60%);
}
[data-route="pkgDb/pages/demo/demo"] .poster-name {
  display: block;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #1a1a1a;
}
[data-route="pkgDb/pages/demo/demo"] .poster-sub {
  display: block;
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 页脚 ===== */
.foot {
  margin-top: calc(var(--rpx) * 44);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #b0b0b0;
  line-height: 1.7;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 付费权限（试看胶囊 / VIP 角标 / 试看结束层）——框内-media 颜色不变 ===== */

/* 试看倒数胶囊（挂在视频框底） */
.htag-trial {
  background: rgba(255, 255, 255, 0.14);
  color: #ffd27d;
}
[data-route="pkgDb/pages/demo/demo"] /* 选节号牌 / 换一门海报右上角 VIP 角标（留档：526 全拆） */
.ep {
  position: relative;
}
[data-route="pkgDb/pages/demo/demo"] .ep-vip, [data-route="pkgDb/pages/demo/demo"] .poster-vip {
  position: absolute;
  top: calc(var(--rpx) * -8);
  right: calc(var(--rpx) * -8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 8) calc(var(--rpx) * 8) calc(var(--rpx) * 8) 0;
  background: #a8792c;
  color: #fdf8ec;
  font-size: calc(var(--rpx) * 20);
  line-height: 1.3;
  font-weight: 600;
}
[data-route="pkgDb/pages/demo/demo"] .poster {
  position: relative;
}
[data-route="pkgDb/pages/demo/demo"] /* 试看结束层：只罩视频框内（v4.86.523②），黑色遮罩 + 居中卡（在黑框里不刺眼） */
.pw {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 60;
  background: rgba(0, 0, 0, 0.88);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgDb/pages/demo/demo"] /* v4.86.534（木哥令「试看完成的弹窗别出视频框」）：整块压在框里 ——
   框只有 calc(var(--rpx) * 420) 高，卡片按这个高度收紧（max-height + 内部压缩），
   不许再顶到框外被圆角裁掉一截。 */
.pw-card {
  width: calc(var(--rpx) * 520);
  max-height: 100%;
  box-sizing: border-box;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  text-align: center;
}
[data-route="pkgDb/pages/demo/demo"] .pw-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #ffffff;
}
[data-route="pkgDb/pages/demo/demo"] .pw-sub {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.6);
}
[data-route="pkgDb/pages/demo/demo"] .pw-price {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #ffd27d;
}
[data-route="pkgDb/pages/demo/demo"] .pw-btn {
  margin-top: calc(var(--rpx) * 22);
  width: calc(var(--rpx) * 320);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(135deg, #c9a15c, #a8792c);
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  padding: 0;
}
[data-route="pkgDb/pages/demo/demo"] .pw-btn::after {
  border: none;
}
[data-route="pkgDb/pages/demo/demo"] .pw-btn-hover {
  opacity: 0.85;
}
[data-route="pkgDb/pages/demo/demo"] .pw-retry {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.72);
}
[data-route="pkgDb/pages/demo/demo"] .pw-retry-hover {
  opacity: 0.7;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 视频框（框内保持影院黑，外沿收一圈浅边贴白底） ===== */
.vsec {
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgDb/pages/demo/demo"] .vframe {
  position: relative;
  border-radius: calc(var(--rpx) * 20);
  overflow: hidden;
  background: #000;
  border: calc(var(--rpx) * 1) solid rgba(0, 0, 0, 0.10);
}
[data-route="pkgDb/pages/demo/demo"] .vload {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.28);
  pointer-events: none;
}
[data-route="pkgDb/pages/demo/demo"] .vdo {
  width: 100%;
  height: calc(var(--rpx) * 420);
  display: block;
}
[data-route="pkgDb/pages/demo/demo"] /* v4.86.534（木哥令「标配都要有」）：自绘的中心播放键撤掉 ——
   原生控制条的播放/暂停/进度/全屏四件才是标配，自绘那颗只会挡住原生控件 */

/* v7.0.046：封面层（点它才开始拉片）。
   风格统一由这里保证：同一张 16:9 帧、同一道自下而上的压暗、同一颗金边播放圈、
   同一处左下角两行字（大字=这一条练什么，小字=哪门课第几节）。
   所有封面都是 1280×720、同一套白平衡，图里不烘任何字 —— 换文案不用重出图。 */
.vcover {
  position: relative;
  width: 100%;
  height: calc(var(--rpx) * 420);
  overflow: hidden;
  /* 封面缺图时的底：同一套深底，不摆破图也不白闪 */
  background: linear-gradient(135deg, #2b2b2b, #14100c);
}
[data-route="pkgDb/pages/demo/demo"] .vcover-hover {
  opacity: 0.92;
}
[data-route="pkgDb/pages/demo/demo"] .vcover-img {
  width: 100%;
  height: 100%;
  display: block;
}
[data-route="pkgDb/pages/demo/demo"] .vcover-shade {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.08) 0%, rgba(0, 0, 0, 0) 38%, rgba(0, 0, 0, 0.62) 100%);
  pointer-events: none;
}
[data-route="pkgDb/pages/demo/demo"] .vcover-play {
  position: absolute;
  left: 50%;
  top: 50%;
  width: calc(var(--rpx) * 96);
  height: calc(var(--rpx) * 96);
  margin: calc(var(--rpx) * -48) 0 0 calc(var(--rpx) * -48);
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.42);
  border: calc(var(--rpx) * 2) solid rgba(255, 255, 255, 0.72);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgDb/pages/demo/demo"] .vcover-tri {
  width: 0;
  height: 0;
  margin-left: calc(var(--rpx) * 8);
  border-left: calc(var(--rpx) * 26) solid #ffffff;
  border-top: calc(var(--rpx) * 16) solid transparent;
  border-bottom: calc(var(--rpx) * 16) solid transparent;
}
[data-route="pkgDb/pages/demo/demo"] .vcover-txt {
  position: absolute;
  left: calc(var(--rpx) * 24);
  right: calc(var(--rpx) * 24);
  bottom: calc(var(--rpx) * 20);
  display: flex;
  flex-direction: column;
}
[data-route="pkgDb/pages/demo/demo"] .vcover-title {
  font-size: calc(var(--rpx) * 40);
  line-height: 1.12;
  font-weight: 700;
  color: #ffffff;
  text-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 12) rgba(0, 0, 0, 0.55);
}
[data-route="pkgDb/pages/demo/demo"] .vcover-meta {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.82);
  text-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 10) rgba(0, 0, 0, 0.5);
}
[data-route="pkgDb/pages/demo/demo"] .vcover-tag {
  position: absolute;
  right: calc(var(--rpx) * 16);
  top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(0, 0, 0, 0.45);
  border: calc(var(--rpx) * 1) solid rgba(255, 210, 125, 0.6);
  color: #ffd27d;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgDb/pages/demo/demo"] .vph {
  height: calc(var(--rpx) * 420);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 0 calc(var(--rpx) * 40);
}
[data-route="pkgDb/pages/demo/demo"] .vph-t {
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.6);
  text-align: center;
}
[data-route="pkgDb/pages/demo/demo"] .vph-s {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  color: #ffd27d;
}
[data-route="pkgDb/pages/demo/demo"] /* v4.86.528（木哥令「不点播放不计时/不弹层」）：没片段的节不再自动弹付费层，
 * 占位给一颗开通键当出口 */
.vph-pay {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 36);
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(135deg, #c9a15c, #a8792c);
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 选择训练营 —— 极简一排小键（白底版） ===== */
.cbtns {
  display: flex;
  gap: calc(var(--rpx) * 14);
}
[data-route="pkgDb/pages/demo/demo"] .cbtn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: calc(var(--rpx) * 6);
  height: calc(var(--rpx) * 64);
  border-radius: calc(var(--rpx) * 999);
  background: #f4f5f4;
  border: calc(var(--rpx) * 1) solid #e5e6e5;
}
[data-route="pkgDb/pages/demo/demo"] .cbtn-on {
  background: rgba(7, 193, 96, 0.08);
  border-color: rgba(7, 193, 96, 0.5);
}
[data-route="pkgDb/pages/demo/demo"] .cbtn-hover {
  opacity: 0.75;
}
[data-route="pkgDb/pages/demo/demo"] .cbtn-name {
  font-size: calc(var(--rpx) * 24);
  color: #333333;
}
[data-route="pkgDb/pages/demo/demo"] .cbtn-on .cbtn-name {
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgDb/pages/demo/demo"] .cbtn-vip {
  font-size: calc(var(--rpx) * 20);
  line-height: 1.3;
  padding: calc(var(--rpx) * 1) calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 8);
  background: #a8792c;
  color: #fdf8ec;
  font-weight: 600;
}
[data-route="pkgDb/pages/demo/demo"] /* ===== 视频框底（框内渐变黑底不变，试看胶囊金色不变） ===== */
/* v4.86.558（木哥 01:5x 令「右下角的黄字提示改到视频框的左上角，文字大一号」）：
   试看胶囊从框底右下搬到视频框左上角，字号 20 → calc(var(--rpx) * 24)（大一档），上下留白跟着放宽。
   框底那条托底的压黑渐变一并撤掉 —— 它只是为右下角那行小字托底，字一走就没用了。 */
.vmeta {
  position: absolute;
  left: calc(var(--rpx) * 16);
  top: calc(var(--rpx) * 16);
  z-index: 30;
  display: flex;
  flex-direction: column;
  gap: calc(var(--rpx) * 8);
  pointer-events: none;
}
[data-route="pkgDb/pages/demo/demo"] .vmeta-row {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 12);
  flex-wrap: wrap;
}
[data-route="pkgDb/pages/demo/demo"] .vmeta-trial {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.4;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(255, 210, 125, 0.16);
  color: #ffd27d;
}
[data-route="pkgDb/pages/demo/demo"] /* v7.0.008（木哥 21:35 点头）——图是「以格子为画布」出的：墨迹本身就摆在原格位置、
 * 原格大小（数据 = 原版笔画bbox.json 实测），所以这里必须满格 100% 铺，
 * 一缩走样、一留白就偏。宽高 100%，不缩不裁不补边。 */
.sz-stroke-img {
  width: 100%;
  height: 100%;
}
[data-route="pkgDb/pages/demo/demo"] /* 笔画名贴底一行小字（v7.0.004；v7.0.006 让出位置后不再压笔画） */
.sz-stroke-cap {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(var(--rpx) * 6);
  text-align: center;
  font-size: calc(var(--rpx) * 20); /* 字号只走 5 档（20/24/28/32/40），calc(var(--rpx) * 22) 归到 20 */
  line-height: 1.2;
  color: #6b6b6b;
  letter-spacing: calc(var(--rpx) * 1);
}



/* ---- pkgDb/pages/char-video/char-video.wxss ---- */
[data-route="pkgDb/pages/char-video/char-video"] .page {
  min-height: calc(var(--vh) * 100);
  background: #ededed;
  padding-bottom: calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgDb/pages/char-video/char-video"] .vwrap {
  background: #000000;
  width: 100%;
  height: 100vw;
}
[data-route="pkgDb/pages/char-video/char-video"] .vd {
  width: 100%;
  height: 100%;
}
[data-route="pkgDb/pages/char-video/char-video"] .vd-empty {
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: calc(var(--rpx) * 12);
  padding: 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgDb/pages/char-video/char-video"] .vd-empty-t {
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  text-align: center;
}
[data-route="pkgDb/pages/char-video/char-video"] .vd-empty-s {
  color: #999999;
  font-size: calc(var(--rpx) * 24);
  text-align: center;
}
[data-route="pkgDb/pages/char-video/char-video"] .err {
  margin: calc(var(--rpx) * 20) calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 24);
  color: #b26b00;
  background: #fff7e8;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  line-height: 1.6;
}
[data-route="pkgDb/pages/char-video/char-video"] /* 视频区的动作按钮（重试 / 去购买）—— 2026-10-12 加签名门槛后才有：
   以前这里是「有就有、没有就没有」，现在多了「取不到」这一种要说出口的状态 */
.vd-btn {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 44);
  border-radius: calc(var(--rpx) * 999);
  border: calc(var(--rpx) * 1) solid #4a4a4a;
  color: #dddddd;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.4;
}
[data-route="pkgDb/pages/char-video/char-video"] .vd-btn.primary {
  /* v4.86.523：购课键统一微信小店风格（原规范绿） */
  background: #ff6146;
  border-color: #ff6146;
  color: #ffffff;
}
[data-route="pkgDb/pages/char-video/char-video"] .vd-btn-hover {
  opacity: 0.85;
}
[data-route="pkgDb/pages/char-video/char-video"] .card {
  margin: calc(var(--rpx) * 20) calc(var(--rpx) * 24) 0;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 28);
}
[data-route="pkgDb/pages/char-video/char-video"] .head {
  display: flex;
  align-items: flex-end;
  gap: calc(var(--rpx) * 24);
  padding-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgDb/pages/char-video/char-video"] .big {
  font-size: calc(var(--rpx) * 96);
  line-height: 1;
  color: #191919;
  font-weight: 500;
}
[data-route="pkgDb/pages/char-video/char-video"] .metas {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  padding-bottom: calc(var(--rpx) * 10);
}
[data-route="pkgDb/pages/char-video/char-video"] .frow {
  margin-top: calc(var(--rpx) * 24);
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 24);
}
[data-route="pkgDb/pages/char-video/char-video"] .fanzi {
  width: calc(var(--rpx) * 200);
  height: calc(var(--rpx) * 200);
  border-radius: calc(var(--rpx) * 12);
  background: #fafafa;
  flex-shrink: 0;
}
[data-route="pkgDb/pages/char-video/char-video"] .flabel {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pkgDb/pages/char-video/char-video"] .block {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgDb/pages/char-video/char-video"] .label {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 8);
  font-weight: 500;
}
[data-route="pkgDb/pages/char-video/char-video"] .body {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  line-height: 1.7;
}
[data-route="pkgDb/pages/char-video/char-video"] .body.teacher {
  color: #444444;
  white-space: pre-line;
}
[data-route="pkgDb/pages/char-video/char-video"] .tip {
  margin-top: calc(var(--rpx) * 28);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  line-height: 1.6;
}



/* ---- pkgMoling/pages/game/game.wxss ---- */
[data-route="pkgMoling/pages/game/game"] /* 毛笔书法字体子集（马善政楷书，OFL 开源）仅含标题用字 */
@font-face { font-family: 'MSZ'; src: url(data:font/woff2;base64,d09GMgABAAAAABAsAA0AAAAAGmwAAA/aAAIAxQAAAAAAAAAAAAAAAAAAAAAAAAAAGyAcIAZgAHwRCAqrQJ9mATYCJAMYCxgABCAFg14HIBuZE1GUrlqV4KuDeExnpQaRSJfJWy/Y6PhNcY01RNu8j+SJVsQGrIUZYII4xSrMHIj2uttVlATA5e7HwtbkCJ7zjWMSxImGBZJJwPsn3eozbdK+NxPIrsdOXCs2Oen+lluU30ILbWYCZOEM/M5X9UwDgww5YH0CbWkgyG4qIWpCaq9/RVEJDakZv9T5TX8tEFSAfZHUbt/bXdkJy5KdT6CP0B0GZu74/WZGrEHIeGqUTikHfv8wex88mUSxibW40MQkIWlLf3FtIa+Vsldt2eg1WwwW51rx8yMAAgBNzg5UxiakARIKANDTA/L18S5Ho3vQJIAB8BnOAgDo9d1BS+AdeILIgvSknElMFDiUCGbdRxp7RgHIE7LIVgD0gn9GNQcwgEUIioCgSIOqZBI84n74GCQ2UzWpcVlDs1Y1WsweHaJZ9zu5Bvqvbwk2v113ZN3+lUNWGidOGXdv2LeKXgDyYwu10L8HcCUskWRUARArAMjhSHgqEYw7cTQEqv9QaLRAHC1tkSc6cSyufB4ng1dkzZIy/Px441iF7TgWhy1RNpuXlTaObNSQPNVuHg2ip5qYY0COhu9k77Ak/dmxJLX+Vo5cVlxjAOAJUjpx+s2kKiBnXxxGplUIsNbRJApTVKZ09Rygs00o+d3eQ6iAQn+/3OVvrGfX0gfJ0hk+0bFFdzJ+CmznaOPg1Bukr0Nobql+J8hTLwafaX1DBsgvTL0OIULixh4+ASC51gemUQkA03t3VLfCbrjfub2zkSDz2cHuhHbRZXrcn2lPDWu3OrmpmgCGxkPGwYYQ0uB1eqxJFgiTqepH08/YgRCxJK+lD9o0UMlOKLfKslsdB4AH+Tc+d8hOmfrRYll5u88CZDTrqES2kMgiADDlXVRTTh+PtRO9ZUKk84r3n0r1sDd9YaiX7Daw25W7R5BMJUGOPjHDjwN6fhBUIhblsReDj+IG8sXAv7dxLWlle1Ti8SLSmkcWdACWoEo+EpyG7mAU8oHmZz/4WQ233+y3oImWX7VDiAQEw46jm9Y6FglMeRHdmNORAz919eL9zp2D+dORgTDP3GnzVuDhA/d96Zl+TkEWWdzG+vIYECAd5/ifjZgMnh4pOTpzyYQG8k8lP69wvOKRjGOUipyEFtow4mY2InSwXFaY6pKSLM+StMoyVHZ4r5pZTwAzVKKV8pD+ScbyqyziNZ6crhLw39PjMhjHYnRGxcS/3rvjxIgccjwXjZrFZWxwLWSKa3COR8PhsQtBpcT0g6MRzUsTGmm1kJMAKmKniHuRg/WtWYFuGIqcHddta7ulMNjy3ou/NI/U4oobGke43X/LqtXQubCfK0EP2dX+HeTQan72psnh9VxbMJX5XTEmCIDpbXGE8l9wMWIaE4vLUekRfJ2+QcU8QHUlnYsHl0y7VvkJGTQVY1Uw5WtCO4R6A4xfybQPWVRcRUgvegCRTKnW6XUWyWMxIghV088wXXReGM/8GMJV2k7Lyx7NK+zfGDWv03wazgHKyPILZN5Jr/xu5AeTKae1SrgS1BF5cVk+xMqQs4TonVGITJZdUQ13G/fwAPhYaqKjSqVdYc1NX2t4bShQ8JyyGaGxNE/lAMX4uFcs4J/uiRL5aiQdnuc7hQXCwt2TdlpyVNqqr0Ow5ONzgERVLEbSmJODXb94mCJ+5FxxrU4y4MjVw1fti7mtHw0lJw6B2igEtzWkBUHzU06xY06vH576qOh9yVRO6KuOtjiFwMD94aaKXLtaCsBLpStH8BrsuK+XVrLtyNqYNZZGiywVt0oAgMNgumvOP+3QvKLq7h2v4k/905BUNqiwQmsZr40X+R2v9EA3fiwhdavaQiUETIbB8yAMmvzI5MqG1hvd9FYyz2UTYe5lCNC1QMVc/yg315COvLySrcRUXmk5u9deGPG7bPyMyuGnSuCaAVylojTQoSJgzc6gXWLRiYRHTGstAHeic2WW8f0wE6ZuWTUO9pkXWCGoconkumkbO/S7JSoiI8Jc/5pi/6T/1rHZeLC7gi4g5ONjn414QqNI6U5Rhc09zacpjuSOstR4FAomqrWcC5hESvkByzKYvXn5YDi/m+K8NZG3ItNHhAjL+fP1XQXzn4Mzb9q7OKp4g1xS/ajaZuonX407qi4AdSpMvzgvjJipuppbif2B/q6neSzLBTvsvT2un3aQK7NtxHuxdqb1V9U7LR1Pa/1+eNP0p/H1K5VdS5IwrlZZ1I0zlQdygYbMBy73c3Au9GQ/dzq4ZBTZCcWGtbEfD0kSzGIWpaE1hKpLqJQLjkzE/1UAKDxA7MyFHX6r9rdf7Kh37I9ta3UOFQQktlOOF5EFt5pS35mTP1fOjjao7J16TUklAeSWcnYg/HCS7wec/LvppyeO5fSsOWF+69EhaWapPuk3u6xQFidUDLPuiwsriv8lMUVkEi6MWkd6+ALXhyi18MTyXRiSnmprNAYzqXxBNKP4I3/Vm0ecHMYZ9pf8jGgUpr4Xc9eHLeaxWturjx+V46TJP3ayaTRB3oQibdF0hcO9plSexO8Ek18bRzP49wY1e9rAvPtz+4fs/vmiwe7l8Mqj3cuCaqy1rLzS9YE/frIP8thjKdLovzlblkSivIw2YaT6ZlmGdHAyQ68wmRelgpqrtTTcLZrk7D8+LZPiseJCebmuxQ4iq4YuxJAQ4ih2xykKQRnYUAKOP9Ml2W38RnaEz4kh5gp81a839m1JT0kqdq2jfB1xcGpnflyDaTYzctNRIoNPn6dwX2TzkkL2A8djz6dnJMk5dHl30kjZ1S1yvkAevhoseWa57LrW5DTL8PzMXWPsb5Jes2bMlOrABdoBH34s7gOTySpeYN1VhctTNbF0sbe1m5eAkVpd3+Gpg4usZHIcxOZj+sIjQ6p2X50tVraDdTC0X1CY0e1GlTs7C2NjbylMbd0zLQLMTR/7wFuPomKtsw90mLqz235X6x4PwmVGUq1ndZmrVXr69CYtTVhiNH9aEbgLGijyN4MDc3grccJF26W9pdS52o+O1vktIGH7PREGBHnVLYtxEK5i99yOh3wedy8Jii5jw7JYvDOZX54fM7iYY5IMXPsxqHd4mEuEwpu/YKi1VhF96ncnscfOxdC4flGA+exUTKYvRgdNH9TYi2Ee8yfl6T+CrwYwrSiVYFZcFX11GTHrwSs1+SsFi8mm6CHb3kRhkNEot317Mz0XXZ04vmY6MTT+yqrbvmFcDkbucJCVAe5tzocA3007Rz0VtX3kWli7ccJRk+XExTejyCwEsCqL+pdCrjnb7vueq6oIbkzgYGqrtkq3fa3rUmbsdlP443F0DI+8tJpDyFlhuu6ViUmLIeDZytrDjXQd1hOfT+SWR7kvmzRlK0QThvcftFKCzpd1TSJsC5c/PUlyvjv3GvKsPZFAy9YuwL+Wkyd2P9rVApdFR/huJhdMagRxd1czi7sl14XnErdkyjtkg1vl5l5rE1a1eLRRUmO71ebLbV89Wke9LxrOZ7+b5hOdtbWtGBuuOP6Nxcq3lqs9Ux5+93QQbOlP5c1Uj0iOZLGf851qcLsEAKL6XMdDN8tIAzaHmiCT6/DRo82O/M39Tkgo58al0rHtLya4h3J/fxpkxmU1Tjun4dOmB+tIfCOvNQv7gZH+aS0kqfixxS3135RCw0CO97aKM+dUI2HUPRVGPBwDoxjERvPi6NFuTwRz6AbcPAMuLj5G0WMyhiz62QFuzvilZUeQrA1jNqyerRX6XJ4tZysoVlzbyHDs+vIXcpELyZJeoN1GCwdK5bwYfSM/hj9ehQ/mT0K+Xk1VxcZ48UvcgoLYLzudoEjbwQb2UZ9nESIUo3GifChNr9lXFKZtjlVwpv/ewyEqJHHaMelfnamzHCrVxj7IZQm4FdJcuGq1B6lZoZszefJ0I0UKtg9pfrL6DgVBwU9eA6AvKUyH08rqLHFMOUoU61bUwdj2vZZof/X66K5f9U3F3LS0TA3zJv3pDjoIQVy4D1UluUSgrgFFTqfmDw6O38OoV57SSDmCccIHao+PG4NKlh6XzNKqyyO/f4VhIdqmck2k+rECR+wSMC9I7IEz+byaB++fE93HTT9Y5TzkJ8UUps0e3JigFEi5JpcRvGqtOFlzm889u2cxdIjAXlJc11mnysVAflm7DcYxAsGPytNm+VrT67h8WMRL3C8ZBvY+aWDM6H6HWp/78xmXjO0qu/P1taGVCt5IgTp45fDmNeIvxoTWA5FZ95LcXO+hiOb03csVgZIZjKEmQOZjmSnLtOYhHR0Lhm5hj55NycorV0P8irU5jqPIbVcbU/30UavJaSwL525gUTpuT5EC/UD/iERRajDMJCdj3yzU6/wGr7Te6a0a/iBpYF22JipFWO082L8xxbFUxYJDkdvDfGNWMCtuCXL2Rnt6GpKo9vY1d8aKbfta+xRtFsKkd//ohpsimrMivVk/SuZx3avEQRiGaoxRC55d0gvRZIf/9qGPFqXbCgbx2QHx0MgYd74IgmJZ3GH+cFbA9fWkjRl58VTt6knqzpTIZN9FYnrtfz8hl/o8f54jH+xnmk6aIAVOfZBJA52mTXo4vGUygPaHnxscKr2GTJu0TX8jatGg0qHNpYpIpoKu3E4u3dB9qjogU01q29jmFRN2TSmkyzDn2wfGfWWo+ckqT9sF5ObgLAwd1RI02F6P1hDt3s1oGxTVl4iWbg+mOOcCXbKUvWOFyTY2jMQyun//XG18TQ79aqXQyzsSP6TcnMBeUVz+f4T62rDM0e7fpYf/gkPbvohlcw9Zdmt52KFPn7SxHGxviW/J6NFyW1o0qDvHJ9O31etCUDoLsQxH3MecL0Slkh8ZHRiqijkfwc5OHyM99CgeHjmDml1xJE2DwcZZcuvtd7/GUlTfCy/oAdl8sHb/zRK09byEEEdpyDxIH41qbwxMK/bxGEwFTnPxsC6aY8KZ87GSHc3BPKsmkkp4eOSk6vBtWSfAihkXxm0YDccbnCbZ2ItttDSn1demq4/b/rxc3ep4q2rvS10XvAwq7f1gCeSkBYP0VK7So9Pq/QgqmHGbaEe8aQ0rFuTdeJwHO/7q1KPmAm7oNxJBXrpLF6u3ndX3fD5im00P7/9Y5B0yNczh4MruewxgqXoybNH0D0LEw4YBnWxxxgN3g0GTJBUmC/+WFToAnhoYKCbEzhNyLEMxBQDYAQDoITI79DCOS3pEqPt6lHsg02NkQfTbcarACKI0aNTGpEqFSk0cePPkJTDENEJUVumnSGpUK1IvhwIdK2g0VGcNqu1U8mYaFh0rKWZijsm1YQBstLJgfVG6QhUT+JVifZQA1ZGgY0NWqVWm/I31XGbWl4NFulNe0U5u3Qo6wFYHwBQdMmZRy+g08daHJ2I+QriVbDGiLGvo1Q69m1ir1E4OkM5Q1m+q6sEWB/GNEIwifqz1zOMNAAAA) format('woff2'); }
[data-route="pkgMoling/pages/game/game"] /* 墨灵猫 · 小程序测试版样式（色板同网页版：宣纸白/浓墨/腐红） */
/* ================================================================================
   ★★ 字号阶梯 · 全游戏统一（木哥 2026-10-08 定为编程规则，改动字号前先读这段）★★
   一级 = calc(var(--rpx) * 16) ＝ 首页引导页（进入页）按键字号，全游戏所有一级按键/一级目录同大；
   每降一级小 2 个号 = −calc(var(--rpx) * 4)（口径同 v4.58.1「大2个号=+calc(var(--rpx) * 4)」）：
     L1 一级（主按键/页签/目录/返回）= calc(var(--rpx) * 16)
     L2 二级（条目名/正文说明）      = calc(var(--rpx) * 12)
     L3 三级（副题/注释/角标）        = calc(var(--rpx) * 10)（规则值 calc(var(--rpx) * 8)，手机上不可读，封底 calc(var(--rpx) * 10)）
   例外：①打斗文字（原 15/17/calc(var(--rpx) * 19)）已被木哥 v4.59.6 改口：底部按键几何大小不变、文字一律 calc(var(--rpx) * 16)
        （与「灵力」二字同号）；战斗屏上出现的文字（连击数/连/提示/血条标）也一律 calc(var(--rpx) * 16)；
        ②展示级大标题（页面标题/结算标题/转场名/印章/题名图）不进阶梯；
        ③弹层卡（答题/作业）已按横屏 scale 补偿过，维持木哥 v4.57.0 定稿；
        ④⭐行走 HUD 顶部这一行不做分级（木哥 v4.59.5 令：文字小了，全部放大到与「作业」键同号）——
          境名/章节/◈墨/✦分/拦路妖/灵力标/拦路角标一律 L1 calc(var(--rpx) * 16)，本行内禁止再写 L2/L3 小号。
   素材区域（卡片图/三视图/高清大图）尺寸一律不缩；只压文字与四周空白。 */

/* ================================================================================
   ★★ 弹层风格 · 全游戏唯一一套（木哥 2026-10-10 定稿：「墨韵」）★★
   --------------------------------------------------------------------------------
   病根（改造前体检，全游戏 15 个浮层）：
     · 底色 8 套（米黄实心 / 深褐渐变 / 纯黑 / 深蓝黑 / 米黄纸…），遮罩 6 档（.42~.88）；
     · 字号各写各的 —— 竖屏 34/30/26/23/22/calc(var(--rpx) * 20)，横屏 9/10/11/12/19/20/calc(var(--rpx) * 24) 混排；
     · 行距 1.5~1.95、宽度 5 套（70vw/82%/86%/88vw/92%）、横屏缩放 4 套（.60~.70）。
     ⇒ 结果：同一屏上两张卡一大一小、一深一浅，孩子一眼就觉得「歪、不协调」。
   --------------------------------------------------------------------------------
   ① 材质「墨韵」（全部浮层统一）
      · 卡底  rgba(22, [data-route="pkgMoling/pages/game/game"] 26, [data-route="pkgMoling/pages/game/game"] 22, [data-route="pkgMoling/pages/game/game"] .74)                  —— 半透明深墨，游戏画面透得出来
      · 描边  solid rgba(201, [data-route="pkgMoling/pages/game/game"] 169, [data-route="pkgMoling/pages/game/game"] 89, [data-route="pkgMoling/pages/game/game"] .52)          —— 一缕金线勾边（书法感）
      · 高光  inset 0 1px 0 rgba(255, [data-route="pkgMoling/pages/game/game"] 255, [data-route="pkgMoling/pages/game/game"] 255, [data-route="pkgMoling/pages/game/game"] .07) —— 顶部一线，卡片「浮」起
      · 遮罩  rgba(8, [data-route="pkgMoling/pages/game/game"] 8, [data-route="pkgMoling/pages/game/game"] 10, [data-route="pkgMoling/pages/game/game"] .48)                    —— 统一一档（原七档 .42~.88 全并掉）
      · 文字  主 #f6efe0 ／ 次 #efe6cf ／ 辅 #b7a678 ／ 金 #d8bb70·#e6cc86
      ★ 一处例外（有硬理由，不算违规，回归锁里单列）：
        · 通关卷轴 .ed-scroll 保持米黄纸 ---- 「画卷」隐喻，压成深色就不是卷轴了。
        （原「卷首猫话 .cat-say」那条例外随气泡一起删除了 —— v4.86.22 启动页只出声不出字。）
   ② 字号：弹层只用三级，逐级吸附
      · 主（题干／标题）        竖 calc(var(--rpx) * 32)(T1) ／ 横 calc(var(--rpx) * 20)（＝游戏 L 阶梯 L0）
      · 正文（选项／对白／按钮）竖 calc(var(--rpx) * 28)(T2) ／ 横 calc(var(--rpx) * 16)（＝木哥定的 L1，与一级按键同号）
      · 脚注（说明／进度／提示）竖 calc(var(--rpx) * 24)(T3) ／ 横 calc(var(--rpx) * 12)（＝L2）
      ★ 横屏为什么另取一套小值：横屏 rpx 基数仍是屏宽（844px ⇒ calc(var(--rpx) * 1)≈1.13px），竖屏
        calc(var(--rpx) * 1)=0.5px —— 同一个 rpx 横屏物理上大 2.25 倍。木哥「字大」的根源就在这里。
        横屏物理落点：calc(var(--rpx) * 20)≈22.5px ／ calc(var(--rpx) * 16)≈18px ／ calc(var(--rpx) * 12)≈13.5px，均在可读区间。
      ★ 对白 .dg-inner／结算 .rs-inner／作业卡 .hw-card／大招 .ca-inner 已由既有
        transform: scale(.62/.62/.60/.62) 做过横屏补偿 ⇒ 只写竖屏基准值即可自动等效，
        不要再叠 .stage.land 字号覆写（谁再叠谁就小一号）。
   ③ 行距：题干 1.4、正文 1.45、长文（对白／旁白／过场／卷轴）1.6
   ④ 圆角：竖 calc(var(--rpx) * 20) ／ 横 calc(var(--rpx) * 15)      ⑤ 内留白：竖 28·28·22 ／ 横 10·15·8
   ⑥ 高度上限：一律 75vh（微信 WeUI 半屏弹窗口径，上下各留 12.5%）
   --------------------------------------------------------------------------------
   ★ 本文件不用 CSS 变量（全项目零使用，真机 WebView 行为未验证，不拿木哥的体验
     做试验）—— token 以「字面值 + 本注释」为准，改就整片一起改。
   ★ 回归锁 tools/test-popup-style.js 按本块逐条校验，谁改回小字／实心砖机器直接报红。
   ★ 布局（display ／ flex ／ 元素顺序 ／ 圆角语义）一律不碰 —— 木哥：「布局别碰」。
   ★ HUD 那一行（.hud-tasks）是木哥单独定的例外（整行同号），不进本套。
   ================================================================================ */

page { background: #0b0d15; }
[data-route="pkgMoling/pages/game/game"] /* v4.55.0：画布改清屏后，页面底衬墨色写在这里，绝不会露出白底 */
.stage { position: fixed; inset: 0; overflow: hidden; background: #0b1016; font-family: -apple-system, "PingFang SC", sans-serif; }
[data-route="pkgMoling/pages/game/game"] /* 层级阶梯（v4.37.6）：真机 WebView 会把显式 z-index:0 压过 z-index:auto，
   垫底图一旦盖到画布上面，画布里会动的猫和滚动就全被盖住=「画面不能动」。
   每层都给显式 z-index，杜绝任何机型自由发挥 */
.cv { position: absolute; width: 100vw; height: calc(var(--vh) * 100); z-index: 1; }
[data-route="pkgMoling/pages/game/game"] .walk-bg { position: absolute; left: 0; top: 0; width: 100vw; height: calc(var(--vh) * 100); z-index: 0; }
[data-route="pkgMoling/pages/game/game"] .walk-cat { position: absolute; z-index: 2; transition: left 70ms linear, top 70ms linear; }
[data-route="pkgMoling/pages/game/game"] .fatal { position: absolute; top: 40%; left: 0; right: 0; text-align: center; color: #f4d98b; font-size: 15px; z-index: 30; }
[data-route="pkgMoling/pages/game/game"] /* ------- 通用 ------- */
.screen { position: absolute; inset: 0; z-index: 3; }
[data-route="pkgMoling/pages/game/game"] /* v4.69.19（木哥：所有按键的颜色都改成金色的色调）——通用键统一「作业主键」同款金：
   底 linear-gradient(#f2dfa4→#d9b64a)、字 #241b08、边 rgba(233, [data-route="pkgMoling/pages/game/game"] 201, [data-route="pkgMoling/pages/game/game"] 110, [data-route="pkgMoling/pages/game/game"] .9)。 */
.btn { display: inline-flex; align-items: center; justify-content: center; padding: calc(var(--rpx) * 14) calc(var(--rpx) * 34); border: calc(var(--rpx) * 1) solid rgba(233,201,110,.9); border-radius: calc(var(--rpx) * 999); color: #241b08; font-size: calc(var(--rpx) * 28); letter-spacing: calc(var(--rpx) * 6); font-weight: 700; background: linear-gradient(180deg, #f2dfa4, #d9b64a); box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 14) rgba(0,0,0,.35); }
[data-route="pkgMoling/pages/game/game"] .btn.primary { background: linear-gradient(180deg, #e8c56a, #c9a445); border-color: rgba(233,201,110,.9); color: #241b08; }
[data-route="pkgMoling/pages/game/game"] .btn.gold { background: linear-gradient(180deg, #e8c56a, #c9a445); border-color: rgba(233,201,110,.9); color: #241b08; box-shadow: 0 0 calc(var(--rpx) * 18) rgba(232,197,106,.35); }
[data-route="pkgMoling/pages/game/game"] .btn.revive { border-color: rgba(233,201,110,.9); color: #241b08; }
[data-route="pkgMoling/pages/game/game"] .btn.icon { min-width: calc(var(--rpx) * 84); }
[data-route="pkgMoling/pages/game/game"] .btn-row { display: flex; gap: calc(var(--rpx) * 18); align-items: center; justify-content: center; flex-wrap: wrap; }
[data-route="pkgMoling/pages/game/game"] /* ------- 标题页 ------- */
.title-screen { display: flex; align-items: center; justify-content: center; }
[data-route="pkgMoling/pages/game/game"] .title-bg { position: absolute; inset: 0; width: 100%; height: 100%; }
[data-route="pkgMoling/pages/game/game"] .title-mask { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 42%, rgba(8,7,4,.18), rgba(8,7,4,.72)); }
[data-route="pkgMoling/pages/game/game"] .title-box { position: relative; text-align: center; padding: 0 calc(var(--rpx) * 40); width: 100%; }
[data-route="pkgMoling/pages/game/game"] /* 海报版标题页：按钮沉到底部压暗区，海报本身即页面（避开 home 条） */
.poster-box { position: absolute; left: 0; right: 0; bottom: calc(7vh + env(safe-area-inset-bottom)); padding: 0 calc(var(--rpx) * 24); }
[data-route="pkgMoling/pages/game/game"] .poster-box .btn-row { flex-wrap: wrap; }
[data-route="pkgMoling/pages/game/game"] .poster-box .btn { padding: calc(var(--rpx) * 14) calc(var(--rpx) * 30); letter-spacing: calc(var(--rpx) * 4); }
[data-route="pkgMoling/pages/game/game"] .poster-box .t-tiny { margin-top: calc(var(--rpx) * 22); color: rgba(200, 190, 165, .75); text-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(0,0,0,.8); }
[data-route="pkgMoling/pages/game/game"] .build-tag { position: absolute; right: calc(var(--rpx) * 20); bottom: calc(calc(var(--rpx) * 12) + env(safe-area-inset-bottom)); color: rgba(90,82,64,.85); font-size: calc(var(--rpx) * 22); font-weight: 700; letter-spacing: calc(var(--rpx) * 2); text-shadow: 0 0 calc(var(--rpx) * 6) rgba(247,243,233,.9); z-index: 12; }
[data-route="pkgMoling/pages/game/game"] /* ---- 标题页 · 雅集版：宣纸留白，猫为主角，竖题朱印 ---- */
.title-screen.elegant { background: #efe9d8; }
[data-route="pkgMoling/pages/game/game"] /* 宣纸底：暖白渐变 + 极淡的纸纹光斑 */
.paper { position: absolute; inset: 0;
  background:
    radial-gradient(140% 90% at 50% -10%, rgba(255,253,246,.9), rgba(255,253,246,0) 60%),
    radial-gradient(120% 70% at 50% 108%, rgba(196,186,158,.35), rgba(196,186,158,0) 62%),
    linear-gradient(180deg, #f7f4ea 0%, #f1ecdd 52%, #e6ddc6 100%);
  animation: paperBreathe 16s ease-in-out infinite alternate; }

@keyframes paperBreathe {
  from { opacity: 1; } to { opacity: .88; }
}
[data-route="pkgMoling/pages/game/game"] /* 远山淡雾：三笔青灰，各带极慢的浮沉 */
.mountain { position: absolute; border-radius: 50%; filter: blur(calc(var(--rpx) * 46)); pointer-events: none; }
[data-route="pkgMoling/pages/game/game"] .mountain.m1 { left: -18%; bottom: -22%; width: 80%; height: 34%; background: rgba(122,134,150,.20); animation: mFloat 22s ease-in-out infinite alternate; }
[data-route="pkgMoling/pages/game/game"] .mountain.m2 { right: -22%; bottom: -18%; width: 90%; height: 30%; background: rgba(96,110,128,.16); animation: mFloat 26s ease-in-out infinite alternate-reverse; }
[data-route="pkgMoling/pages/game/game"] .mountain.m3 { left: 24%; bottom: -26%; width: 60%; height: 26%; background: rgba(150,140,118,.14); animation: mFloat 19s ease-in-out infinite alternate; }

@keyframes mFloat { from { transform: translateY(0); } to { transform: translateY(calc(var(--rpx) * -14)); } }
[data-route="pkgMoling/pages/game/game"] /* 淡墨圆相（禅圆）：猫的衬底，缓慢呼吸 */
.enso { position: absolute; left: 54%; top: 43%; width: 128vw; max-width: calc(var(--rpx) * 820); height: 128vw; max-height: calc(var(--rpx) * 820);
  transform: translate(-50%, -50%); border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle, rgba(88,100,118,.13) 0%, rgba(88,100,118,.07) 55%, rgba(88,100,118,0) 71%);
  box-shadow: inset 0 0 0 calc(var(--rpx) * 3) rgba(88,100,118,.05);
  animation: ensoBreathe 9s ease-in-out infinite alternate; }

@keyframes ensoBreathe {
  from { transform: translate(-50%, -50%) scale(1); opacity: .85; }
  to   { transform: translate(-50%, -50%) scale(1.05); opacity: 1; }
}
[data-route="pkgMoling/pages/game/game"] /* ---- 主角猫 · 三段横切波浪：衣袂随风飘动 ---- */
.cat-wrap { position: absolute; left: 54%; top: 43%; width: 54vw; max-width: calc(var(--rpx) * 580); height: 54vw; max-height: calc(var(--rpx) * 580);
  transform: translate(-50%, -50%);
  animation: catFloat 5.2s ease-in-out infinite; }

@keyframes catFloat {
  0%, 100% { transform: translate(-50%, -50%) rotate(-1.2deg); }
  50%      { transform: translate(-50%, calc(-50% - calc(var(--rpx) * 14))) rotate(1.2deg); }
}
[data-route="pkgMoling/pages/game/game"] .cat-band { position: absolute; left: 0; width: 100%; height: 33.4%; overflow: hidden; }
[data-route="pkgMoling/pages/game/game"] .cat-band.b1 { top: 0; }
[data-route="pkgMoling/pages/game/game"] .cat-band.b2 { top: 33.3%; }
[data-route="pkgMoling/pages/game/game"] .cat-band.b3 { top: 66.6%; }
[data-route="pkgMoling/pages/game/game"] .cat-band image { position: absolute; left: -2%; top: 0; width: 104%; height: 300%; }
[data-route="pkgMoling/pages/game/game"] .cat-band.b2 image { top: -100%; }
[data-route="pkgMoling/pages/game/game"] .cat-band.b3 image { top: -200%; }
[data-route="pkgMoling/pages/game/game"] .cat-band.b1 image { animation: waveA 4.2s ease-in-out infinite; }
[data-route="pkgMoling/pages/game/game"] .cat-band.b2 image { animation: waveA 4.2s ease-in-out infinite; animation-delay: -.5s; }
[data-route="pkgMoling/pages/game/game"] .cat-band.b3 image { animation: waveA 4.2s ease-in-out infinite; animation-delay: -1s; }

@keyframes waveA {
  0%, 100% { transform: translateX(-1.4%); }
  50%      { transform: translateX(1.4%); }
}
[data-route="pkgMoling/pages/game/game"] .cat-shadow { position: absolute; left: 54%; top: calc(43% + 27vw); width: 34vw; max-width: calc(var(--rpx) * 360); height: 5vw; max-height: calc(var(--rpx) * 54);
  transform: translate(-50%, -50%); border-radius: 50%; pointer-events: none;
  background: radial-gradient(ellipse, rgba(58,58,66,.22) 0%, rgba(58,58,66,0) 70%);
  animation: shadowPulse 5.2s ease-in-out infinite; }

@keyframes shadowPulse {
  0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: .8; }
  50%      { transform: translate(-50%, -50%) scale(.9); opacity: .55; }
}
[data-route="pkgMoling/pages/game/game"] /* ---- 炫光题字：三字错峰浮沉 + 金辉流扫 + 落笔横划 ---- */
.t-hero { position: absolute; left: 5%; top: 5.5%; z-index: 5; pointer-events: none;
  animation: tIn .9s cubic-bezier(.2, 1.4, .4, 1) both; }

@keyframes tIn { from { opacity: 0; transform: scale(.72); } to { opacity: 1; transform: scale(1); } }
[data-route="pkgMoling/pages/game/game"] .t-row { display: flex; align-items: flex-start; filter: drop-shadow(0 0 calc(var(--rpx) * 8) rgba(212,178,98,.3)); animation: rowGlow 3.2s ease-in-out infinite; }

@keyframes rowGlow {
  0%, 100% { filter: drop-shadow(0 0 calc(var(--rpx) * 6) rgba(212,178,98,.25)); }
  50%      { filter: drop-shadow(0 0 calc(var(--rpx) * 26) rgba(212,178,98,.8)); }
}
[data-route="pkgMoling/pages/game/game"] .t-ch { font-family: 'MSZ'; font-size: calc(var(--rpx) * 108); line-height: 1.08; display: inline-block;
  background: linear-gradient(180deg, #fff3d0 0%, #e8cf8e 26%, #b98f3e 48%, #d9b866 68%, #fff3d0 100%);
  background-size: 100% 260%;
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: #8a6d3b;
  animation: chFloat 3.2s ease-in-out infinite, shine 3.6s linear infinite; }
[data-route="pkgMoling/pages/game/game"] .t-ch.c1 { animation-delay: 0s, 0s; }
[data-route="pkgMoling/pages/game/game"] .t-ch.c2 { animation-delay: .4s, .3s; }
[data-route="pkgMoling/pages/game/game"] .t-ch.c3 { animation-delay: .8s, .6s; }

@keyframes chFloat {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(calc(var(--rpx) * -12)); }
}

@keyframes shine { from { background-position: 0 0; } to { background-position: 0 260%; } }
[data-route="pkgMoling/pages/game/game"] .seal { width: calc(var(--rpx) * 54); height: calc(var(--rpx) * 54); background: #a63a2e; border-radius: calc(var(--rpx) * 8); margin: calc(var(--rpx) * 8) 0 0 calc(var(--rpx) * 14);
  display: flex; align-items: center; justify-content: center;
  font-family: 'MSZ'; font-size: calc(var(--rpx) * 34); color: #f6ead8;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 12) rgba(166,58,46,.28); transform: rotate(3deg);
  animation: sealBob 3.2s ease-in-out infinite; }

@keyframes sealBob { 0%,100% { transform: rotate(3deg) translateY(0); } 50% { transform: rotate(3deg) translateY(calc(var(--rpx) * -8)); } }
[data-route="pkgMoling/pages/game/game"] .t-stroke { width: 72%; height: calc(var(--rpx) * 7); margin: calc(var(--rpx) * 10) 0 calc(var(--rpx) * 8); border-radius: calc(var(--rpx) * 4);
  background: linear-gradient(90deg, rgba(44,40,34,.9), rgba(44,40,34,.35));
  transform-origin: left center; animation: strokeIn 1.1s .3s cubic-bezier(.2,1,.3,1) both; }

@keyframes strokeIn { from { transform: scaleX(0); } to { transform: scaleX(1); } }
[data-route="pkgMoling/pages/game/game"] .t-sub { font-family: 'MSZ'; font-size: calc(var(--rpx) * 38); color: #6b5f45; letter-spacing: calc(var(--rpx) * 4); }
[data-route="pkgMoling/pages/game/game"] /* ---- 启程提示 ---- */
.t-hint { display: block; text-align: center; margin-bottom: calc(var(--rpx) * 16); color: #8a7a52; font-size: calc(var(--rpx) * 23); letter-spacing: calc(var(--rpx) * 6);
  animation: hintPulse 2.2s ease-in-out infinite; }

@keyframes hintPulse { 0%,100% { opacity: .45; } 50% { opacity: 1; } }
[data-route="pkgMoling/pages/game/game"] /* 横屏：猫右移缩小，题字独占左上，任何宽度不交叠 */
@media (orientation: landscape) {
  .cat-wrap { left: 61%; top: 52%; width: 38vw; max-width: calc(var(--rpx) * 400); height: 38vw; max-height: calc(var(--rpx) * 400); }
  .enso { left: 61%; top: 52%; }
  .cat-shadow { left: 61%; top: calc(52% + 19vw); }
  .t-hint { text-align: left; margin-left: 4%; width: calc(var(--rpx) * 420); }
}
[data-route="pkgMoling/pages/game/game"] /* 金尘点缀：比旧版更细、更淡，像纸上的浮光 */
.mote { position: absolute; width: calc(var(--rpx) * 6); height: calc(var(--rpx) * 6); border-radius: 50%;
  background: rgba(212,184,116,.85); box-shadow: 0 0 calc(var(--rpx) * 10) rgba(212,184,116,.65);
  opacity: 0; animation: moteRise 11s linear infinite; }

@keyframes moteRise {
  0%   { opacity: 0; transform: translateY(0); }
  14%  { opacity: .8; }
  70%  { opacity: .35; }
  100% { opacity: 0; transform: translateY(-38vh); }
}
[data-route="pkgMoling/pages/game/game"] .mote.mo1 { left: 14%; bottom: 36%; animation-delay: 0s; }
[data-route="pkgMoling/pages/game/game"] .mote.mo2 { left: 24%; bottom: 44%; animation-delay: 3.2s; animation-duration: 13s; }
[data-route="pkgMoling/pages/game/game"] .mote.mo3 { right: 20%; bottom: 40%; animation-delay: 5.1s; animation-duration: 9.5s; }
[data-route="pkgMoling/pages/game/game"] .mote.mo4 { right: 9%; bottom: 48%; animation-delay: 7.4s; }
[data-route="pkgMoling/pages/game/game"] /* 纸墨配色按钮（仅雅集标题页生效） */
.title-screen.elegant .btn { color: #4a4335; border-color: rgba(90,80,60,.5); background: rgba(255,252,244,.66); }
[data-route="pkgMoling/pages/game/game"] .title-screen.elegant .btn.primary { background: linear-gradient(180deg, #45413a, #2e2b25); border-color: #45413a; color: #f3ecd8; }
[data-route="pkgMoling/pages/game/game"] .title-screen.elegant .btn.gold { background: linear-gradient(180deg, #b3924f, #8a6d3b); border-color: #a98a4a; color: #fbf3dd; box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 16) rgba(176,148,88,.35); }
[data-route="pkgMoling/pages/game/game"] .title-screen.elegant .poster-box .t-tiny { color: rgba(90,82,64,.75); text-shadow: none; }
[data-route="pkgMoling/pages/game/game"] .title-screen.elegant .build-tag { color: rgba(90,82,64,.5); }
[data-route="pkgMoling/pages/game/game"] /* 第十境终形态猫：标题上方，金晕衬底 */
.t-cat-wrap { position: relative; width: calc(var(--rpx) * 300); height: calc(var(--rpx) * 340); margin: 0 auto calc(var(--rpx) * 6); }
[data-route="pkgMoling/pages/game/game"] .t-cat-glow { position: absolute; left: 50%; top: 56%; width: calc(var(--rpx) * 420); height: calc(var(--rpx) * 420); transform: translate(-50%, -50%); border-radius: 50%; background: radial-gradient(circle, rgba(224,198,126,.28) 0%, rgba(224,198,126,.10) 45%, rgba(224,198,126,0) 70%); }
[data-route="pkgMoling/pages/game/game"] .t-cat { position: relative; width: calc(var(--rpx) * 300); height: calc(var(--rpx) * 300); filter: drop-shadow(0 calc(var(--rpx) * 10) calc(var(--rpx) * 30) rgba(0,0,0,.55)); animation: tCatFloat 3.6s ease-in-out infinite; }

@keyframes tCatFloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(calc(var(--rpx) * -12)); } }
[data-route="pkgMoling/pages/game/game"] .t-cat-tag { position: absolute; left: 50%; bottom: calc(var(--rpx) * -14); transform: translateX(-50%); white-space: nowrap; color: #e0c67e; font-size: calc(var(--rpx) * 20); letter-spacing: calc(var(--rpx) * 6); text-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 10) rgba(0,0,0,.8); }
[data-route="pkgMoling/pages/game/game"] .t-small { display: block; color: rgba(240,230,200,.5); font-size: calc(var(--rpx) * 20); letter-spacing: calc(var(--rpx) * 8); }
[data-route="pkgMoling/pages/game/game"] .t-h1 { color: #f7f3e9; font-size: calc(var(--rpx) * 88); letter-spacing: calc(var(--rpx) * 14); font-weight: 700; margin: calc(var(--rpx) * 14) 0 calc(var(--rpx) * 4); text-shadow: 0 0 calc(var(--rpx) * 40) rgba(201,169,89,.45); }
[data-route="pkgMoling/pages/game/game"] .t-h1 .t-sub { font-size: calc(var(--rpx) * 34); letter-spacing: calc(var(--rpx) * 18); color: #e0c67e; margin-left: calc(var(--rpx) * 20); }
[data-route="pkgMoling/pages/game/game"] .t-slogan { display: block; color: #b7ad93; font-size: calc(var(--rpx) * 24); letter-spacing: calc(var(--rpx) * 4); margin-bottom: calc(var(--rpx) * 44); }
[data-route="pkgMoling/pages/game/game"] .t-tiny { display: block; margin-top: calc(var(--rpx) * 30); color: #8f8672; font-size: calc(var(--rpx) * 21); letter-spacing: calc(var(--rpx) * 2); }
[data-route="pkgMoling/pages/game/game"] /* ------- 选境 / 藏器阁（flex 纵列：页签永不压列表） ------- */
.map-screen { background: #0e0f14; display: flex; flex-direction: column; }
[data-route="pkgMoling/pages/game/game"] .map-head { display: flex; align-items: center; justify-content: space-between; padding: calc(var(--rpx) * 30) calc(var(--rpx) * 30) calc(var(--rpx) * 16); flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] .mh-title { color: #f4d98b; font-size: calc(var(--rpx) * 36); letter-spacing: calc(var(--rpx) * 8); }
[data-route="pkgMoling/pages/game/game"] .btn.back { padding: calc(var(--rpx) * 10) calc(var(--rpx) * 26); font-size: calc(var(--rpx) * 24); }
[data-route="pkgMoling/pages/game/game"] .map-list { position: static; flex: 1; height: auto; padding: calc(var(--rpx) * 6) calc(var(--rpx) * 24) calc(calc(var(--rpx) * 40) + env(safe-area-inset-bottom)); box-sizing: border-box; }
[data-route="pkgMoling/pages/game/game"] .realm-card { position: relative; display: flex; align-items: center; margin-bottom: calc(var(--rpx) * 22); border-radius: calc(var(--rpx) * 18); overflow: hidden; background: linear-gradient(170deg, rgba(34,30,21,.92), rgba(16,14,10,.92)); border: calc(var(--rpx) * 1) solid rgba(201,169,89,.26); }
[data-route="pkgMoling/pages/game/game"] .realm-card.locked { opacity: .45; filter: grayscale(.6); }
[data-route="pkgMoling/pages/game/game"] .rc-img { width: calc(var(--rpx) * 300); height: calc(var(--rpx) * 170); flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] .arm-img { width: calc(var(--rpx) * 200); height: calc(var(--rpx) * 150); flex-shrink: 0; padding: calc(var(--rpx) * 10); box-sizing: border-box; }
[data-route="pkgMoling/pages/game/game"] /* 武器/招式原画是 639×213 三帧横条（3:1），小条一帧一格；垫宣纸色衬墨稿 */
.arm-strip { width: calc(var(--rpx) * 220); height: calc(var(--rpx) * 74); flex-shrink: 0; padding: calc(var(--rpx) * 10); box-sizing: border-box;
  background: #ece2cc; border-radius: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] .rc-body { padding: calc(var(--rpx) * 16) calc(var(--rpx) * 22); display: flex; flex-direction: column; }
[data-route="pkgMoling/pages/game/game"] .rc-tag { position: absolute; left: 0; top: 0; background: rgba(122,46,46,.9); color: #ffe9ad; font-size: calc(var(--rpx) * 18); padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16); border-radius: 0 0 calc(var(--rpx) * 12) 0; }
[data-route="pkgMoling/pages/game/game"] .rc-name { color: #f7f3e9; font-size: calc(var(--rpx) * 30); letter-spacing: calc(var(--rpx) * 4); }
[data-route="pkgMoling/pages/game/game"] .rc-sub { color: #9a9078; font-size: calc(var(--rpx) * 21); margin-top: calc(var(--rpx) * 6); }
[data-route="pkgMoling/pages/game/game"] .rc-course { color: #6e6650; font-size: calc(var(--rpx) * 19); margin-top: calc(var(--rpx) * 6); }
[data-route="pkgMoling/pages/game/game"] /* v4.85.0（B-1b）：已通关的境上的「重演」键（不在 locked 卡片上出现） */
.rc-play { position: absolute; right: calc(var(--rpx) * 18); bottom: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 6) calc(var(--rpx) * 18); border-radius: calc(var(--rpx) * 999);
  border: calc(var(--rpx) * 1) solid rgba(201,169,89,.5); color: #e6d7a8; font-size: calc(var(--rpx) * 20); background: rgba(12,10,7,.55); }
[data-route="pkgMoling/pages/game/game"] .rc-play:active { background: rgba(201,169,89,.22); }
[data-route="pkgMoling/pages/game/game"] .arm-tabs { display: flex; gap: calc(var(--rpx) * 14); padding: 0 calc(var(--rpx) * 26) calc(var(--rpx) * 14); flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] .arm-tab { border: calc(var(--rpx) * 1) solid #3d3a30; background: rgba(20,20,16,.7); color: #b7ad93; padding: calc(var(--rpx) * 12) calc(var(--rpx) * 30); border-radius: calc(var(--rpx) * 999); font-size: calc(var(--rpx) * 24); letter-spacing: calc(var(--rpx) * 4); }
[data-route="pkgMoling/pages/game/game"] .arm-tab.active { border-color: #c9a959; color: #ffe9ad; background: rgba(40,34,20,.8); }
[data-route="pkgMoling/pages/game/game"] /* ------- 藏器阁弹出框（v4.59.2 木哥：作为弹出框出现，内容可上下拉动看全部） -------
   arm-modal 全屏遮罩 + arm-panel 居中面板；面板高度定死（88vh），标题与页签钉在
   面板顶不随滚动，卡片列表放 arm-scroll 里上下拉动看全部；点面板外任意处关闭
   （catchtap 挂在 arm-modal 上），面板内点击不外透（noop）。 */
.arm-modal { position: absolute; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center;
  background: rgba(8,8,10,.48); padding: 4vh 4vw; box-sizing: border-box; }
[data-route="pkgMoling/pages/game/game"] .arm-panel { width: 86vw; height: 88vh; display: flex; flex-direction: column; overflow: hidden; box-sizing: border-box;
  border-radius: calc(var(--rpx) * 20); border: calc(var(--rpx) * 1) solid rgba(201,169,89,.42); background: rgba(22,26,22,.86);
  box-shadow: 0 calc(var(--rpx) * 12) calc(var(--rpx) * 60) rgba(0,0,0,.65); }
[data-route="pkgMoling/pages/game/game"] .arm-scroll { flex: 1; height: auto; min-height: 0; position: static;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 24) calc(calc(var(--rpx) * 30) + env(safe-area-inset-bottom)); box-sizing: border-box; }
[data-route="pkgMoling/pages/game/game"] /* ------- 行走 HUD（v4.59.5 木哥：顶部所有字、条并成一行，且全部字号＝作业键）-------
 * v4.59.4 先并成一行，但按阶梯分了三级（16/12/10）——木哥 00:54：文字小了，全部放大到与
 * 「作业」键同一字号。故本行不做阶梯分级，境名/章节/墨/分/妖名/灵力标/角标一律 L1 calc(var(--rpx) * 16)，
 * 与作业键严格同号；条目全 nowrap + 不收缩，两条（卷进度、灵力）缩窄同行排开。 */
.hud { position: absolute; top: 0; left: 0; right: 0; z-index: 4; pointer-events: none; }
[data-route="pkgMoling/pages/game/game"] /* 墨色渐隐：白字压亮山体也看得清，往下自然淡出，不切画面 */
.hud-scrim {
  position: absolute; top: 0; left: 0; right: 0; height: 26vh;
  background: linear-gradient(180deg, rgba(6,8,12,.70) 0%, rgba(6,8,12,.32) 52%, rgba(6,8,12,0) 100%);
}
[data-route="pkgMoling/pages/game/game"] .hud-bar {
  position: relative; display: flex; justify-content: space-between; align-items: center;
  padding: calc(calc(var(--rpx) * 18) + env(safe-area-inset-top)) calc(var(--rpx) * 28) 0;
}
[data-route="pkgMoling/pages/game/game"] /* v4.59.5 一行主组：境名 · 章节 · 卷进度条 · 灵力条 · 拦路妖 —— 全部 L1 calc(var(--rpx) * 16)（＝作业键同号） */
.hud-row { display: flex; align-items: center; gap: calc(var(--rpx) * 8); flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] /* v4.59.8：禁收缩——此前 min-width:0 被压缩、nowrap 子项溢出压住右侧键（重叠真凶） */
.hud-row > text { flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] .realm-name { color: #f7f3e9; font-size: calc(var(--rpx) * 16); letter-spacing: calc(var(--rpx) * 1); white-space: nowrap; text-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 10) rgba(0,0,0,.85); }
[data-route="pkgMoling/pages/game/game"] .realm-chapter { color: rgba(226,216,190,.9); font-size: calc(var(--rpx) * 16); letter-spacing: calc(var(--rpx) * 1); white-space: nowrap; text-shadow: 0 calc(var(--rpx) * 1) calc(var(--rpx) * 8) rgba(0,0,0,.85); }
[data-route="pkgMoling/pages/game/game"] .progress { width: calc(var(--rpx) * 70); height: calc(var(--rpx) * 14); background: rgba(8,8,6,.62); border: calc(var(--rpx) * 1) solid rgba(240,230,200,.34); border-radius: calc(var(--rpx) * 8); overflow: hidden; flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] .progress-i { height: 100%; background: linear-gradient(90deg, #c9a959, #f4d98b); box-shadow: 0 0 calc(var(--rpx) * 12) rgba(244,217,139,.5); }
[data-route="pkgMoling/pages/game/game"] .hud-right { display: flex; align-items: center; gap: calc(var(--rpx) * 8); flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] /* v4.85.0（B-1d）常驻任务清单一行三色：绿=已完 · 金=进行中 · 红=还没动。
   HUD 本体是 pointer-events:none，这里同样只读不点（不需要 auto）。 */
.hud-tasks { display: flex; align-items: center; gap: calc(var(--rpx) * 10); padding: calc(var(--rpx) * 6) calc(var(--rpx) * 28) 0; flex-wrap: nowrap; }
[data-route="pkgMoling/pages/game/game"] .ht { display: flex; align-items: center; gap: calc(var(--rpx) * 4); padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10); border-radius: calc(var(--rpx) * 999);
  border: calc(var(--rpx) * 1) solid rgba(240,230,200,.28); background: rgba(6,8,12,.42); }
[data-route="pkgMoling/pages/game/game"] .ht-tag { font-size: calc(var(--rpx) * 15); color: rgba(226,216,190,.78); }
[data-route="pkgMoling/pages/game/game"] .ht-val { font-size: calc(var(--rpx) * 15); color: #e8e2d2; }
[data-route="pkgMoling/pages/game/game"] .ht.done { border-color: rgba(156,196,138,.62); background: rgba(44,74,38,.42); }
[data-route="pkgMoling/pages/game/game"] .ht.done .ht-tag, [data-route="pkgMoling/pages/game/game"] .ht.done .ht-val { color: #a8d093; }
[data-route="pkgMoling/pages/game/game"] .ht.doing { border-color: rgba(201,169,89,.62); background: rgba(74,60,22,.42); }
[data-route="pkgMoling/pages/game/game"] .ht.doing .ht-tag, [data-route="pkgMoling/pages/game/game"] .ht.doing .ht-val { color: #e6cf92; }
[data-route="pkgMoling/pages/game/game"] .ht.todo { border-color: rgba(178,82,72,.55); background: rgba(72,30,26,.42); }
[data-route="pkgMoling/pages/game/game"] .ht.todo .ht-tag, [data-route="pkgMoling/pages/game/game"] .ht.todo .ht-val { color: #e0a49c; }
[data-route="pkgMoling/pages/game/game"] .res { color: #ffe9ad; font-size: calc(var(--rpx) * 16); white-space: nowrap; text-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(0,0,0,.85); }
[data-route="pkgMoling/pages/game/game"] /* v4.69.19 金色调；v4.74.8：补 pointer-events:auto —— .hud 是 pointer-events:none
   （怕整条 HUD 挡住画布的走动触控），子元素默认继承 none，「作业」与「声音」两颗
   键因此一直是死键，直到加退出键时才顺出来。只把自动事件收回键本身，HUD 其余
   部分照旧透传，画布触控不受影响。 */
.mini-btn { border: calc(var(--rpx) * 1) solid rgba(232,197,106,.65); color: #f4d98b; border-radius: calc(var(--rpx) * 999); padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 16); white-space: nowrap; background: rgba(64,48,14,.72); pointer-events: auto; }
[data-route="pkgMoling/pages/game/game"] /* 灵力条与拦路妖并入一行（原第二行 hud-sub 撤销），条形缩窄同排，条内文字同号 */
.sub-hp { position: relative; width: calc(var(--rpx) * 80); height: calc(var(--rpx) * 26); background: rgba(8,8,6,.66); border: calc(var(--rpx) * 1) solid rgba(240,230,200,.3); border-radius: calc(var(--rpx) * 10); overflow: hidden; flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] .sub-hp-i { position: absolute; top: 0; left: 0; bottom: 0; background: linear-gradient(90deg, #3f7d54, #8fc48f); border-radius: calc(var(--rpx) * 9); }
[data-route="pkgMoling/pages/game/game"] .sub-hp-t { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: calc(var(--rpx) * 16); letter-spacing: 0; color: rgba(255,248,230,.96); text-shadow: 0 calc(var(--rpx) * 1) calc(var(--rpx) * 3) #000; }
[data-route="pkgMoling/pages/game/game"] .sub-mon { display: flex; align-items: center; border: calc(var(--rpx) * 1) solid rgba(201,169,89,.5); border-radius: calc(var(--rpx) * 999); padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12); background: rgba(20,16,8,.6); flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] .sub-mon-n { color: #ffd98a; font-size: calc(var(--rpx) * 16); letter-spacing: calc(var(--rpx) * 1); white-space: nowrap; }
[data-route="pkgMoling/pages/game/game"] .sub-mon-tag { color: #c9a959; font-size: calc(var(--rpx) * 16); margin-left: calc(var(--rpx) * 6); white-space: nowrap; }
[data-route="pkgMoling/pages/game/game"] /* ------- 战斗 HUD ------- */
.battle-hud { position: absolute; inset: 0; pointer-events: none; z-index: 4; }
[data-route="pkgMoling/pages/game/game"] /* 顶部墨色渐隐：血条白字压场景不发虚 */
.bh-scrim {
  position: absolute; top: 0; left: 0; right: 0; height: 22vh;
  background: linear-gradient(180deg, rgba(6,8,12,.66) 0%, rgba(6,8,12,.26) 55%, rgba(6,8,12,0) 100%);
}
[data-route="pkgMoling/pages/game/game"] .bh-top { position: relative; display: flex; align-items: center; gap: calc(var(--rpx) * 16); padding: calc(calc(var(--rpx) * 20) + env(safe-area-inset-top)) calc(var(--rpx) * 28) 0; }
[data-route="pkgMoling/pages/game/game"] .hpbar { position: relative; flex: 1; height: calc(var(--rpx) * 34); background: rgba(8,8,6,.68); border: calc(var(--rpx) * 1) solid rgba(240,230,200,.28); border-radius: calc(var(--rpx) * 14); overflow: hidden; }
[data-route="pkgMoling/pages/game/game"] .hp-i { position: absolute; top: 0; left: 0; bottom: 0; border-radius: calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/game/game"] .hp-p { background: linear-gradient(90deg, #3f7d54, #8fc48f); }
[data-route="pkgMoling/pages/game/game"] .hp-m { background: linear-gradient(90deg, #7a2e2e, #c05a4a); }
[data-route="pkgMoling/pages/game/game"] .hp-t { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: calc(var(--rpx) * 16); letter-spacing: calc(var(--rpx) * 2); color: rgba(255,248,230,.92); text-shadow: 0 calc(var(--rpx) * 1) calc(var(--rpx) * 4) #000; }
[data-route="pkgMoling/pages/game/game"] .combo { display: none; flex-direction: column; align-items: center; border: calc(var(--rpx) * 1) solid rgba(244,217,139,.5); border-radius: calc(var(--rpx) * 10); padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14); background: rgba(20,16,8,.6); }
[data-route="pkgMoling/pages/game/game"] .combo.show { display: flex; }
[data-route="pkgMoling/pages/game/game"] .combo-num { color: #ffd98a; font-size: calc(var(--rpx) * 16); font-weight: 700; line-height: 1; }
[data-route="pkgMoling/pages/game/game"] .combo-s { color: #c9a959; font-size: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] .bh-bottom { position: absolute; left: 0; right: 0; bottom: 0; padding-bottom: env(safe-area-inset-bottom); display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: calc(var(--rpx) * 12); pointer-events: auto; }
[data-route="pkgMoling/pages/game/game"] /* v4.42.0 两排动作按钮：上排机动、下排进攻+绝招；图标即按钮 */
.bh-side { display: flex; align-items: flex-end; justify-content: center; gap: calc(var(--rpx) * 24); }
[data-route="pkgMoling/pages/game/game"] /* v4.58.0（木哥：把所有打斗的按钮放到横版页面的最低一行，尽量少遮挡主体画面）——
   整条按钮栏压到屏幕最下沿，只占最底一小条，全部落在猫脚下（猫在 76%~80% 高处）。 */
.stage.land .bh-bottom { bottom: 0; padding: 0 calc(var(--rpx) * 12) calc(calc(var(--rpx) * 4) + env(safe-area-inset-bottom)); }
[data-route="pkgMoling/pages/game/game"] /* 半透明仪表条：暗色玻璃底 + 金线细边，按钮浮在其上，不糊住场景 */
.bh-plate { display: flex; align-items: center; justify-content: center;
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 18); border-radius: calc(var(--rpx) * 999);
  background: radial-gradient(130% 180% at 50% 0%, rgba(30,32,42,.44), rgba(8,10,14,.30));
  border: calc(var(--rpx) * 1) solid rgba(201,169,89,.24); }
[data-route="pkgMoling/pages/game/game"] .stage.land .bh-plate { padding: 0.35vh 0.9vh 0.8vh; }
[data-route="pkgMoling/pages/game/game"] /* 底部多留一点：文字标在圈下方 */
/* v4.56.6（木哥三图）：全部按键一行贴底、大小缩半；顺序＝手指习惯
   左拇指机动（跑/追）→ 右拇指进攻（飞/拍）→ 武器大招收尾 */
/* v4.74.0（木哥 2026-10-08）：动作键 4 个 + 武器大招键；跑=走·追=跳·飞=抓·拍=站。 */
/* v4.58.1（木哥）：整体按键再小一半；打斗按键的文字反向放大 2 个号（+calc(var(--rpx) * 4)），
   按钮小了字更大，一只手就能点准、也看得清。 */
.stage.land .bh-bar { display: flex; align-items: flex-end; justify-content: center; gap: calc(var(--rpx) * 8); }
[data-route="pkgMoling/pages/game/game"] /* v4.58.1：小按钮配半透明底（与罗盘一致的墨玻璃），文字标在圈下方当「图钉」 */
.stage.land .bh-bar .skill { background: radial-gradient(circle at 32% 28%, rgba(70,62,44,.55), rgba(16,14,10,.52));
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 10) rgba(0,0,0,.4); }
[data-route="pkgMoling/pages/game/game"] .stage.land .bh-bar .ic-name { margin-top: calc(var(--rpx) * 1); }
[data-route="pkgMoling/pages/game/game"] .stage.land .bh-bar .skill.ic, [data-route="pkgMoling/pages/game/game"] .stage.land .bh-bar .skill.leap, [data-route="pkgMoling/pages/game/game"] .stage.land .bh-bar .skill.guard { width: calc(var(--rpx) * 28); height: calc(var(--rpx) * 28); }
[data-route="pkgMoling/pages/game/game"] .stage.land .bh-bar .ic-img { width: calc(var(--rpx) * 18); height: calc(var(--rpx) * 18); }
[data-route="pkgMoling/pages/game/game"] .stage.land .bh-bar .ic-name { font-size: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] /* v4.59.6：与灵力同号 */
/* v4.59.7：按键数值角标（ic-dmg）撤销——出分以气泡弹在屏上，不在键上标数值 */
.stage.land .bh-bar .skill.cast { width: calc(var(--rpx) * 33); height: calc(var(--rpx) * 33); margin-left: calc(var(--rpx) * 7); }
[data-route="pkgMoling/pages/game/game"] .stage.land .bh-bar .skill.cast .cast-img { width: calc(var(--rpx) * 22); height: calc(var(--rpx) * 22); top: 50%; left: 50%; transform: translate(-50%,-50%); }
[data-route="pkgMoling/pages/game/game"] .stage.land .bh-bar .skill.cast .cast-halo { width: calc(var(--rpx) * 30); height: calc(var(--rpx) * 30); margin: calc(var(--rpx) * -15) 0 0 calc(var(--rpx) * -15); }
[data-route="pkgMoling/pages/game/game"] /* v4.56.2：自定义导航后胶囊（⋯◎）悬在右上，血条让开它 */
.stage.land .bh-top { padding-right: calc(var(--rpx) * 132); }
[data-route="pkgMoling/pages/game/game"] /* v4.59.4：HUD 横屏锚点改左上（见下方 origin top left），整行离胶囊远，右侧不再让位 */

.skill.ic { position: relative; width: calc(var(--rpx) * 52); height: calc(var(--rpx) * 52); padding: 0; }
[data-route="pkgMoling/pages/game/game"] .skill.ic .ic-img { width: calc(var(--rpx) * 34); height: calc(var(--rpx) * 34); }
[data-route="pkgMoling/pages/game/game"] .skill.ic .ic-name { font-size: calc(var(--rpx) * 16); color: #d8cfae; margin-top: calc(var(--rpx) * -1); }
[data-route="pkgMoling/pages/game/game"] .skill { display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 50%; border: calc(var(--rpx) * 1) solid rgba(201,169,89,.55); background: radial-gradient(circle at 32% 28%, rgba(70,62,44,.95), rgba(16,14,10,.95)); color: #f0e6c8; box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 13) rgba(0,0,0,.5); }
[data-route="pkgMoling/pages/game/game"] .skill.leap, [data-route="pkgMoling/pages/game/game"] .skill.guard { width: calc(var(--rpx) * 60); height: calc(var(--rpx) * 60); }
[data-route="pkgMoling/pages/game/game"] .skill.cast { position: relative; width: calc(var(--rpx) * 84); height: calc(var(--rpx) * 84); overflow: hidden; }
[data-route="pkgMoling/pages/game/game"] /* v4.69.12（木哥）：「大招」二字去掉 —— 键面只留本境武器缩小图，
   并给它罩一层金光（图居中 + 背后一圈金色柔光做呼吸明灭）来引起注意。 */
.skill.cast .cast-img { position: absolute; left: 50%; top: 50%; width: calc(var(--rpx) * 48); height: calc(var(--rpx) * 48);
  transform: translate(-50%,-50%); filter: drop-shadow(0 0 calc(var(--rpx) * 6) rgba(255,214,96,.95)); }
[data-route="pkgMoling/pages/game/game"] .skill.cast .cast-halo { position: absolute; left: 50%; top: 50%; width: calc(var(--rpx) * 60); height: calc(var(--rpx) * 60);
  margin: calc(var(--rpx) * -30) 0 0 calc(var(--rpx) * -30); border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle, rgba(255,231,150,.95) 0%, rgba(255,206,84,.55) 38%, rgba(255,190,60,0) 72%);
  animation: castHalo 1.8s ease-in-out infinite; }

@keyframes castHalo { 0%,100% { opacity: .5; transform: scale(.86) } 50% { opacity: 1; transform: scale(1.16) } }
[data-route="pkgMoling/pages/game/game"] .skill.cast.ready .cast-img { filter: drop-shadow(0 0 calc(var(--rpx) * 10) rgba(255,224,120,1)); }
[data-route="pkgMoling/pages/game/game"] .skill.cast.ready .cast-halo { background: radial-gradient(circle, rgba(255,240,180,1) 0%, rgba(255,214,96,.7) 40%, rgba(255,190,60,0) 74%); }
[data-route="pkgMoling/pages/game/game"] .skill.guard.active { border-color: #bfe3ff; box-shadow: 0 0 calc(var(--rpx) * 30) rgba(120,180,255,.6); }
[data-route="pkgMoling/pages/game/game"] .skill.cast.ready { border-color: #ffd98a; box-shadow: 0 0 calc(var(--rpx) * 34) rgba(244,217,139,.65); }
[data-route="pkgMoling/pages/game/game"] .skill.cast.cooldown { opacity: .5; }
[data-route="pkgMoling/pages/game/game"] /* ------- v4.69.8（木哥）：所有可用次数，按键上一枚小红点标出数量 -------
   0 次的小红点转灰，一眼分得出「还有几次」和「打空了」。 */
/* v4.69.11（木哥）：角标此前太大 —— 横屏下红点 calc(var(--rpx) * 28) 跟按键一样大，喧宾夺主。
   改成「最小字号 calc(var(--rpx) * 10)（L3 封底）+ 点刚好包住数字」：一位数 calc(var(--rpx) * 14) 圆点，
   两位数靠 padding 自然撑开，不占按键。 */
.skill .cnt { position: absolute; top: calc(var(--rpx) * -4); right: calc(var(--rpx) * -4); min-width: calc(var(--rpx) * 14); height: calc(var(--rpx) * 14);
  padding: 0 calc(var(--rpx) * 2); border-radius: calc(var(--rpx) * 999); box-sizing: border-box;
  background: linear-gradient(180deg, #ff6a5a, #c62828); color: #fff;
  font-size: calc(var(--rpx) * 10); line-height: calc(var(--rpx) * 14); text-align: center; font-weight: 700;
  border: calc(var(--rpx) * 1) solid rgba(255,255,255,.5); box-shadow: 0 calc(var(--rpx) * 1) calc(var(--rpx) * 3) rgba(0,0,0,.5); }
[data-route="pkgMoling/pages/game/game"] .skill .cnt.zero { background: linear-gradient(180deg, #9a9a9a, #4f4f4f); opacity: .85; }
[data-route="pkgMoling/pages/game/game"] .cast-wrap { position: relative; display: flex; align-items: flex-end; }
[data-route="pkgMoling/pages/game/game"] .cast-wrap .cnt { position: absolute; top: calc(var(--rpx) * -4); right: calc(var(--rpx) * -4); }
[data-route="pkgMoling/pages/game/game"] /* v4.69.11：横屏不再单独放大角标（原来 calc(var(--rpx) * 28)/calc(var(--rpx) * 20)，比 calc(var(--rpx) * 28) 的按键还大）——
   与竖屏同一口径：calc(var(--rpx) * 10) 数字、calc(var(--rpx) * 14) 圆点。 */
.stage.land .bh-bar .skill .cnt, [data-route="pkgMoling/pages/game/game"] .stage.land .bh-bar .cast-wrap .cnt { top: calc(var(--rpx) * -4); right: calc(var(--rpx) * -4); min-width: calc(var(--rpx) * 14); height: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999); font-size: calc(var(--rpx) * 10); line-height: calc(var(--rpx) * 14); }
[data-route="pkgMoling/pages/game/game"] .sk-s { font-size: calc(var(--rpx) * 19); color: #b7ad93; letter-spacing: calc(var(--rpx) * 2); }
[data-route="pkgMoling/pages/game/game"] /* ------- 转场卡 ------- */
.transition { position: absolute; inset: 0; background: rgba(6,6,4,.86); display: flex; align-items: center; justify-content: center; z-index: 20; }
[data-route="pkgMoling/pages/game/game"] .tr-inner { display: flex; flex-direction: column; text-align: center; padding: 0 calc(var(--rpx) * 60); max-width: calc(var(--rpx) * 640); }
[data-route="pkgMoling/pages/game/game"] .tr-chapter { color: #c9a959; font-size: calc(var(--rpx) * 24); letter-spacing: calc(var(--rpx) * 6); }
[data-route="pkgMoling/pages/game/game"] .tr-name { color: #f7f3e9; font-size: calc(var(--rpx) * 56); letter-spacing: calc(var(--rpx) * 12); margin: calc(var(--rpx) * 20) 0; }
[data-route="pkgMoling/pages/game/game"] .tr-text { color: #b7ad93; font-size: calc(var(--rpx) * 28); line-height: 1.6; letter-spacing: calc(var(--rpx) * 2); }
[data-route="pkgMoling/pages/game/game"] /* ------- 对话 ------- */
.dialog { position: absolute; inset: 0; background: rgba(8,8,10,.48); display: flex; align-items: flex-end; justify-content: center; padding-bottom: calc(14vh + env(safe-area-inset-bottom)); z-index: 22; }
[data-route="pkgMoling/pages/game/game"] .dg-inner { width: 86%; background: rgba(22,26,22,.74); border: calc(var(--rpx) * 1) solid rgba(201,169,89,.52); border-radius: calc(var(--rpx) * 18); padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28); box-shadow: inset 0 1px 0 rgba(255,255,255,.07); }
[data-route="pkgMoling/pages/game/game"] /* v4.69.12 收紧留白 */
.dg-title { display: block; color: #ecd398; font-size: calc(var(--rpx) * 32); letter-spacing: calc(var(--rpx) * 4); }
[data-route="pkgMoling/pages/game/game"] .dg-text { display: block; color: #efe6cf; font-size: calc(var(--rpx) * 26); line-height: 1.6; margin-top: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] .dg-next { display: flex; margin-top: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 10) calc(var(--rpx) * 36); font-size: calc(var(--rpx) * 26); }
[data-route="pkgMoling/pages/game/game"] /* ------- 结算 ------- */
.result { position: absolute; inset: 0; background: rgba(8,8,10,.48); display: flex; align-items: center; justify-content: center; z-index: 22; }
[data-route="pkgMoling/pages/game/game"] /* v4.59.8（木哥：弹窗布局理顺）——标题展示级；正文/按键一律 calc(var(--rpx) * 16)；
   复活键独占一整行不折行；底部两键等宽；节奏统一 22/calc(var(--rpx) * 24) */
/* v4.69.12（木哥）：弹窗收紧，不留无效空白 ——
   标题（灵力尽／破）＝启动页按键字号（L1）；说明（sub/reward）＝三级字号（L3）；
   按键＝二级字号（L2）。注意：横屏下 .rs-inner 整体 scale(.62)，
   故这里写的是「÷0.62 之后的原值」，落到眼睛上是 calc(var(--rpx) * 16) / calc(var(--rpx) * 10) / calc(var(--rpx) * 12)。 */
.rs-inner { text-align: center; background: rgba(22,26,22,.74); border: calc(var(--rpx) * 1) solid rgba(201,169,89,.52); border-radius: calc(var(--rpx) * 24); padding: calc(var(--rpx) * 28) calc(var(--rpx) * 32); width: 82%; box-sizing: border-box; box-shadow: inset 0 1px 0 rgba(255,255,255,.07); }
[data-route="pkgMoling/pages/game/game"] .rs-title { display: block; font-size: calc(var(--rpx) * 32); letter-spacing: calc(var(--rpx) * 6); color: #f4d98b; text-shadow: 0 0 calc(var(--rpx) * 22) rgba(230,180,80,.42); }
[data-route="pkgMoling/pages/game/game"] /* ÷.62 → L1 calc(var(--rpx) * 16) */
.rs-sub { display: block; color: #b7ad93; margin-top: calc(var(--rpx) * 12); letter-spacing: calc(var(--rpx) * 1); font-size: calc(var(--rpx) * 19); line-height: 1.45; }
[data-route="pkgMoling/pages/game/game"] .rs-reward { display: block; margin: calc(var(--rpx) * 12) 0 0; color: #cbb98d; letter-spacing: calc(var(--rpx) * 1); font-size: calc(var(--rpx) * 19); line-height: 1.45; }
[data-route="pkgMoling/pages/game/game"] /* ÷.62 → L3 */
.result .rs-lock { display: block; margin-top: calc(var(--rpx) * 10); color: #d8a08a; font-size: calc(var(--rpx) * 19); }
[data-route="pkgMoling/pages/game/game"] .result .btn-row .btn.revive { flex: 0 0 100%; display: flex; box-sizing: border-box; padding: calc(var(--rpx) * 10) calc(var(--rpx) * 14); font-size: calc(var(--rpx) * 26); letter-spacing: calc(var(--rpx) * 1); white-space: nowrap; }
[data-route="pkgMoling/pages/game/game"] /* ÷.62 → L2 */
.result .btn-row { margin-top: calc(var(--rpx) * 16); gap: calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/game/game"] .result .btn-row .btn { flex: 1; padding: calc(var(--rpx) * 10) 0; font-size: calc(var(--rpx) * 26); letter-spacing: calc(var(--rpx) * 3); }
[data-route="pkgMoling/pages/game/game"] /* ÷.62 → L2 calc(var(--rpx) * 12) */

/* ------- v4.69.12 大招次数用尽 · 引导去交作业（木哥）-------
   说明＝三级字号（L3）；主按键「拍照提交作业」＝一级字号（L1，与启动页按键同大）。
   与其它弹层同一套安全区规则（iPhone 刘海/灵动岛 + Home Indicator）。 */
.cast-ask { position: absolute; inset: 0; z-index: 54; background: rgba(8,8,10,.48);
  box-sizing: border-box;
  padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
  display: flex; align-items: center; justify-content: center; }
[data-route="pkgMoling/pages/game/game"] .ca-inner { width: 70vw; max-width: calc(var(--rpx) * 560); box-sizing: border-box;
  background: rgba(22,26,22,.74);
  border: calc(var(--rpx) * 2) solid rgba(201,169,89,.52); border-radius: calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24); display: flex; flex-direction: column; align-items: center;
  box-shadow: 0 calc(var(--rpx) * 14) calc(var(--rpx) * 40) rgba(0,0,0,.55); }
[data-route="pkgMoling/pages/game/game"] .ca-title { font-size: calc(var(--rpx) * 32); letter-spacing: calc(var(--rpx) * 4); color: #f4d98b; }
[data-route="pkgMoling/pages/game/game"] .ca-text { margin-top: calc(var(--rpx) * 12); font-size: calc(var(--rpx) * 26); line-height: 1.45; color: #efe6cf; text-align: center; }
[data-route="pkgMoling/pages/game/game"] .ca-main { margin-top: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 12) calc(var(--rpx) * 40); border-radius: calc(var(--rpx) * 999);   /* L1 主按键 */
  font-size: calc(var(--rpx) * 26); letter-spacing: calc(var(--rpx) * 3); color: #241b08; font-weight: 700;
  border: calc(var(--rpx) * 1) solid rgba(233,201,110,.9);
  background: linear-gradient(180deg, #f2dfa4, #d9b64a); }
[data-route="pkgMoling/pages/game/game"] .ca-main:active { background: #c9a445; }
[data-route="pkgMoling/pages/game/game"] .stage.land .ca-inner { transform: scale(.62); }
[data-route="pkgMoling/pages/game/game"] .stage.land .cast-ask { overflow: hidden; }
[data-route="pkgMoling/pages/game/game"] /* ------- 终章 · 收卷 ------- */
.ending { position: absolute; inset: 0; z-index: 26; display: flex; flex-direction: column; align-items: center; justify-content: center; padding-bottom: env(safe-area-inset-bottom); background: radial-gradient(ellipse at 50% 34%, #1d2436 0%, #0b0d15 62%, #05060a 100%); }
[data-route="pkgMoling/pages/game/game"] .ed-stars { position: absolute; inset: 0; opacity: .9; background-image: radial-gradient(calc(var(--rpx) * 3) calc(var(--rpx) * 3) at 12% 18%, rgba(255,246,214,.9), transparent 60%), radial-gradient(calc(var(--rpx) * 3) calc(var(--rpx) * 3) at 41% 12%, rgba(255,246,214,.85), transparent 60%), radial-gradient(calc(var(--rpx) * 4) calc(var(--rpx) * 4) at 72% 16%, rgba(255,246,214,.9), transparent 60%), radial-gradient(calc(var(--rpx) * 3) calc(var(--rpx) * 3) at 86% 38%, rgba(255,246,214,.65), transparent 60%), radial-gradient(calc(var(--rpx) * 3) calc(var(--rpx) * 3) at 26% 42%, rgba(255,246,214,.7), transparent 60%); }
[data-route="pkgMoling/pages/game/game"] .ed-scroll { position: relative; width: 92%; height: 30vh; overflow: hidden; background: #e7dcc0; box-shadow: 0 20px 60px rgba(0,0,0,.6); border-top: calc(var(--rpx) * 14) solid #3a2712; border-bottom: calc(var(--rpx) * 14) solid #3a2712; }
[data-route="pkgMoling/pages/game/game"] .ed-strip { display: flex; height: 100%; }
[data-route="pkgMoling/pages/game/game"] .ed-img { width: 60%; height: 100%; flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] .ed-seal { margin-top: -15vh; z-index: 5; font-size: calc(var(--rpx) * 200); color: #f7f3e9; text-shadow: 0 0 calc(var(--rpx) * 40) rgba(255,238,190,.85), 0 0 calc(var(--rpx) * 100) rgba(201,163,78,.6), 0 calc(var(--rpx) * 6) calc(var(--rpx) * 16) rgba(0,0,0,.6); font-weight: 700; }
[data-route="pkgMoling/pages/game/game"] .ed-text { z-index: 4; text-align: center; padding: 0 calc(var(--rpx) * 40); margin-top: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] .ed-small { display: block; color: #c9a959; letter-spacing: calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 24); }
[data-route="pkgMoling/pages/game/game"] .ed-body { display: block; color: #cfc6ac; font-size: calc(var(--rpx) * 28); line-height: 1.6; margin-top: calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/game/game"] .ed-btns { z-index: 4; display: flex; gap: calc(var(--rpx) * 20); margin-top: calc(var(--rpx) * 30); }
[data-route="pkgMoling/pages/game/game"] /* ------- 提示（行走页挂在猫脚下石径上，不压主角；战斗页抬到按钮上方） ------- */
.hint { position: absolute; left: 0; right: 0; bottom: calc(13vh + env(safe-area-inset-bottom)); text-align: center; color: rgba(246,236,208,.82); font-size: calc(var(--rpx) * 24); letter-spacing: calc(var(--rpx) * 2); text-shadow: 0 calc(var(--rpx) * 1) calc(var(--rpx) * 10) #000; z-index: 8; pointer-events: none; }
[data-route="pkgMoling/pages/game/game"] .hint.hint-b { bottom: 27%; font-size: calc(var(--rpx) * 24); }
[data-route="pkgMoling/pages/game/game"] /* ------- 主持独白（顶部模式低于 HUD，底部模式高于按钮区） ------- */
.narration { position: absolute; left: 0; right: 0; bottom: 21%; display: flex; justify-content: center; z-index: 24; pointer-events: auto; }
[data-route="pkgMoling/pages/game/game"] .narration.nr-top { bottom: auto; top: 17%; }
[data-route="pkgMoling/pages/game/game"] .nr-inner { width: 86%; padding: calc(var(--rpx) * 20) calc(var(--rpx) * 30) calc(var(--rpx) * 14) calc(var(--rpx) * 26); background: rgba(22,26,22,.74); box-shadow: inset 0 1px 0 rgba(255,255,255,.07); border: calc(var(--rpx) * 1) solid rgba(201,169,89,.32); border-left: calc(var(--rpx) * 5) solid rgba(201,169,89,.78); border-radius: calc(var(--rpx) * 12); box-shadow: 0 calc(var(--rpx) * 12) calc(var(--rpx) * 36) rgba(0,0,0,.55); }
[data-route="pkgMoling/pages/game/game"] .nr-tag { display: inline-block; font-size: calc(var(--rpx) * 24); letter-spacing: calc(var(--rpx) * 6); color: #e0c67e; border: calc(var(--rpx) * 1) solid rgba(201,169,89,.42); border-radius: calc(var(--rpx) * 999); padding: calc(var(--rpx) * 4) calc(var(--rpx) * 20); margin-bottom: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] .nr-text { display: block; color: #f0e6c8; font-size: calc(var(--rpx) * 28); line-height: 1.6; letter-spacing: calc(var(--rpx) * 2); min-height: 1.95em; text-shadow: 0 calc(var(--rpx) * 1) calc(var(--rpx) * 10) rgba(0,0,0,.85); }
[data-route="pkgMoling/pages/game/game"] .nr-hint { display: block; margin-top: calc(var(--rpx) * 6); font-size: calc(var(--rpx) * 24); letter-spacing: calc(var(--rpx) * 4); color: rgba(240,230,200,.4); text-align: right; }
[data-route="pkgMoling/pages/game/game"] .narration.holding .nr-hint { color: rgba(240,230,200,.62); }
[data-route="pkgMoling/pages/game/game"] /* ------- 竖屏微调 ------- */
@media (orientation: portrait) {
  /* 竖屏：独白全部挂顶部（猫走在屏幕下沿 55%-75%，底部独白必压猫） */
  .narration { bottom: auto; top: 17%; }
  .title-screen.elegant .poster-box .btn { padding: calc(var(--rpx) * 12) calc(var(--rpx) * 20); font-size: calc(var(--rpx) * 24); letter-spacing: calc(var(--rpx) * 1); }
  .title-screen.elegant .poster-box .btn-row { gap: calc(var(--rpx) * 12); }
  .title-screen.elegant .btn.icon { min-width: calc(var(--rpx) * 72); }
  .skill.cast { width: calc(var(--rpx) * 75); height: calc(var(--rpx) * 75); }
  .skill.ic { width: calc(var(--rpx) * 48); height: calc(var(--rpx) * 48); }
  .skill.ic .ic-img { width: calc(var(--rpx) * 32); height: calc(var(--rpx) * 32); }
  .bh-row { gap: calc(var(--rpx) * 18); }
  .bh-bottom { bottom: calc(4vh + env(safe-area-inset-bottom)); }
}
[data-route="pkgMoling/pages/game/game"] /* 旧包提醒横幅（v4.37.9）：云端核对版本后全宽大字，任何层级之上 */
.stale-warn {
  position: absolute; left: 0; right: 0; top: 0;
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 32) calc(calc(var(--rpx) * 28) + env(safe-area-inset-top));
  background: #b3372a; color: #fff7e8;
  font-size: calc(var(--rpx) * 32); font-weight: 700; line-height: 1.5;
  text-align: left; z-index: 40; pointer-events: auto;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 24) rgba(0,0,0,.35);
}
[data-route="pkgMoling/pages/game/game"] /* ===== 运行状态条（v4.38.5）=====
 * 取代 v4.38.3 的常驻自检行：平时完全不出现在画面主体，
 * 进境头 6 秒显示（够核版本号）→ 自动淡出；出问题自动浮出；连点 5 次常显。 */

/* ================= v4.58.0 行动罗盘（木哥：走动完全用户控制 · 按钮新设计）=================
   页面上以前没有行走控件（是「点住屏幕自动前进」），这一版是全新设计：
   半透明仪表盘，贴横版页面左下角最低一行——◀ 左走 ／（跑）按住加速 ／ ▶ 右走。
   按住才走、松手即停；盘面压到最低一行，尽量少遮挡主体画面。 */
.compass { position: absolute; left: calc(var(--rpx) * 10); bottom: calc(calc(var(--rpx) * 10) + env(safe-area-inset-bottom));
  z-index: 9; pointer-events: auto; }
[data-route="pkgMoling/pages/game/game"] .cp-dial { display: flex; align-items: center; gap: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 5) calc(var(--rpx) * 7); border-radius: calc(var(--rpx) * 999);
  background: radial-gradient(130% 180% at 50% 0%, rgba(30,32,42,.44), rgba(8,10,14,.30));
  border: calc(var(--rpx) * 1) solid rgba(201,169,89,.26); }
[data-route="pkgMoling/pages/game/game"] .cp-key, [data-route="pkgMoling/pages/game/game"] .cp-mid { display: flex; align-items: center; justify-content: center; border-radius: 50%; }
[data-route="pkgMoling/pages/game/game"] .cp-key { width: calc(var(--rpx) * 48); height: calc(var(--rpx) * 48);
  background: radial-gradient(circle at 34% 28%, rgba(72,66,52,.42), rgba(14,14,18,.40));
  border: calc(var(--rpx) * 1) solid rgba(201,169,89,.40); }
[data-route="pkgMoling/pages/game/game"] .cp-key.on { background: radial-gradient(circle at 34% 28%, rgba(233,201,110,.62), rgba(122,94,28,.48));
  border-color: #ffd98a; box-shadow: 0 0 calc(var(--rpx) * 12) rgba(244,217,139,.5); }
[data-route="pkgMoling/pages/game/game"] .cp-ar { font-size: calc(var(--rpx) * 22); line-height: 1; color: #f2e6c0; text-shadow: 0 calc(var(--rpx) * 1) calc(var(--rpx) * 6) rgba(0,0,0,.7); }
[data-route="pkgMoling/pages/game/game"] .cp-mid { width: calc(var(--rpx) * 40); height: calc(var(--rpx) * 40);
  background: radial-gradient(circle at 34% 28%, rgba(62,58,46,.40), rgba(12,12,16,.38));
  border: calc(var(--rpx) * 1) solid rgba(201,169,89,.32); }
[data-route="pkgMoling/pages/game/game"] .cp-mid.on { background: radial-gradient(circle at 34% 28%, rgba(233,201,110,.64), rgba(124,96,28,.5));
  border-color: #ffd98a; box-shadow: 0 0 calc(var(--rpx) * 11) rgba(244,217,139,.45); }
[data-route="pkgMoling/pages/game/game"] .cp-run { font-size: calc(var(--rpx) * 15); color: #e8dcb4; letter-spacing: calc(var(--rpx) * 1); }
[data-route="pkgMoling/pages/game/game"] /* 横屏：一切按屏高重算，盘面压到最低一行、缩到不挡主角 */
/* v4.58.1（木哥）：罗盘整体再小一半（几何全减半；字只按比例收一点，保证还读得清） */
.stage.land .compass { left: 1.4vh; bottom: calc(0.9vh + env(safe-area-inset-bottom)); }
[data-route="pkgMoling/pages/game/game"] .stage.land .cp-dial { gap: 0.7vh; padding: 0.6vh 0.8vh; }
[data-route="pkgMoling/pages/game/game"] .stage.land .cp-key { width: 8.4vh; height: 8.4vh; }
[data-route="pkgMoling/pages/game/game"] .stage.land .cp-ar { font-size: 3vh; }
[data-route="pkgMoling/pages/game/game"] .stage.land .cp-mid { width: 6.6vh; height: 6.6vh; }
[data-route="pkgMoling/pages/game/game"] .stage.land .cp-run { font-size: 1.9vh; }
[data-route="pkgMoling/pages/game/game"] /* v4.59.9（木哥）：八式入口与面板整套下架，act-* 样式撤销 */

/* ================= 进入页 v4.56.5（木哥定稿横屏版）=================
   黑底，只保留月亮与墨灵猫（视频/海报那一卷居中），金箔标题回原位（顶部居中），
   按键横排一行贴底、大小一致；启程金键按点击习惯放最左。 */
.entry-screen { background: #000; overflow: hidden; }
[data-route="pkgMoling/pages/game/game"] .entry-night { position: absolute; inset: 0; background: #000; }
[data-route="pkgMoling/pages/game/game"] /* 竖版视频/海报以 9:16 画幅满高居中——月亮与猫主都在这一卷里 */
/* v4.57.0 墨灵猫 = 最终形象（启动视频抠帧 8 张，/anim-host/robed/）。
   右侧上下居中；猫在帧内朝右，镜像翻身后面向画面中心。
   8 帧按真实 5fps 节奏步进连播（每帧 0.2s，一轮 1.6s）。 */
/* v4.57.1（木哥）：猫左移，正落在「藏器阁」按键的正上方（实测按键行：藏器阁中心 59.5%W，
   按键行顶边距底 ≈12.3vh），底边压到按键上方留一点空；尺寸/镜像/位置逻辑不变。 */
.entry-cat { position: absolute; left: 59.5vw; right: auto; top: auto;
  bottom: calc(13vh + env(safe-area-inset-bottom));
  width: 92vh; height: 92vh;
  transform: translateX(-50%) scaleX(-1); pointer-events: none; }
[data-route="pkgMoling/pages/game/game"] .entry-cat-f { position: absolute; left: 0; top: 0; width: 100%; height: 100%;
  opacity: 0; animation-duration: 1.6s; animation-timing-function: steps(1, end);
  animation-iteration-count: infinite; }

@keyframes catK0 { 0% { opacity: 1 } 12.5% { opacity: 0 } 100% { opacity: 0 } }

@keyframes catK1 { 0% { opacity: 0 } 12.5% { opacity: 1 } 25% { opacity: 0 } 100% { opacity: 0 } }

@keyframes catK2 { 0% { opacity: 0 } 25% { opacity: 1 } 37.5% { opacity: 0 } 100% { opacity: 0 } }

@keyframes catK3 { 0% { opacity: 0 } 37.5% { opacity: 1 } 50% { opacity: 0 } 100% { opacity: 0 } }

@keyframes catK4 { 0% { opacity: 0 } 50% { opacity: 1 } 62.5% { opacity: 0 } 100% { opacity: 0 } }

@keyframes catK5 { 0% { opacity: 0 } 62.5% { opacity: 1 } 75% { opacity: 0 } 100% { opacity: 0 } }

@keyframes catK6 { 0% { opacity: 0 } 75% { opacity: 1 } 87.5% { opacity: 0 } 100% { opacity: 0 } }

@keyframes catK7 { 0% { opacity: 0 } 87.5% { opacity: 1 } 100% { opacity: 0 } }
[data-route="pkgMoling/pages/game/game"] /* 月亮层：从原海报帧顶部裁出，四周晕影羽化融进黑底 */
.entry-moon { position: absolute; left: 50%; top: 0; width: 56vh; height: 30vh;
  transform: translateX(-50%); overflow: hidden; pointer-events: none; }
[data-route="pkgMoling/pages/game/game"] .entry-moon-img { position: absolute; left: 50%; top: 0; transform: translateX(-50%);
  width: 80.6vh; height: 138.3vh; }
[data-route="pkgMoling/pages/game/game"] .entry-moon-veil { position: absolute; inset: 0;
  background: radial-gradient(ellipse 58% 62% at 50% 55%, rgba(0,0,0,0) 30%, rgba(0,0,0,.78) 60%, #000 84%); }
[data-route="pkgMoling/pages/game/game"] /* 左右压黑渐隐：视频夜空融入纯黑底；底部压暗托住按键行 */
.entry-scrim { position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(0deg, rgba(0,0,0,.82) 0%, rgba(0,0,0,0) 30%); }
[data-route="pkgMoling/pages/game/game"] /* 标题回原位：顶部居中（题名 + 落笔横划 + 十境飞升） */
.entry-top { position: absolute; left: 5vw; right: auto; top: 7vh; display: flex;
  flex-direction: column; align-items: flex-start; pointer-events: none;
  animation: eFloat 6s ease-in-out 1.2s infinite; }

@keyframes eFloat { 0%,100% { transform: translateY(0) } 50% { transform: translateY(calc(var(--rpx) * -8)) } }
[data-route="pkgMoling/pages/game/game"] /* 题名图底部有笔锋拖尾留白，负外边距把横划+副题提进留白带，视觉上紧贴金字 */
/* v4.57.0（木哥）：标题放大一倍 34vh→68vh，位置不动（左侧）。
   题名图金字实际只占图高 8.5%~76.6%（实测 alpha 边界）：
   68vh 宽 → 图高 ≈46.8vh → 底部留白 ≈11vh，负外边距把副题贴到金字下沿 */
.entry-title { width: 45.3vh; max-width: 88vw; margin-bottom: -6vh;
  filter: drop-shadow(0 0 calc(var(--rpx) * 16) rgba(255,214,96,.5)) drop-shadow(0 calc(var(--rpx) * 6) calc(var(--rpx) * 28) rgba(255,168,44,.32)); }
[data-route="pkgMoling/pages/game/game"] .entry-sub { margin-top: 0; font-size: calc(var(--rpx) * 12); letter-spacing: calc(var(--rpx) * 2); text-indent: calc(var(--rpx) * 2);
  color: #e9d9a8; text-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 10) rgba(0,0,0,.9); }
[data-route="pkgMoling/pages/game/game"] /* 首次进入取画卷的下载进度：标题下方居中 */
.dl-wrap { position: absolute; left: 5vw; right: auto; width: 40vh; top: 62vh; display: flex;
  flex-direction: column; align-items: flex-start; }
[data-route="pkgMoling/pages/game/game"] .dl-bar { width: 100%; height: calc(var(--rpx) * 5); border-radius: calc(var(--rpx) * 6); overflow: hidden;
  background: rgba(217,182,74,.16); }
[data-route="pkgMoling/pages/game/game"] .dl-i { height: 100%; background: linear-gradient(90deg, #b98a3a, #e9cf8a); }
[data-route="pkgMoling/pages/game/game"] .dl-t { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 10); color: rgba(233,217,168,.75); letter-spacing: calc(var(--rpx) * 2); }
[data-route="pkgMoling/pages/game/game"] /* 按键横排一行贴底，大小一致；总宽 ≈calc(var(--rpx) * 690)，750 基数下不折行 */
.entry-bottom { position: absolute; left: 0; right: 0; bottom: calc(2.6vh + env(safe-area-inset-bottom));
  display: flex; justify-content: center; }
[data-route="pkgMoling/pages/game/game"] .entry-row { display: flex; gap: calc(var(--rpx) * 8); align-items: center; }
[data-route="pkgMoling/pages/game/game"] /* v4.56.6（木哥）：位置不动，大小缩小一倍 */
.ebtn { padding: calc(var(--rpx) * 9) calc(var(--rpx) * 16); border-radius: calc(var(--rpx) * 999); font-size: calc(var(--rpx) * 16); letter-spacing: calc(var(--rpx) * 1.5);
  color: #d8cba4; border: calc(var(--rpx) * 1) solid rgba(217,182,74,.42);
  background: rgba(10,10,12,.55); }
[data-route="pkgMoling/pages/game/game"] .ebtn:active { background: rgba(217,182,74,.22); }
[data-route="pkgMoling/pages/game/game"] /* 启程：同排同尺寸，金底实键，一眼认出主键 */
.ebtn.ego { color: #241b08; font-weight: 700; letter-spacing: calc(var(--rpx) * 2); text-indent: calc(var(--rpx) * 1);
  border-color: rgba(233,201,110,.9);
  background: linear-gradient(180deg, #f2dfa4, #d9b64a); }
[data-route="pkgMoling/pages/game/game"] .ebtn.ego:active { background: #c9a445; }
[data-route="pkgMoling/pages/game/game"] .eicon { min-width: calc(var(--rpx) * 47); padding-left: 0; padding-right: 0; text-align: center; }
[data-route="pkgMoling/pages/game/game"] /* 版本号挪到右上（胶囊下方）：右下让给按键行 */
.entry-build { position: absolute; right: calc(var(--rpx) * 20); top: calc(var(--rpx) * 46);
  font-size: calc(var(--rpx) * 10); color: rgba(200,190,165,.45); }
[data-route="pkgMoling/pages/game/game"] /* ============ 启动页 · 墨灵猫开口的气泡 —— 已删除（v4.86.22）============
   v4.84.0~v4.86.21 这一块（.cat-say / .cs-tail / .cs-hd / .cs-dot / .cs-tag /
   .cs-prog / .cs-brief / .cs-text / .cs-chips / .cs-chip + @keyframes csPulse）
   是「卷首猫话」气泡，曾经把欢迎语与平台介绍逐条落在黑底上。
   木哥 2026-10-11：「恢复原来的干净页面……屏幕不出现任何弹窗，只增加欢迎词。
   和平台介绍要一气呵成，全部介绍完成。」⇒ 启动页不再浮任何字与按钮，
   只保留声音（墨灵猫的 TTS 欢迎词 + 平台介绍，见 game/main.js 的 titleTalk/
   titleBrief）。这里连样式一起清掉，不留「还能复活」的口子。
   ★ 别再加回来：tools/test-popup-style.js 里原有一条 .cat-say 的例外断言，
     已随本块一起删除。 */

/* ================= 知识题（v4.41.0 脚本第六章）================= */
/* v4.69.10（木哥：苹果手机的出题弹窗没做好适配）——
   遮罩 inset:0 是铺满整块物理屏的，iPhone 的刘海/灵动岛（横屏时在左右两侧）和
   底部 Home Indicator 都落在里面；不给遮罩留安全区，卡片就会被压到刘海下面、
   或被底部横条压住点不到「收起」。四边都留出来（竖屏吃上下，横屏吃左右）。 */
.qz-mask { position: absolute; inset: 0; z-index: 52; background: rgba(8,8,10,.48);
  box-sizing: border-box;
  padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
  display: flex; align-items: center; justify-content: center; }
[data-route="pkgMoling/pages/game/game"] /* v4.69.10：卡片改成纵向弹性盒 + 屏高上限 —— 题干长、选项多时由「选项区」
   自己在卡片内部滚，卡片永不高过屏幕（此前没有上限，长题在 iPhone 上会顶出屏外，
   底部的「收起」被裁掉，点不着）。 */
.qz-card { width: 88vw; max-width: calc(var(--rpx) * 640); max-height: 75vh; box-sizing: border-box;
  border-radius: calc(var(--rpx) * 20); padding: calc(var(--rpx) * 28) calc(var(--rpx) * 28) calc(var(--rpx) * 22);
  display: flex; flex-direction: column; overflow: hidden;
  background: rgba(22,26,22,.74);
  border: calc(var(--rpx) * 2) solid rgba(201,169,89,.52);
  box-shadow: 0 calc(var(--rpx) * 14) calc(var(--rpx) * 46) rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.07); }
[data-route="pkgMoling/pages/game/game"] .qz-hd { display: flex; align-items: baseline; justify-content: space-between; flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] /* v4.86.4（弹窗字号归一）：题头/题号一律 T3 calc(var(--rpx) * 24)（原 24/22 混排） */
.qz-label { font-size: calc(var(--rpx) * 24); color: #d8bb70; letter-spacing: calc(var(--rpx) * 2); }
[data-route="pkgMoling/pages/game/game"] .qz-idx { font-size: calc(var(--rpx) * 24); color: #b7a678; }
[data-route="pkgMoling/pages/game/game"] /* v4.86.4：题干＝T1 calc(var(--rpx) * 32)（原 calc(var(--rpx) * 34)，脱离五档）。题干是孩子最该看清的一行，
   给到 T1 与「一级：卡片标题」同级；calc(var(--rpx) * 32) 在竖屏落点 16px，小学生阅读无压力。 */
.qz-q { display: block; margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 16); font-size: calc(var(--rpx) * 32); line-height: 1.45;
  color: #f6efe0; font-weight: 600; flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] /* v4.69.16：滚动区改「壳吃余量 + scroll-view 绝对填满」——真机（iOS/安卓都有）
   scroll-view 在 flex 里拿不到确定高度，内容会整段溢出容器、把「收起」页脚压在
   选项底下；壳（普通 view）自己 flex 收缩并裁切，scroll-view 绝对定位永远有
   明确高度，滚得动也封得住。选项间隔改 margin（scroll-view 内容不吃 gap）。 */
/* v4.69.19（真机实锤）：壳塌 0 高——absolute 的 scroll-view 不给壳贡献高度，
   卡片又是内容尺寸 → 整个选项区缩成 0，选项出不来也滚不动（木哥截图①）。
   本游戏每题恒 4 个选项，直接给壳显式定高：竖屏 4×(84)+3×14=378→calc(var(--rpx) * 380)，
   超长文本由 scroll-view 内部滚；横屏行矮（calc(var(--rpx) * 28)+5 间距）→calc(var(--rpx) * 130)。 */
.qz-opts-wrap { flex: 0 0 auto; height: calc(var(--rpx) * 380); position: relative; overflow: hidden; }
[data-route="pkgMoling/pages/game/game"] .qz-opts { position: absolute; left: 0; right: 0; top: 0; bottom: 0; }
[data-route="pkgMoling/pages/game/game"] .qz-opt + .qz-opt { margin-top: calc(var(--rpx) * 14); }
[data-route="pkgMoling/pages/game/game"] .qz-opt { display: flex; align-items: center; padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20); border-radius: calc(var(--rpx) * 14);
  background: rgba(255,255,255,.07); border: calc(var(--rpx) * 2) solid rgba(201,169,89,.3); }
[data-route="pkgMoling/pages/game/game"] .qz-opt:active { background: rgba(201,169,89,.18); }
[data-route="pkgMoling/pages/game/game"] .qz-opt.ok { background: rgba(156,196,138,.28); border-color: #6f9a55; }
[data-route="pkgMoling/pages/game/game"] .qz-opt.bad { background: rgba(200,90,80,.22); border-color: #b25248; }
[data-route="pkgMoling/pages/game/game"] /* v4.85.0（B-1a）：错满 2 次亮出的「正确项」轮廓（不是已经选中，只是个圈） */
.qz-opt.qhin { border-color: #c9a959; box-shadow: inset 0 0 0 calc(var(--rpx) * 2) rgba(201,169,89,.35); }
[data-route="pkgMoling/pages/game/game"] /* v4.86.4：解题提示句吸附 T3 calc(var(--rpx) * 24)（原 calc(var(--rpx) * 22)） */
.qz-tip { display: block; margin-top: calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 24); color: #c9a959; flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] .qz-tip.ok { color: #9cc48a; }
[data-route="pkgMoling/pages/game/game"] /* v4.86.4：选项序号与选项正文一律 T2 calc(var(--rpx) * 28)（原 24/28 一大一小看着不齐）；
   序号圈同步放大到 calc(var(--rpx) * 52)，与 calc(var(--rpx) * 28) 文字同高。 */
.qz-mark { width: calc(var(--rpx) * 52); height: calc(var(--rpx) * 52); line-height: calc(var(--rpx) * 52); text-align: center; flex-shrink: 0;
  border-radius: 50%; background: rgba(255,255,255,.08); border: calc(var(--rpx) * 2) solid rgba(201,169,89,.6);
  color: #e6cc86; font-size: calc(var(--rpx) * 28); margin-right: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] .qz-txt { font-size: calc(var(--rpx) * 28); color: #efe6cf; }
[data-route="pkgMoling/pages/game/game"] .qz-ft { margin-top: calc(var(--rpx) * 20); display: flex; align-items: center; justify-content: space-between; flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] /* v4.86.4：页脚得分 T3 calc(var(--rpx) * 24)；「收起」＝T2 calc(var(--rpx) * 28) 主按键（原 calc(var(--rpx) * 24)，太小点不准） */
.qz-score { font-size: calc(var(--rpx) * 24); color: #b7a678; }
[data-route="pkgMoling/pages/game/game"] .qz-close { padding: calc(var(--rpx) * 16) calc(var(--rpx) * 40); border-radius: calc(var(--rpx) * 999); font-size: calc(var(--rpx) * 28); color: #241b08; font-weight: 700; background: linear-gradient(180deg, #f2dfa4, #d9b64a); border: calc(var(--rpx) * 1) solid rgba(233,201,110,.9); }
[data-route="pkgMoling/pages/game/game"] /* v4.86.4：整句对错反馈 T2 calc(var(--rpx) * 28)（原 calc(var(--rpx) * 24)）—— 这是孩子答完第一眼要读的一句 */
.qz-line { display: block; margin-top: calc(var(--rpx) * 16); font-size: calc(var(--rpx) * 28); line-height: 1.45; flex-shrink: 0; }
[data-route="pkgMoling/pages/game/game"] .qz-line.ok { color: #9cc48a; }
[data-route="pkgMoling/pages/game/game"] .qz-line.bad { color: #e08a7a; }
[data-route="pkgMoling/pages/game/game"] /* ================= 作业提交（v4.41.0 脚本第三章）================= */
/* v4.69.10：与答题卡同一处缺口，一并留出 iPhone 安全区（同屏相邻的两张卡）*/
.hw-mask { position: absolute; inset: 0; z-index: 53; background: rgba(8,8,10,.48);
  box-sizing: border-box;
  padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
  display: flex; align-items: center; justify-content: center; }
[data-route="pkgMoling/pages/game/game"] .hw-card { width: 88vw; max-width: calc(var(--rpx) * 660); max-height: 82vh; border-radius: calc(var(--rpx) * 20); padding: calc(var(--rpx) * 22) calc(var(--rpx) * 22) calc(var(--rpx) * 16);
  display: flex; flex-direction: column; overflow: hidden;   /* v4.69.19：内容再长也绝不画出卡外 */
  background: rgba(22,26,22,.74);
  border: calc(var(--rpx) * 2) solid rgba(201,169,89,.52);
  box-shadow: 0 calc(var(--rpx) * 14) calc(var(--rpx) * 46) rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.07); }
[data-route="pkgMoling/pages/game/game"] .hw-hd { display: flex; flex-direction: column; }
[data-route="pkgMoling/pages/game/game"] .hw-title { font-size: calc(var(--rpx) * 32); font-weight: 700; color: #f6efe0; letter-spacing: calc(var(--rpx) * 3); }
[data-route="pkgMoling/pages/game/game"] .hw-work { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 19); color: #b7a678; }
[data-route="pkgMoling/pages/game/game"] .hw-prog { margin-top: calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 26); color: #9cc48a; font-weight: 600; }
[data-route="pkgMoling/pages/game/game"] .hw-lock { margin-top: calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 19); line-height: 1.45; color: #d8a06a; }
[data-route="pkgMoling/pages/game/game"] .hw-btns { margin-top: calc(var(--rpx) * 14); display: flex; gap: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] /* v4.69.12（木哥）：作业卡只留一键 —— 未满 3 次是「拍照交作业」，
   交满了就地变「进入下一境」（＝原来的关闭效果）；独立的「关闭」键撤销。 */
.hw-main { flex: 1; text-align: center; padding: calc(var(--rpx) * 18) 0; border-radius: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 26); color: #241b08; font-weight: 700; letter-spacing: calc(var(--rpx) * 4);
  background: linear-gradient(180deg, #f2dfa4, #d9b64a); }
[data-route="pkgMoling/pages/game/game"] .hw-main:active { background: #c9a445; }
[data-route="pkgMoling/pages/game/game"] /* v4.69.19（木哥：所有按键统一金色色调）——「进入下一境」不再用绿，
   与「拍照交作业」同款金。 */
.hw-main.go { color: #241b08; background: linear-gradient(180deg, #f2dfa4, #d9b64a); }
[data-route="pkgMoling/pages/game/game"] .hw-main.go:active { background: #c9a445; }
[data-route="pkgMoling/pages/game/game"] /* v4.69.19：max-height 在真机 scroll-view 上封不住 → 记录整段溢出卡外。
   高度改由 JS 按条数精算（hw.recsH inline 定高，每条 calc(var(--rpx) * 96)，最多露 4 条，其余滚）。 */
.hw-recs { margin-top: calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/game/game"] .hw-rec { display: flex; align-items: flex-start; padding: calc(var(--rpx) * 14) calc(var(--rpx) * 8);
  border-bottom: calc(var(--rpx) * 1) solid rgba(42,36,23,.12); }
[data-route="pkgMoling/pages/game/game"] .hw-s { width: calc(var(--rpx) * 110); flex-shrink: 0; white-space: nowrap;   /* v4.86.8（木哥）：标签不许折成两行 */
  font-size: calc(var(--rpx) * 26); color: #d8bb70; font-weight: 700; overflow: hidden; text-overflow: ellipsis; }
[data-route="pkgMoling/pages/game/game"] .hw-rbody { flex: 1; display: flex; flex-direction: column; }
[data-route="pkgMoling/pages/game/game"] .hw-line { font-size: calc(var(--rpx) * 26); color: #cfc6ac; line-height: 1.45; }
[data-route="pkgMoling/pages/game/game"] .hw-when { margin-top: calc(var(--rpx) * 4); font-size: calc(var(--rpx) * 19); color: #a89f88; }
[data-route="pkgMoling/pages/game/game"] .hw-empty { display: block; padding: calc(var(--rpx) * 24) calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 19); color: #a89f88; line-height: 1.6; }
[data-route="pkgMoling/pages/game/game"] /* v4.86.105（A 组「功课即敲门」）：作业卡里交作业成功后的一行入口。
   竖屏写 calc(var(--rpx) * 26) = 弹层三级（.hw-card 带 scale(.60) ⇒ 横屏等效 ≈calc(var(--rpx) * 16)，与 .hw-prog 同档）。 */
.hw-kefu { margin-top: calc(var(--rpx) * 14); padding: calc(var(--rpx) * 12) 0; text-align: center; font-size: calc(var(--rpx) * 26); color: #9cc48a; }
[data-route="pkgMoling/pages/game/game"] .rs-lock { display: block; margin-top: calc(var(--rpx) * 12); font-size: calc(var(--rpx) * 19); line-height: 1.45; color: #f0c986; }
[data-route="pkgMoling/pages/game/game"] .hw-btn { font-size: calc(var(--rpx) * 19); letter-spacing: calc(var(--rpx) * 1); }
[data-route="pkgMoling/pages/game/game"] /* L1 一级按键（v4.59.4 阶梯归位） */

/* v4.47.0（任务 44）榜单 · 对战 面板 */
.bd-row { padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24); }
[data-route="pkgMoling/pages/game/game"] .bd-note { display: block; padding: calc(var(--rpx) * 16) calc(var(--rpx) * 26); font-size: calc(var(--rpx) * 24);
  color: rgba(200,190,165,.72); letter-spacing: calc(var(--rpx) * 1); }
[data-route="pkgMoling/pages/game/game"] .bd-me { color: #ffe9ad; }
[data-route="pkgMoling/pages/game/game"] /* v4.86.93（木哥）：网络要求提醒 —— 不弹窗、不遮画面，就贴在「十境长卷」下面一行小字。 */
.map-net {
  display: block;
  flex-shrink: 0;
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 30) calc(calc(var(--rpx) * 24) + env(safe-area-inset-bottom));
  font-size: calc(var(--rpx) * 22);
  line-height: 1.5;
  letter-spacing: calc(var(--rpx) * 1);
  color: rgba(200, 190, 165, 0.62);
}
[data-route="pkgMoling/pages/game/game"] /* ======= v4.56.0 · 横屏适配（启程后强制横屏）
   rpx 的基数是「屏幕宽度」：横屏后 calc(var(--rpx) * 1) 的物理像素比竖屏大一倍多，
   顶部状态条、战斗按钮、对话框都会「膨胀」一节。这里在横屏下把三块
   HUD 按 top/bottom 锚点整体缩小，视觉尺寸回到竖屏手感，
   画面本体（canvas）不缩放，视野反而更宽。 ======= */
.stage.land .hud { transform: scale(.70); transform-origin: top left; }
[data-route="pkgMoling/pages/game/game"] /* v4.59.5：木哥「文字小了」，整行同比例放大（.62→.70） */
.stage.land .hud-scrim { width: 143%; }
[data-route="pkgMoling/pages/game/game"] /* 锚点改左上后，渐隐垫布同倍加宽，铺满全宽不留接缝 */
.stage.land .bh-top { transform: scale(.64); transform-origin: top center; }
[data-route="pkgMoling/pages/game/game"] .stage.land .dialog { padding-bottom: 4vh; }
[data-route="pkgMoling/pages/game/game"] .stage.land .nr-top { top: calc(var(--rpx) * 104); }
[data-route="pkgMoling/pages/game/game"] /* 弹层（对白 / 结算 / 答题 / 作业）：横屏 rpx 膨胀一倍多，卡片整体收回竖屏手感 */
.stage.land .dg-inner { transform: scale(.62); transform-origin: center bottom; }
[data-route="pkgMoling/pages/game/game"] .stage.land .rs-inner { transform: scale(.62); transform-origin: center center; }
[data-route="pkgMoling/pages/game/game"] .stage.land .hw-card { transform: scale(.6); transform-origin: center center; }
[data-route="pkgMoling/pages/game/game"] .stage.land .dialog, [data-route="pkgMoling/pages/game/game"] .stage.land .result, [data-route="pkgMoling/pages/game/game"] .stage.land .qz-mask, [data-route="pkgMoling/pages/game/game"] .stage.land .hw-mask { overflow: hidden; }
[data-route="pkgMoling/pages/game/game"] /* v4.56.4（木哥截图实锤）：整页 scale(.52) 是 v4.56.0「启动页还是竖版设计」时代的
   居中兜底，v4.56.3 启动页已重设计为真横屏构图后它没删——整页被缩成 52% 的
   居中小卡浮在黑底上，题名/提示/按钮全挤在一起。整页缩放已删除，
   横屏启动页按 v4.56.3 构图原尺寸铺满全屏。 */


/* ============================================================
 * v4.56.3 · 横屏专章（木哥：①横屏版启动页重设计 ②进游戏后适配深查）
 * 素材不增不减：视频/poster、金箔标题、墨夜底、启程金圈、胶囊按钮、进度条
 * 全部沿用原文件，只把版式改写成横屏构图。
 * ============================================================ */

/* ---------- ② 选境 / 榜单 / 藏器阁：横屏改两列，用满宽度不再长条滚动 ---------- */
.stage.land .map-head { padding: calc(var(--rpx) * 8) calc(var(--rpx) * 214) calc(var(--rpx) * 8) calc(var(--rpx) * 26); }
[data-route="pkgMoling/pages/game/game"] /* 右侧留出微信胶囊位，返回不被压 */
.stage.land .mh-title { font-size: calc(var(--rpx) * 30); letter-spacing: calc(var(--rpx) * 6); }
[data-route="pkgMoling/pages/game/game"] .stage.land .btn.back { padding: calc(var(--rpx) * 6) calc(var(--rpx) * 20); font-size: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] /* L1 */
/* v4.57.2（木哥定稿）：藏器阁回到分页——猫装/武器/招式/十境四页，
   三页照旧只换服务器高清图，另把十境境图补上；点任意一项弹动态高清大图 */
.stage.land .arm-tabs { padding: 0 calc(var(--rpx) * 22) calc(var(--rpx) * 8); gap: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] .stage.land .arm-tab { padding: calc(var(--rpx) * 8) calc(var(--rpx) * 22); font-size: calc(var(--rpx) * 16); letter-spacing: calc(var(--rpx) * 2); }
[data-route="pkgMoling/pages/game/game"] /* L1 ＝首页按键 */
.stage.land .map-list {
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 22) calc(calc(var(--rpx) * 14) + env(safe-area-inset-bottom)); box-sizing: border-box;
}
[data-route="pkgMoling/pages/game/game"] /* 两列网格放在 arm-grid（scroll-view 内建层是块级，flex 加在它上面不生效） */
.stage.land .rc-tag { font-size: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] /* L3 角标 */
.stage.land .bd-note { font-size: calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/game/game"] /* L2 榜单说明 */
.stage.land .arm-grid { display: flex; flex-wrap: wrap; gap: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] .stage.land .realm-card { width: calc(50% - calc(var(--rpx) * 10)); margin-bottom: 0; }
[data-route="pkgMoling/pages/game/game"] /* 留 calc(var(--rpx) * 4) 余量防取整折列 */
.stage.land .rc-img { width: calc(var(--rpx) * 176); height: calc(var(--rpx) * 100); }
[data-route="pkgMoling/pages/game/game"] .stage.land .arm-img { width: calc(var(--rpx) * 132); height: calc(var(--rpx) * 92); padding: calc(var(--rpx) * 6);
  background: #ece2cc; border-radius: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] .stage.land .arm-strip { width: calc(var(--rpx) * 176); height: calc(var(--rpx) * 60); }
[data-route="pkgMoling/pages/game/game"] /* 深色墨稿压深底看不清——垫宣纸色小底衬出笔触（包内/高清通用） */
.stage.land .rc-body { padding: calc(var(--rpx) * 8) calc(var(--rpx) * 12); min-width: 0; }
[data-route="pkgMoling/pages/game/game"] /* 藏器阁卡片文字单行省略（真机宽屏下不折行挤成团） */
.stage.land .arm-card .rc-name { font-size: calc(var(--rpx) * 12); letter-spacing: calc(var(--rpx) * 1);   /* L2 */
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
[data-route="pkgMoling/pages/game/game"] .stage.land .arm-card .rc-sub { font-size: calc(var(--rpx) * 12); margin-top: calc(var(--rpx) * 2);          /* L2 */
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
[data-route="pkgMoling/pages/game/game"] .stage.land .arm-card .rc-course { font-size: calc(var(--rpx) * 12); margin-top: calc(var(--rpx) * 2);       /* L2 */
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
[data-route="pkgMoling/pages/game/game"] .stage.land .arm-card .rc-img { width: calc(var(--rpx) * 150); height: calc(var(--rpx) * 86); border-radius: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] /* ---- v4.59.2（木哥）：藏器阁改弹出框 ----
   面板 84vh 高、顶边在 8vh，已避开微信胶囊（录屏实测胶囊底 ≈5.6vh），
   面板头部不必再预留整页那种胶囊位（calc(var(--rpx) * 214) 只适用于全屏页头） */
.stage.land .arm-modal { padding: 2vh 2vw; }
[data-route="pkgMoling/pages/game/game"] .stage.land .arm-panel { width: 80vw; height: 84vh; border-radius: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] .stage.land .arm-panel .map-head { padding: calc(var(--rpx) * 8) calc(var(--rpx) * 14) calc(var(--rpx) * 4) calc(var(--rpx) * 20); }
[data-route="pkgMoling/pages/game/game"] .stage.land .arm-scroll { padding: calc(var(--rpx) * 4) calc(var(--rpx) * 18) calc(calc(var(--rpx) * 12) + env(safe-area-inset-bottom)); }
[data-route="pkgMoling/pages/game/game"] /* ---- 点条目 → 动态高清大图浮层 ---- */
.stage.land .arm-zoom { position: absolute; inset: 0; z-index: 60; background: rgba(8,8,10,.62);
  display: flex; align-items: center; justify-content: center; }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-card { width: 58vw; max-height: 75vh; box-sizing: border-box;
  border-radius: calc(var(--rpx) * 16); border: calc(var(--rpx) * 1) solid rgba(201,169,89,.52); background: rgba(22,26,22,.74);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 14); display: flex; flex-direction: column; }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-head { display: flex; align-items: center; gap: calc(var(--rpx) * 10); margin-bottom: calc(var(--rpx) * 6); }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-name { font-size: calc(var(--rpx) * 16);   /* L1 */ color: #ffe9ad; letter-spacing: calc(var(--rpx) * 3); flex: 1; }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-kind { font-size: calc(var(--rpx) * 12);   /* L2 */ color: rgba(216,203,164,.55); letter-spacing: calc(var(--rpx) * 2);
  border: calc(var(--rpx) * 1) solid rgba(216,203,164,.35); border-radius: calc(var(--rpx) * 999); padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-close { font-size: calc(var(--rpx) * 16);   /* L1 按键 */ color: #d8cba4; border: calc(var(--rpx) * 1) solid rgba(216,203,164,.5);
  border-radius: calc(var(--rpx) * 999); padding: calc(var(--rpx) * 5) calc(var(--rpx) * 18); }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-stage { display: flex; flex-direction: column; align-items: center; gap: calc(var(--rpx) * 8); }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-catrow { display: flex; align-items: center; gap: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] /* 猫装：真动画（服务器高清帧 8 张步进连播，复用启动页 catK 关键帧）+ 该阶高清立绘 */
.stage.land .az-cat { position: relative; width: 34vh; height: 34vh; }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-catf { position: absolute; left: 0; top: 0; width: 100%; height: 100%;
  opacity: 0; animation-duration: 1.6s; animation-timing-function: steps(1, end);
  animation-iteration-count: infinite; }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-still { width: 26vh; height: 26vh; }
[data-route="pkgMoling/pages/game/game"] /* 武器三视图 / 招式三帧：3:1 横条，宣纸底衬墨稿 */
.stage.land .az-strip { width: 44vh; height: 15vh; background: #ece2cc; border-radius: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] /* 招式真动态：三张同图叠放，透明度步进轮播（0.5s 一帧） */
.stage.land .az-fx { position: relative; width: 44vh; height: 15vh;
  background: #ece2cc; border-radius: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-fxf { position: absolute; left: 0; top: 0; width: 100%; height: 100%;
  opacity: 0; animation-duration: 1.5s; animation-timing-function: steps(1, end);
  animation-iteration-count: infinite; }

@keyframes azF0 { 0% { opacity: 1 } 33% { opacity: 0 } 100% { opacity: 0 } }

@keyframes azF1 { 0% { opacity: 0 } 33% { opacity: 1 } 66% { opacity: 0 } 100% { opacity: 0 } }

@keyframes azF2 { 0% { opacity: 0 } 66% { opacity: 1 } 100% { opacity: 0 } }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-scene { width: 52vh; height: 30vh; border-radius: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-label { font-size: calc(var(--rpx) * 12);   /* L2 */ color: #d8cba4; letter-spacing: calc(var(--rpx) * 1); }
[data-route="pkgMoling/pages/game/game"] .stage.land .az-note { display: block; margin-top: calc(var(--rpx) * 4); font-size: calc(var(--rpx) * 12);   /* L2 */ color: rgba(216,203,164,.55); }
[data-route="pkgMoling/pages/game/game"] .stage.land .rc-body { padding: calc(var(--rpx) * 8) calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/game/game"] .stage.land .rc-name { font-size: calc(var(--rpx) * 12); letter-spacing: calc(var(--rpx) * 2); }
[data-route="pkgMoling/pages/game/game"] /* L2 */
.stage.land .rc-sub { font-size: calc(var(--rpx) * 10); margin-top: calc(var(--rpx) * 2); }
[data-route="pkgMoling/pages/game/game"] /* L3 */
.stage.land .rc-course { font-size: calc(var(--rpx) * 10); margin-top: calc(var(--rpx) * 2); }
[data-route="pkgMoling/pages/game/game"] /* L3 */

/* ---------- ③ 知识题 / 作业：横屏封顶 + 内部滚动（v4.59.9：八式面板行撤销）---------- */
/* v4.57.0（木哥二图）：文字缩小一倍，弹窗大小跟着文字走（宽度由内容收） */
/* ★★ v4.86.5（木哥「不美观、不协调 → 按你推荐的」）：横屏改「宽卡 + 四宫格」★★
   诊断（改造前实测）：
     ① 卡 388×343 近正方形，压在 2.16:1 的横屏上完全没横向展开；
     ② 竖排 4 项在 88vh 里放不下 —— 只显示 3 项、第 4 项要滑，答题卡看不全选项；
     ③ 每个选项条 356px 宽却只放「五笔」两字，右侧空 60%。
     三处合起来就是「不协调」。
   解法（用满横屏宽度）：卡 66vw（557px）× 高 ≈300px；选项改 2×2 宫格，4 项一眼看全、
   无空档；题干居中、选项文字居中，视觉重心回到卡片中轴。
   高度账（横屏 calc(var(--rpx) * 1) = 1.12533px）：
     纸边 33 + 题头 26 + 题干 54 + 宫格 102 + 页脚 52 ≈ calc(var(--rpx) * 267) ≈ 300px
     ≤ 88vh（343px）⇒ 上下各留约 6%；题干长时宫格可缩（flex: 0 1 auto）由内部滚。
   ★ 宫格为什么用 flex-wrap 而不是 grid：真机 scroll-view 里 flex gap 不吃（本项目
     一贯用「相邻 margin」，见 v4.69.16），grid 在 scroll-view 内的行为未在真机验证过，
     不拿木哥的体验做试验。两列靠 calc(50% - calc(var(--rpx) * 3)) + space-between 撑开，不依赖 gap。
   ★ 竖屏保持原单列设计不动（游戏锁横屏，竖屏是兜底路径，已有 100+ 项回归锁）。
   字号不变，全部落五档且 ≥calc(var(--rpx) * 20)。 */
/* ★★ v4.86.6（木哥「还是太大，不紧凑」）：横屏题卡整体收紧 ★★
   改造前实测：卡 557×303，占屏宽 66% / 屏高 78% —— 内容稀、卡片虚胖。
   收紧后实测（playwright）：卡 472×252，占屏宽 56% / 屏高 65%，
   左右各留 186px、上下各留 69px —— 四周空气感翻倍，卡片明显「小一号」。
   手段：全线收内距与行距（padding 18/22/15→11/16/9、题干 margin 20→11、
   选项行高 48→44、宫格 102→calc(var(--rpx) * 88)、页脚 margin 12→7），字号一格未动
   （20/calc(var(--rpx) * 24) 是全站下限，不能再小）。
   ★ 副产物：高度压下来后横屏也能守回微信 WeUI 75vh 口径（calc(var(--rpx) * 224) ≤ calc(var(--rpx) * 260)），
     v4.86.5 的「横屏 88vh 偏离」取消 —— 全游戏弹层统一 75vh，无例外。 */
.stage.land .qz-card { width: 48vw; max-width: none; max-height: 75vh;
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 15) calc(var(--rpx) * 8); border-radius: calc(var(--rpx) * 15); }
[data-route="pkgMoling/pages/game/game"] /* 横屏回到微信 75vh 口径（v4.86.5 的 88vh 偏离取消）：紧凑版整卡 ≈calc(var(--rpx) * 224)，
   ≤ 75vh=calc(var(--rpx) * 260)，装得下且有富余。竖屏横屏口径一致。 */
.stage.land .qz-label { font-size: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] .stage.land .qz-idx { font-size: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] /* 题干居中：宽卡上左对齐会显得偏，居中后重心落在卡片中轴 */
.stage.land .qz-q { font-size: calc(var(--rpx) * 20); line-height: 1.4; margin: calc(var(--rpx) * 4) 0 calc(var(--rpx) * 6); text-align: center; }
[data-route="pkgMoling/pages/game/game"] /* 宫格壳：2 行 × calc(var(--rpx) * 42) + calc(var(--rpx) * 4) 行距 = calc(var(--rpx) * 88)。
   flex: 0 1 auto —— 题卡下方出现「这题先记下」/对错反馈句时，卡片触到 75vh 上限，
   宫格自己收缩让位，页脚永不被顶出屏（v4.69.10 的老红线）。 */
.stage.land .qz-opts-wrap { height: calc(var(--rpx) * 72); flex: 0 1 auto; min-height: calc(var(--rpx) * 56); }
[data-route="pkgMoling/pages/game/game"] .stage.land .qz-opts { display: flex; flex-wrap: wrap; justify-content: space-between;
  align-content: space-between; }
[data-route="pkgMoling/pages/game/game"] /* 宫格间距走 space-between（真机 scroll-view 不吃 gap），相邻 margin 必须清掉 */
.stage.land .qz-opt + .qz-opt { margin-top: 0; }
[data-route="pkgMoling/pages/game/game"] /* 每格宽度 calc(50% - calc(var(--rpx) * 3))：两列合计留 calc(var(--rpx) * 6) 列距，由 space-between 撑开 */
.stage.land .qz-opt { width: calc(50% - calc(var(--rpx) * 3)); box-sizing: border-box;
  padding: calc(var(--rpx) * 5) calc(var(--rpx) * 12); border-radius: calc(var(--rpx) * 11); }
[data-route="pkgMoling/pages/game/game"] .stage.land .qz-mark { width: calc(var(--rpx) * 24); height: calc(var(--rpx) * 24); line-height: calc(var(--rpx) * 24); font-size: calc(var(--rpx) * 16); margin-right: calc(var(--rpx) * 8); }
[data-route="pkgMoling/pages/game/game"] /* 选项文字居中；右内边距 = 序号圈宽 + 间距（28+9），让文字在整格视觉居中 */
.stage.land .qz-txt { font-size: calc(var(--rpx) * 16); flex: 1 1 auto; text-align: center; padding-right: calc(var(--rpx) * 32); }
[data-route="pkgMoling/pages/game/game"] /* ★★ v4.86.8（木哥：不要出现 3 行选择，大于 2 行就用滑动）★★
   长选项（任一项 >5 字，判据在 main.js quizOneCol）整组转**单列**；
   可视区高度不变（仍是两行 calc(var(--rpx) * 72)），第 3 项起靠上下滑动看；
   底部 calc(var(--rpx) * 16) 墨色渐隐提示「下面还有」，滚到最后一项时渐隐压的是留白不是字。 */
.stage.land .qz-opts.one { display: block; }
[data-route="pkgMoling/pages/game/game"] .stage.land .qz-opts.one .qz-opt { width: 100%; }
[data-route="pkgMoling/pages/game/game"] .stage.land .qz-opts.one .qz-opt + .qz-opt { margin-top: calc(var(--rpx) * 4); }
[data-route="pkgMoling/pages/game/game"] .stage.land .qz-opts-wrap.more::after { content: ''; position: absolute; left: calc(var(--rpx) * 8); right: calc(var(--rpx) * 8); bottom: 0;
  height: calc(var(--rpx) * 16); border-radius: 0 0 calc(var(--rpx) * 11) calc(var(--rpx) * 11); pointer-events: none;
  background: linear-gradient(180deg, rgba(22,26,22,0), rgba(22,26,22,.85)); }
[data-route="pkgMoling/pages/game/game"] .stage.land .qz-tip { font-size: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] .stage.land .qz-ft { margin-top: calc(var(--rpx) * 7); }
[data-route="pkgMoling/pages/game/game"] .stage.land .qz-score { font-size: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] .stage.land .qz-close { padding: calc(var(--rpx) * 4) calc(var(--rpx) * 18); font-size: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] .stage.land .qz-line { font-size: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] .stage.land .hw-card { max-height: 93vh; }
[data-route="pkgMoling/pages/game/game"] .stage.land .hw-rec { padding: calc(var(--rpx) * 10) 0; }
[data-route="pkgMoling/pages/game/game"] /* ---------- ④ 结算 / 对白 / 转场 / 独白 / 提示：横屏位置重排 ---------- */
.stage.land .dialog { padding-bottom: 3vh; }
[data-route="pkgMoling/pages/game/game"] .stage.land .rs-inner { padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24); width: 70%; }
[data-route="pkgMoling/pages/game/game"] /* v4.59.8 加宽；v4.69.12 收紧留白 */
/* v4.86.8（木哥：第三境三字太小、墨影初现四个字太大）—— 一升一降归到一处：
   章节名 12→calc(var(--rpx) * 16)（L1，与按键同号），境名 46→calc(var(--rpx) * 24)（不再压过正文两级）。 */
.stage.land .tr-chapter { font-size: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] .stage.land .tr-inner { max-width: 72vw; padding: 0 calc(var(--rpx) * 30); }
[data-route="pkgMoling/pages/game/game"] .stage.land .tr-name { font-size: calc(var(--rpx) * 24); letter-spacing: calc(var(--rpx) * 6); margin: calc(var(--rpx) * 10) 0; }
[data-route="pkgMoling/pages/game/game"] .stage.land .tr-text { font-size: calc(var(--rpx) * 16); line-height: 1.6; }
[data-route="pkgMoling/pages/game/game"] .stage.land .nr-tag { font-size: calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/game/game"] .stage.land .nr-inner { width: 68%; padding: calc(var(--rpx) * 14) calc(var(--rpx) * 22) calc(var(--rpx) * 10) calc(var(--rpx) * 20); }
[data-route="pkgMoling/pages/game/game"] .stage.land .nr-text { font-size: calc(var(--rpx) * 16); line-height: 1.6; }
[data-route="pkgMoling/pages/game/game"] .stage.land .nr-hint { font-size: calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/game/game"] .stage.land .hint { font-size: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/game/game"] /* v4.59.6：屏幕提示文字与灵力同号 */
.stage.land .hint.hint-b { bottom: 20%; }
[data-route="pkgMoling/pages/game/game"] /* v4.59.9：八式入口气泡撤销 */

/* ---------- ⑤ 终章：横屏整卷收短，印章缩小，文字收紧 ---------- */
.stage.land .ed-scroll { width: 56%; height: 36vh; border-top-width: calc(var(--rpx) * 10); border-bottom-width: calc(var(--rpx) * 10); }
[data-route="pkgMoling/pages/game/game"] .stage.land .ed-img { width: 50%; }
[data-route="pkgMoling/pages/game/game"] .stage.land .ed-seal { margin-top: -8vh; font-size: calc(var(--rpx) * 118); }
[data-route="pkgMoling/pages/game/game"] .stage.land .ed-text { margin-top: calc(var(--rpx) * 8); padding: 0 calc(var(--rpx) * 30); }
[data-route="pkgMoling/pages/game/game"] .stage.land .ed-small { font-size: calc(var(--rpx) * 12); letter-spacing: calc(var(--rpx) * 8); }
[data-route="pkgMoling/pages/game/game"] .stage.land .ed-body { font-size: calc(var(--rpx) * 16); line-height: 1.6; margin-top: calc(var(--rpx) * 8); }
[data-route="pkgMoling/pages/game/game"] .stage.land .ed-btns { margin-top: calc(var(--rpx) * 16); gap: calc(var(--rpx) * 14); }
[data-route="pkgMoling/pages/game/game"] /* ---------- ⑥ 旧包提醒横幅 ---------- */
.stage.land .stale-warn { font-size: calc(var(--rpx) * 20); padding: calc(var(--rpx) * 12) 0; }
[data-route="pkgMoling/pages/game/game"] /* ---------- ⑦ 和猫聊（结算 / 终章）：把游戏里这只猫叫出来 ---------- */
.btn.chat { border-color: rgba(201,169,89,.3); color: #cdbf9c; }
[data-route="pkgMoling/pages/game/game"] /* v4.67 斗妖：比「和猫聊」再暗一档——那团墨本来就没干透 */
.btn.mob { border-color: rgba(140,128,108,.34); color: #a99c85; }
[data-route="pkgMoling/pages/game/game"] .ed-btns .btn.chat { padding: calc(var(--rpx) * 14) calc(var(--rpx) * 26); }
[data-route="pkgMoling/pages/game/game"] .stage.land .ed-btns .btn.chat { padding: calc(var(--rpx) * 10) calc(var(--rpx) * 22); font-size: calc(var(--rpx) * 16); letter-spacing: calc(var(--rpx) * 4); }
[data-route="pkgMoling/pages/game/game"] /* ============================================================
 * v4.69.0 · 苹果（iOS）适配专章（原 v4.59.24 分支线，木哥：做一下苹果版手机的适配）
 * ------------------------------------------------------------
 * ① 交互观感 —— iOS 的 WKWebView 会给可点元素加一层半透明灰底（tap
 *    highlight）、长按会弹文本选择 / 放大镜，还会把一次点击当「双击缩放」
 *    判定而迟到 300ms。打斗时连点按键，看着就像「按键花屏」。游戏页全是
 *    点按控件，一律关掉；字照旧清晰，只是不再被系统菜单抢走。
 * ② 异形屏安全区 —— iPhone 横屏时刘海 / 灵动岛在**侧边**（竖屏在顶部），
 *    Home 条贴底边，屏幕四角还是圆的。此前全项目只让了 top / bottom，
 *    safe-area-inset-left / right 一次都没让过：贴左 / 贴右的常驻元素在
 *    iPhone 上会被刘海与圆角吃掉。本章按「谁真的贴边才让谁」逐个补。
 * ③ iOS 惯性滚动 —— 三个长列表滚动容器补 -webkit-overflow-scrolling。
 * 说明：env() 在没有刘海 / 圆角的机器（安卓、iPad、旧 iPhone）恒为 0，
 *       对它们零影响 —— 本章不需要任何平台判断，安卓机完全不变样。
 * ============================================================ */

/* ---- ⓪ 交互观感：去点击灰底 / 禁长按选择与放大镜 / 图片不许拖走 ---- */
page { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
[data-route="pkgMoling/pages/game/game"] .stage, [data-route="pkgMoling/pages/game/game"] .stage view, [data-route="pkgMoling/pages/game/game"] .stage text, [data-route="pkgMoling/pages/game/game"] .stage image, [data-route="pkgMoling/pages/game/game"] .stage canvas {
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  user-select: none;
  touch-action: manipulation;   /* 关掉 iOS 的「双击缩放」判定，点击不再迟 300ms */
}
[data-route="pkgMoling/pages/game/game"] .stage { overscroll-behavior: none; }
[data-route="pkgMoling/pages/game/game"] .stage image { -webkit-user-drag: none; }
[data-route="pkgMoling/pages/game/game"] /* ---- ① 行走 HUD（左上角一行）----
   竖屏：让位写在 .hud-bar 自身的左右 padding 上即可。
   横屏：.hud 被 scale(.70) 且 transform-origin 是 top left —— 让位若写在
        .hud-bar 的 padding 上会被 0.70 折损（59px 的刘海只让开 41px，仍被
        吃掉），所以横屏把让位写在 .hud 这一层（先定位、后缩放，不被折损），
        同时把 .hud-bar 复位成基础值，避免双重补偿把整行推向屏幕中间。 */
.hud-bar {
  padding-left: calc(calc(var(--rpx) * 28) + env(safe-area-inset-left));
  padding-right: calc(calc(var(--rpx) * 28) + env(safe-area-inset-right));
}
[data-route="pkgMoling/pages/game/game"] .stage.land .hud { left: env(safe-area-inset-left); }
[data-route="pkgMoling/pages/game/game"] .stage.land .hud-bar { padding-left: calc(var(--rpx) * 28); padding-right: calc(var(--rpx) * 28); }
[data-route="pkgMoling/pages/game/game"] /* v4.85.0（B-1d）：横屏里任务清单同样贴左基线 */
.stage.land .hud-tasks { padding-left: calc(var(--rpx) * 28); padding-right: calc(var(--rpx) * 28); }
[data-route="pkgMoling/pages/game/game"] /* 垫底渐隐是 .hud 的子节点，跟着 .hud 左移了 —— 左端补回来，铺满全宽不漏缝 */
.stage.land .hud-scrim { left: calc(calc(var(--rpx) * 0) - env(safe-area-inset-left)); }
[data-route="pkgMoling/pages/game/game"] /* ---- ② 行军罗盘（左下角，横竖屏都贴边最紧，正落在圆角上）---- */
.compass { left: calc(calc(var(--rpx) * 10) + env(safe-area-inset-left)); }
[data-route="pkgMoling/pages/game/game"] .stage.land .compass { left: calc(1.4vh + env(safe-area-inset-left)); }
[data-route="pkgMoling/pages/game/game"] /* ---- ③ 进入页：左基线（题名 / 取画卷进度）与右上版本号 ---- */
.entry-top { left: calc(5vw + env(safe-area-inset-left)); }
[data-route="pkgMoling/pages/game/game"] .dl-wrap { left: calc(5vw + env(safe-area-inset-left)); }
[data-route="pkgMoling/pages/game/game"] .entry-build { right: calc(calc(var(--rpx) * 20) + env(safe-area-inset-right)); }
[data-route="pkgMoling/pages/game/game"] /* ---- ④ 选境 / 榜单：页头与列表（返回键贴左上，卡片贴两侧，正对刘海带）----
   横屏页头右侧那 calc(var(--rpx) * 214) 是给微信胶囊留的，再叠一个右安全区更稳；
   藏器阁弹窗的面板离边已 ≥2vw、优先规则更高，不受这里影响。 */
.map-head {
  padding-left: calc(calc(var(--rpx) * 30) + env(safe-area-inset-left));
  padding-right: calc(calc(var(--rpx) * 30) + env(safe-area-inset-right));
}
[data-route="pkgMoling/pages/game/game"] .map-list {
  padding-left: calc(calc(var(--rpx) * 24) + env(safe-area-inset-left));
  padding-right: calc(calc(var(--rpx) * 24) + env(safe-area-inset-right));
}
[data-route="pkgMoling/pages/game/game"] .stage.land .map-head {
  padding-left: calc(calc(var(--rpx) * 26) + env(safe-area-inset-left));
  padding-right: calc(calc(var(--rpx) * 214) + env(safe-area-inset-right));
}
[data-route="pkgMoling/pages/game/game"] .stage.land .map-list {
  padding-left: calc(calc(var(--rpx) * 22) + env(safe-area-inset-left));
  padding-right: calc(calc(var(--rpx) * 22) + env(safe-area-inset-right));
}
[data-route="pkgMoling/pages/game/game"] /* v4.86.89：网络要求提醒在横屏下躲开左右安全区（和长卷对齐） */
.stage.land .map-net {
  padding-left: calc(calc(var(--rpx) * 22) + env(safe-area-inset-left));
  padding-right: calc(calc(var(--rpx) * 22) + env(safe-area-inset-right));
}
[data-route="pkgMoling/pages/game/game"] /* ---- ⑤ 旧包提醒横幅（全宽，横屏那份把左右 padding 写成 0 了，文字贴边）---- */
.stale-warn {
  padding-left: calc(calc(var(--rpx) * 32) + env(safe-area-inset-left));
  padding-right: calc(calc(var(--rpx) * 32) + env(safe-area-inset-right));
}
[data-route="pkgMoling/pages/game/game"] .stage.land .stale-warn {
  padding-left: calc(calc(var(--rpx) * 12) + env(safe-area-inset-left));
  padding-right: calc(calc(var(--rpx) * 12) + env(safe-area-inset-right));
}
[data-route="pkgMoling/pages/game/game"] /* ---- ⑥ 终章 · 收卷（画卷横条宽 92%，横屏正好伸进灵动岛那一段）---- */
.ending {
  padding-left: env(safe-area-inset-left);
  padding-right: env(safe-area-inset-right);
}
[data-route="pkgMoling/pages/game/game"] /* ---- ⑦ iOS 惯性滚动：三个长列表滚动容器给回原生动量（安卓 WebView 不认，自动跳过）---- */
.map-list, [data-route="pkgMoling/pages/game/game"] .arm-scroll, [data-route="pkgMoling/pages/game/game"] .hw-recs { -webkit-overflow-scrolling: touch; }
[data-route="pkgMoling/pages/game/game"] /* ============================================================
 * v4.74.8 · 退出游戏胶囊（周木：「游戏里面，每一页都加一个胶囊按键，退出游戏。
 *                              直接到小程序打卡页。」）
 * ------------------------------------------------------------
 * 这个页面 navigationStyle:custom —— 整页自绘，连原生导航栏都没有。玩到一半想
 * 回打卡页，此前只能靠微信自带的返回手势 / 右上那颗胶囊，孩子根本找不着。故在
 * 四块「外框」里各钉一颗同款金胶囊（形状/配色沿用 .mini-btn 与 .btn 的金调）：
 *   ① 进入页           .entry-top 顶部
 *   ② 选境 / 榜单 / 藏器阁  .map-head 内（margin-left:auto 顶到「返 回 / 关 闭」左侧）
 *   ③ 行走 HUD         .hud-right 末尾（挂 .mini-btn，跟着 HUD 的 scale(.70) 走）
 *   ④ 战斗 HUD         .bh-top 末尾（两条血条是 flex:1，让位自动收缩，不顶掉妖名）
 *
 * ★ 位置为什么不复用绝对定位：横屏下 .hud 被 scale(.70) 且 transform-origin 是
 *   top left（只占屏宽 70%），.map-head 又要给微信胶囊留 calc(var(--rpx) * 214)；无论写 top/right
 *   用绝对值还是 rpx，都会在小屏（iPhone 5/SE 横屏）撞上原生胶囊、在大屏飘走。
 *   贴着各自的流排布，任何屏宽都不会重叠，也不会挤压既有元素。
 * ★ 点击 → onExitGame → wx.switchTab('/pages/index/index')：打卡页是 tabBar 页，
 *   switchTab 会把整摞导航栈（含本分包页）一并收掉，比 navigateBack 干净。
 * ============================================================ */
.exit-chip {
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 22);
  border: calc(var(--rpx) * 1) solid rgba(232,197,106,.65);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(64,48,14,.72);
  color: #f4d98b;
  font-size: calc(var(--rpx) * 16);          /* L1 一级按键（＝「返 回」同号） */
  letter-spacing: calc(var(--rpx) * 2);
  white-space: nowrap;
  /* .hud / .battle-hud 两层外壳都是 pointer-events:none，不显式收回则点不动 */
  pointer-events: auto;
}
[data-route="pkgMoling/pages/game/game"] .exit-chip:active { background: rgba(217,182,74,.34); }
[data-route="pkgMoling/pages/game/game"] /* ② 页头那颗：把空档全吸到左边，自己紧贴「返 回 / 关 闭」 */
.map-head .exit-chip { margin-left: auto; margin-right: calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/game/game"] .stage.land .map-head .exit-chip { padding: calc(var(--rpx) * 6) calc(var(--rpx) * 20); }
[data-route="pkgMoling/pages/game/game"] /* 与横屏 .btn.back 同几何 */
/* ① 进入页那颗：题名图紧随其后，留一点呼吸 */
.entry-top .exit-chip { margin-bottom: calc(var(--rpx) * 18); letter-spacing: calc(var(--rpx) * 3); }



/* ---- pkgMoling/pages/gift/gift.wxss ---- */
[data-route="pkgMoling/pages/gift/gift"] .gift-wrap { padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28) calc(var(--rpx) * 60); background: #ededed; min-height: calc(var(--vh) * 100); }
[data-route="pkgMoling/pages/gift/gift"] .gift-head { padding: calc(var(--rpx) * 8) calc(var(--rpx) * 4) calc(var(--rpx) * 20); }
[data-route="pkgMoling/pages/gift/gift"] .gift-title { font-size: calc(var(--rpx) * 40); font-weight: 700; color: #191919; letter-spacing: calc(var(--rpx) * 4); }
[data-route="pkgMoling/pages/gift/gift"] .gift-sub { margin-top: calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 24); color: #888888; line-height: 1.6; }
[data-route="pkgMoling/pages/gift/gift"] .gift-stat { display: flex; margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 20); padding: calc(var(--rpx) * 22) 0; border-radius: calc(var(--rpx) * 18);
  background: linear-gradient(170deg, #ffffff, #f7f7f7); border: calc(var(--rpx) * 1) solid #e5e5e5; }
[data-route="pkgMoling/pages/gift/gift"] .gs-item { flex: 1; text-align: center; }
[data-route="pkgMoling/pages/gift/gift"] .gs-num { font-size: calc(var(--rpx) * 40); font-weight: 700; color: #07c160; }
[data-route="pkgMoling/pages/gift/gift"] .gs-label { margin-top: calc(var(--rpx) * 6); font-size: calc(var(--rpx) * 24); color: #888888; }
[data-route="pkgMoling/pages/gift/gift"] .gift-tip { margin: calc(var(--rpx) * 7) calc(var(--rpx) * 4) calc(var(--rpx) * 18); font-size: calc(var(--rpx) * 24); color: #888888; line-height: 1.7; }
[data-route="pkgMoling/pages/gift/gift"] .gift-list { border-radius: calc(var(--rpx) * 18); overflow: hidden; }
[data-route="pkgMoling/pages/gift/gift"] .gift-row { display: flex; align-items: center; padding: calc(var(--rpx) * 22) calc(var(--rpx) * 20); margin-bottom: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 18); background: #ffffff; border: calc(var(--rpx) * 1) solid #e5e5e5; }
[data-route="pkgMoling/pages/gift/gift"] .gift-row-dim { opacity: .62; background: #f7f7f7; border-style: dashed; }
[data-route="pkgMoling/pages/gift/gift"] .gr-icon { width: calc(var(--rpx) * 64); font-size: calc(var(--rpx) * 40); text-align: center; }
[data-route="pkgMoling/pages/gift/gift"] .gr-main { flex: 1; min-width: 0; padding: 0 calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/gift/gift"] .gr-top { display: flex; align-items: center; }
[data-route="pkgMoling/pages/gift/gift"] .gr-realm { font-size: calc(var(--rpx) * 24); color: #07c160; letter-spacing: calc(var(--rpx) * 2); }
[data-route="pkgMoling/pages/gift/gift"] .gr-set { margin-left: calc(var(--rpx) * 12); font-size: calc(var(--rpx) * 20); color: #888888; }
[data-route="pkgMoling/pages/gift/gift"] .gr-course { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 28); color: #191919; line-height: 1.5; }
[data-route="pkgMoling/pages/gift/gift"] .gr-state { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 24); color: #888888; }
[data-route="pkgMoling/pages/gift/gift"] .gr-state.got { color: #07c160; }
[data-route="pkgMoling/pages/gift/gift"] .gr-state.ok { color: #07c160; font-weight: 700; }
[data-route="pkgMoling/pages/gift/gift"] .gr-tier { font-size: calc(var(--rpx) * 24); color: #07c160; white-space: nowrap; }
[data-route="pkgMoling/pages/gift/gift"] /* v4.86.126（木哥）：右列＝价格 + 「找老师领取」按键（未开通的行都带）／「已开通」标签 */
.gr-right { display: flex; flex-direction: column; align-items: flex-end; gap: calc(var(--rpx) * 12); }
[data-route="pkgMoling/pages/gift/gift"] .gr-claim { padding: calc(var(--rpx) * 12) calc(var(--rpx) * 22); font-size: calc(var(--rpx) * 24); font-weight: 600; color: #ffffff;
  background: #07c160; border-radius: calc(var(--rpx) * 999); white-space: nowrap; }
[data-route="pkgMoling/pages/gift/gift"] .gr-claim:active { opacity: .85; }
[data-route="pkgMoling/pages/gift/gift"] .gr-open { padding: calc(var(--rpx) * 10) calc(var(--rpx) * 20); font-size: calc(var(--rpx) * 22); color: #07c160; font-weight: 600;
  background: #eafaf1; border: calc(var(--rpx) * 1) solid #cdeedb; border-radius: calc(var(--rpx) * 999); white-space: nowrap; }
[data-route="pkgMoling/pages/gift/gift"] /* 「找老师领取」弹层（主按钮＝一键找老师；下方＝企微码长按识别加好友） */
.ask-mask { position: fixed; left: 0; top: 0; right: 0; bottom: 0; z-index: 999;
  background: rgba(0, 0, 0, 0.55); display: flex; align-items: center; justify-content: center; }
[data-route="pkgMoling/pages/gift/gift"] .ask-box { width: 100%; max-width: calc(var(--rpx) * 580); padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(var(--rpx) * 24); background: #ffffff;
  border-radius: calc(var(--rpx) * 24); display: flex; flex-direction: column; align-items: center; }
[data-route="pkgMoling/pages/gift/gift"] .ask-title { font-size: calc(var(--rpx) * 32); font-weight: 600; color: #2b2b2b; }
[data-route="pkgMoling/pages/gift/gift"] .ask-course { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 26); color: #07c160; font-weight: 600;
  text-align: center; line-height: 1.5; }
[data-route="pkgMoling/pages/gift/gift"] .ask-note-first { margin-top: calc(var(--rpx) * 14); text-align: center; }
[data-route="pkgMoling/pages/gift/gift"] .ask-qr { width: calc(var(--rpx) * 340); height: calc(var(--rpx) * 340); margin: calc(var(--rpx) * 12) 0 calc(var(--rpx) * 10); background: #f6f6f6; }
[data-route="pkgMoling/pages/gift/gift"] .ask-tip { font-size: calc(var(--rpx) * 26); color: #e08a2e; font-weight: 500; }
[data-route="pkgMoling/pages/gift/gift"] .ask-note { margin-top: calc(var(--rpx) * 12); font-size: calc(var(--rpx) * 24); line-height: 1.6; color: #8a8a8a; }
[data-route="pkgMoling/pages/gift/gift"] .ask-or { margin-top: calc(var(--rpx) * 22); font-size: calc(var(--rpx) * 24); color: #9a9a9a; }
[data-route="pkgMoling/pages/gift/gift"] .ask-btn { margin-top: calc(var(--rpx) * 22); width: 100%; padding: calc(var(--rpx) * 22) 0; text-align: center;
  font-size: calc(var(--rpx) * 32); font-weight: 600; color: #ffffff; background: #07c160; border-radius: calc(var(--rpx) * 999); }
[data-route="pkgMoling/pages/gift/gift"] .ask-btn:active { opacity: .85; }
[data-route="pkgMoling/pages/gift/gift"] .ask-close { margin-top: calc(var(--rpx) * 18); padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20); font-size: calc(var(--rpx) * 28); color: #8a8a8a; }
[data-route="pkgMoling/pages/gift/gift"] .gift-tools { margin-top: calc(var(--rpx) * 26); padding: calc(var(--rpx) * 22) calc(var(--rpx) * 20); border-radius: calc(var(--rpx) * 18);
  background: #ffffff; border: calc(var(--rpx) * 1) solid #e5e5e5; }
[data-route="pkgMoling/pages/gift/gift"] .gt-head { display: flex; align-items: center; }
[data-route="pkgMoling/pages/gift/gift"] .gt-title { font-size: calc(var(--rpx) * 28); color: #191919; font-weight: 700; }
[data-route="pkgMoling/pages/gift/gift"] /* v4.86.127（木哥）：自动配发的标「自动配发」（捡到即进袋，不用找人领） */
.gt-auto { margin-left: calc(var(--rpx) * 12); padding: calc(var(--rpx) * 6) calc(var(--rpx) * 14); font-size: calc(var(--rpx) * 20); color: #07c160;
  background: #eafaf1; border: calc(var(--rpx) * 1) solid #cdeedb; border-radius: calc(var(--rpx) * 999); }
[data-route="pkgMoling/pages/gift/gift"] .gt-row { display: flex; margin-top: calc(var(--rpx) * 16); }
[data-route="pkgMoling/pages/gift/gift"] .gt-item { flex: 1; text-align: center; }
[data-route="pkgMoling/pages/gift/gift"] .gt-icon { display: block; font-size: calc(var(--rpx) * 40); }
[data-route="pkgMoling/pages/gift/gift"] .gt-name { display: block; margin-top: calc(var(--rpx) * 4); font-size: calc(var(--rpx) * 24); color: #888888; }
[data-route="pkgMoling/pages/gift/gift"] .gt-num { display: block; margin-top: calc(var(--rpx) * 2); font-size: calc(var(--rpx) * 28); color: #07c160; font-weight: 700; }
[data-route="pkgMoling/pages/gift/gift"] .gt-note { margin-top: calc(var(--rpx) * 14); font-size: calc(var(--rpx) * 24); color: #888888; }



/* ---- pkgScene/pages/holder/holder.wxss ---- */
[data-route="pkgScene/pages/holder/holder"] .h { padding: calc(var(--rpx) * 40); font-size: calc(var(--rpx) * 28); color: #888888; }



/* ---- pkgAnimM/pages/holder/holder.wxss ---- */
[data-route="pkgAnimM/pages/holder/holder"] .holder {width:100%;height:100%;background:#191919}



/* ---- pkgFamily/pages/ucard/ucard.wxss ---- */
[data-route="pkgFamily/pages/ucard/ucard"] /* 个人主页（v4.86.578）—— 与聊天页同一套配色：底 #ededed、卡片 #fff、绿 #07c160 */
.uc-page {
  min-height: calc(var(--vh) * 100);
  background: #ededed;
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 24) calc(env(safe-area-inset-bottom) + calc(var(--rpx) * 32));
  box-sizing: border-box;
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-head {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 32);
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-ava {
  width: calc(var(--rpx) * 152);
  height: calc(var(--rpx) * 152);
  border-radius: calc(var(--rpx) * 10);
  background: #dcdcdc;
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-ava-txt {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 64);
  color: #ffffff;
  background: #b9bdc2;
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-name {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #191919;
  max-width: calc(var(--rpx) * 560);
  text-align: center;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-role {
  margin-top: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(7, 193, 96, 0.12);
  color: #07a352;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-tip {
  margin-top: calc(var(--rpx) * 24);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #9aa0a6;
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-card {
  margin-top: calc(var(--rpx) * 8);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-row {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 22) 0;
  border-bottom: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-row-last {
  border-bottom: 0;
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-k {
  flex-shrink: 0;
  width: calc(var(--rpx) * 180);
  font-size: calc(var(--rpx) * 28);
  color: #8a8f95;
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-v {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  word-break: break-all;
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-btn {
  margin-top: calc(var(--rpx) * 40);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  border-radius: calc(var(--rpx) * 10);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgFamily/pages/ucard/ucard"] .uc-note {
  margin-top: calc(var(--rpx) * 24);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  color: #a5a9ae;
  line-height: 1.6;
}



/* ---- pkgFamily/pages/family/family.wxss ---- */
[data-route="pkgFamily/pages/family/family"] /* ==================================================================
 * 分析页（家长看数据）· 微信生态皮肤（v4.70.0）
 * 白分组块 + 发丝线；数据主色从橙改成微信绿，与全站统一。
 * ================================================================== */

.page {
  min-height: calc(var(--vh) * 100);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24) calc(var(--rpx) * 64);
  background: #ededed;
  box-sizing: border-box;
}
[data-route="pkgFamily/pages/family/family"] .empty {
  padding: calc(var(--rpx) * 120) 0;
  text-align: center;
  color: #b2b2b2;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgFamily/pages/family/family"] .card {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgFamily/pages/family/family"] .card-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/family/family"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/family/family"] .btn {
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pkgFamily/pages/family/family"] .btn::after {
  border: none;
}
[data-route="pkgFamily/pages/family/family"] /* ---------- 顶部：白块黑大数字 ---------- */

.hero {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(var(--rpx) * 30);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgFamily/pages/family/family"] .hero-name {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pkgFamily/pages/family/family"] .hero-main {
  display: flex;
  align-items: baseline;
  margin: calc(var(--rpx) * 10) 0 calc(var(--rpx) * 6);
}
[data-route="pkgFamily/pages/family/family"] .hero-num {
  font-size: calc(var(--rpx) * 88);
  font-weight: 600;
  color: #07c160;
  line-height: 1;
}
[data-route="pkgFamily/pages/family/family"] .hero-unit {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  margin-left: calc(var(--rpx) * 14);
}
[data-route="pkgFamily/pages/family/family"] .hero-sub {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgFamily/pages/family/family"] .sep {
  margin: 0 calc(var(--rpx) * 12);
  color: #e5e5e5;
}
[data-route="pkgFamily/pages/family/family"] .hero-last {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pkgFamily/pages/family/family"] /* ---------- 7 天点阵 ---------- */

.days {
  display: flex;
  justify-content: space-between;
}
[data-route="pkgFamily/pages/family/family"] .day {
  flex: 1;
  text-align: center;
}
[data-route="pkgFamily/pages/family/family"] .day-dot {
  width: calc(var(--rpx) * 72);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  border-radius: 50%;
  margin: 0 auto calc(var(--rpx) * 10);
  background: #f2f2f2;
  color: #b2b2b2;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgFamily/pages/family/family"] .day-on .day-dot {
  background: #07c160;
  color: #ffffff;
}
[data-route="pkgFamily/pages/family/family"] .day-today .day-dot {
  box-shadow: 0 0 0 calc(var(--rpx) * 4) #a6e0be;
}
[data-route="pkgFamily/pages/family/family"] .day-label {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgFamily/pages/family/family"] /* ---------- 进步曲线（v4.86.203）---------- */

.trend-meta {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgFamily/pages/family/family"] .trend-canvas {
  width: 100%;
  height: calc(var(--rpx) * 320);
}
[data-route="pkgFamily/pages/family/family"] /* ---------- v4.86.293：成长曲线图例（颜色点 + 名称 + 首→末值） ---------- */
.growth-legend {
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pkgFamily/pages/family/family"] .growth-lg {
  display: flex;
  align-items: center;
  margin: calc(var(--rpx) * 6) calc(var(--rpx) * 24) calc(var(--rpx) * 6) 0;
}
[data-route="pkgFamily/pages/family/family"] .growth-lg-dot {
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  margin-right: calc(var(--rpx) * 8);
}
[data-route="pkgFamily/pages/family/family"] .growth-lg-txt {
  font-size: calc(var(--rpx) * 24);
  color: #444444;
}
[data-route="pkgFamily/pages/family/family"] /* ---------- 四周柱状 ---------- */
.bars {
  display: flex;
  align-items: flex-end;
  justify-content: space-around;
  height: calc(var(--rpx) * 240);
}
[data-route="pkgFamily/pages/family/family"] .bar-wrap {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 100%;
}
[data-route="pkgFamily/pages/family/family"] .bar-n {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pkgFamily/pages/family/family"] .bar-track {
  flex: 1;
  width: calc(var(--rpx) * 56);
  background: #f2f2f2;
  border-radius: calc(var(--rpx) * 12);
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}
[data-route="pkgFamily/pages/family/family"] .bar-fill {
  width: 100%;
  background: #07c160;
  border-radius: calc(var(--rpx) * 12);
  min-height: calc(var(--rpx) * 8);
  transition: height 0.3s;
}
[data-route="pkgFamily/pages/family/family"] .bar-label {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin-top: calc(var(--rpx) * 10);
}
[data-route="pkgFamily/pages/family/family"] /* ---------- 猫咪说：绿调浅底，压平 ---------- */

.say {
  background: #e8f7ee;
  border: none;
}
[data-route="pkgFamily/pages/family/family"] .say-from {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgFamily/pages/family/family"] .say-text {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  line-height: 1.75;
}
[data-route="pkgFamily/pages/family/family"] /* ---------- 设置行：微信 cell ---------- */

.row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 26) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgFamily/pages/family/family"] .row-k {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgFamily/pages/family/family"] .row-v {
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pkgFamily/pages/family/family"] .foot {
  margin-top: calc(var(--rpx) * 12);
  padding: 0 calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  line-height: 1.7;
}
[data-route="pkgFamily/pages/family/family"] .err {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  text-align: center;
}
[data-route="pkgFamily/pages/family/family"] /* ===== 本地的考试与通知 ===== */

.news-where {
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgFamily/pages/family/family"] .news-tip {
  margin: calc(var(--rpx) * 10) 0 calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pkgFamily/pages/family/family"] .news-item {
  padding: calc(var(--rpx) * 22) 0;
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pkgFamily/pages/family/family"] .news-title {
  font-size: calc(var(--rpx) * 28);
  line-height: 1.5;
  color: #191919;
}
[data-route="pkgFamily/pages/family/family"] .news-meta {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgFamily/pages/family/family"] /* ---- v4.86.244（木哥令）：资讯大弹层 ----
   比 wx.showModal 大得多：calc(var(--rpx) * 620) 宽、最高 76vh，内容区 scroll-view
   上下滑动看全。摘要按 UI 规范走「灰底圆角单元格」。 */
.news-local {
  display: inline-block;
  margin-left: calc(var(--rpx) * 12);
  padding: 0 calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 10);
  background: #e7f7ee;
  color: #07c160;
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 30);
  vertical-align: middle;
}
[data-route="pkgFamily/pages/family/family"] .news-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 1200;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgFamily/pages/family/family"] .news-sheet {
  width: calc(var(--rpx) * 620);
  max-height: 76vh;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) 0;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
[data-route="pkgFamily/pages/family/family"] .ns-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #1f2937;
  line-height: 1.5;
}
[data-route="pkgFamily/pages/family/family"] .ns-meta {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgFamily/pages/family/family"] .ns-scroll {
  flex: 1;
  min-height: 0;
  max-height: 44vh;
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/family/family"] .ns-par {
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  color: #374151;
  line-height: 1.7;
}
[data-route="pkgFamily/pages/family/family"] .ns-note {
  margin: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pkgFamily/pages/family/family"] .ns-btns {
  display: flex;
  border-top: calc(var(--rpx) * 1) solid #ececec;
  margin: 0 calc(var(--rpx) * -32);
}
[data-route="pkgFamily/pages/family/family"] .ns-btn {
  flex: 1;
  text-align: center;
  padding: calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 32);
  color: #374151;
}
[data-route="pkgFamily/pages/family/family"] .ns-btn + .ns-btn {
  border-left: calc(var(--rpx) * 1) solid #ececec;
}
[data-route="pkgFamily/pages/family/family"] .ns-copy {
  color: #07c160;
  font-weight: 700;
}



/* ---- pkgFamily/pages/famhome/famhome.wxss ---- */
[data-route="pkgFamily/pages/famhome/famhome"] /**
 * 家庭游戏 · 相亲相爱一家人（v4.86.201）
 * 仿蚂蚁庄园家庭场景：亲密度活动条 + 客厅（墙/窗/沙发/圆桌/地毯）
 * + 每人一只随等级长的走动猫。全部 CSS 画，不进任何图片资产（分包零图）。
 * 字号守 5 档（20/24/28/32/40），大数字走展示级 ≥46。
 */
.page {
  /* v4.86.410（木哥令「页面再集中一点」）：上下留白收紧，让亲密度+签到第一屏就齐 */
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 20) calc(var(--rpx) * 48);
}
[data-route="pkgFamily/pages/famhome/famhome"] /* ============ 加载进度条（v4.86.214 木哥令②） ============
 * 一只很小的猫在进度条上同步走：条宽和猫位置共用同一条
 * transition 曲线（0.28s linear），进度只涨不退 ⇒ 不闪跳。
 * v4.86.236（木哥令）：颜色粗细与全站统一 —— calc(var(--rpx) * 12) 高、浅灰轨道、
 * 纯色微信绿（对齐 components/cat-progress 与 detail 点评进度条），
 * 不再是家庭页独有的橙渐变。 */
.fam-loader {
  padding: calc(var(--rpx) * 140) calc(var(--rpx) * 80) calc(var(--rpx) * 60);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-loader-title {
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #4a3a28;
  margin-bottom: calc(var(--rpx) * 28);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-loader-track {
  position: relative;
  height: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #ececec;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-loader-fill {
  height: 100%;
  border-radius: inherit;
  background: #07c160;
  transition: width 0.28s linear;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-loader-cat {
  position: absolute;
  left: 6%;
  bottom: calc(var(--rpx) * 8);
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  margin-left: calc(var(--rpx) * -22);
  transition: left 0.28s linear;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* ============ 亲密度活动条 ============ */
.fam-banner {
  background: linear-gradient(160deg, #2e8b57, #0a9e4d);
  border-radius: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  color: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 10) calc(var(--rpx) * 24) rgba(10, 158, 77, 0.18);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-banner-top {
  display: flex;
  align-items: baseline;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-banner-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* 主人猫的形态等级标注（v4.86.207：「全家亲密度 · 主人猫 墨喵幼崽」） */
.fam-banner-lvl {
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
  opacity: 0.92;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-round-tip {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  opacity: 0.85;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-banner-num {
  margin-left: auto;
  font-size: calc(var(--rpx) * 56);
  font-weight: 700;
  line-height: 1;
  text-shadow: 0 calc(var(--rpx) * 3) calc(var(--rpx) * 6) rgba(0, 0, 0, 0.18);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-bar {
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-bar-track {
  position: relative;
  height: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(255, 255, 255, 0.28);
  overflow: visible;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-bar-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(90deg, #ffe07a, #ffc14d);
  transition: width 0.6s ease;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-bar-node {
  position: absolute;
  top: calc(var(--rpx) * -6);
  width: calc(var(--rpx) * 26);
  height: calc(var(--rpx) * 26);
  margin-left: calc(var(--rpx) * -13);
  border-radius: 50%;
  background: #ffffff;
  border: calc(var(--rpx) * 4) solid #ffe07a;
  box-sizing: border-box;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-bar-node-on {
  background: #ffc14d;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-bar-labels {
  display: flex;
  justify-content: space-between;
  margin-top: calc(var(--rpx) * 10);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-bar-label {
  font-size: calc(var(--rpx) * 20);
  opacity: 0.92;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-banner-tip {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  opacity: 0.95;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-today {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  opacity: 0.85;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* ============ 家的场景 ============ */
.fam-scene-card {
  margin-top: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 20);
  overflow: hidden;
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 20) rgba(23, 92, 55, 0.10);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-scene {
  position: relative;
  height: calc(var(--rpx) * 620);
  overflow: hidden;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-wall {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: calc(var(--rpx) * 400);
  background: linear-gradient(180deg, #3d4a6b, #5a6a8f);
}
[data-route="pkgFamily/pages/famhome/famhome"] /* 素墙（v4.86.207：墙上物件全撤——窗/月亮不要了，只留一台电视） */
.fam-wall {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: calc(var(--rpx) * 400);
  background: linear-gradient(180deg, #3d4a6b, #5a6a8f);
}
[data-route="pkgFamily/pages/famhome/famhome"] /* 电视机（v4.86.207）：挂墙，屏幕里循环播「家」字单字横向书写视频 */
.fam-tv {
  position: absolute;
  left: 50%;
  top: calc(var(--rpx) * 30);
  width: calc(var(--rpx) * 260);
  margin-left: calc(var(--rpx) * -130);
  z-index: 2;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-tv-frame {
  width: calc(var(--rpx) * 260);
  height: calc(var(--rpx) * 170);
  border-radius: calc(var(--rpx) * 12);
  background: #17203a;
  border: calc(var(--rpx) * 10) solid #223052;
  box-shadow: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 18) rgba(0, 0, 0, 0.35);
  overflow: hidden;
  box-sizing: border-box;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-tv-screen {
  width: 100%;
  height: 100%;
  background: #f7f4ea;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* 没信号时：屏幕上一枚静「家」字（电视没信号也得是台电视） */
.fam-tv-off {
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-tv-char {
  font-size: calc(var(--rpx) * 64);
  font-weight: 700;
  color: #b06f3c;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-tv-stand {
  width: calc(var(--rpx) * 120);
  height: calc(var(--rpx) * 14);
  margin: calc(var(--rpx) * 6) auto 0;
  border-radius: calc(var(--rpx) * 6);
  background: #223052;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-floor {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: calc(var(--rpx) * 240);
  background: linear-gradient(180deg, #b98a5e, #a3744c);
  border-top: calc(var(--rpx) * 6) solid #8d6240;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-rug {
  position: absolute;
  left: 50%;
  bottom: calc(var(--rpx) * 26);
  width: calc(var(--rpx) * 560);
  height: calc(var(--rpx) * 170);
  margin-left: calc(var(--rpx) * -280);
  border-radius: 50%;
  background: radial-gradient(ellipse at center, #d9f0dc 0%, #b7e0c0 70%, #9fcfae 100%);
}
[data-route="pkgFamily/pages/famhome/famhome"] /* 5 块小地毯（v4.86.207）：每只猫一块，就是它的活动范围——第 0 块在中间，主人的猫 */
.fam-minirug {
  position: absolute;
  width: calc(var(--rpx) * 120);
  height: calc(var(--rpx) * 56);
  margin-left: calc(var(--rpx) * -60);
  border-radius: 50%;
  background: radial-gradient(ellipse at center, #fdf3d8 0%, #f3d9a4 75%, #e5c184 100%);
  border: calc(var(--rpx) * 3) solid rgba(176, 111, 60, 0.35);
  box-sizing: border-box;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* v4.86.421（木哥令）：撤掉墙上那条黄色长条（旧沙发块），墙上只留电视 */

/* 圆桌：桌面 + 桌心爱心 */
.fam-table {
  position: absolute;
  left: 50%;
  bottom: calc(var(--rpx) * 120);
  width: calc(var(--rpx) * 300);
  height: calc(var(--rpx) * 120);
  margin-left: calc(var(--rpx) * -150);
  border-radius: 50%;
  background: linear-gradient(180deg, #c98b52, #b06f3c);
  box-shadow: 0 calc(var(--rpx) * 12) calc(var(--rpx) * 22) rgba(0, 0, 0, 0.22), inset 0 calc(var(--rpx) * 6) calc(var(--rpx) * 10) rgba(255, 255, 255, 0.25);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-table-heart {
  font-size: calc(var(--rpx) * 40);
  color: #e4684f;
  text-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 4) rgba(0, 0, 0, 0.2);
}
[data-route="pkgFamily/pages/famhome/famhome"] /* ---- 走动的猫 ---- */
.fam-cat {
  position: absolute;
  display: flex;
  flex-direction: column;
  align-items: center;
  /* 位移由端上定时器驱动，transition 平滑走过去；
   * opacity 归掉头虚化用（v4.86.212）：渐隐 → 隐身翻身 → 渐显 */
  transition: left 2.4s linear, opacity 0.4s ease;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* ============ 第一次进家的玩法指引（v4.86.410 木哥令） ============
 * 气泡：渐入 0.6 秒 → 驻足 → 渐出 0.6 秒，整体在屏 3 秒（端上 3 秒后摘掉节点）。
 * 位置压在场景中上方，不挡猫；右侧一枚呼吸箭头指向右栏的 4 件套。 */
/* v4.86.411（木哥令「同步到家庭里，气泡渐入渐出驻足 3 秒」）：猫的话气泡。
   与乐园页 .cat-bubble 同款两态：挂上时是淡出态（透明、略低），隔一帧切
   .fam-say-in 淡入到全亮，3 秒后撤掉再淡出 —— 新句来就替掉旧的重新起算。 */
.fam-say {
  position: absolute;
  left: 50%;
  top: calc(var(--rpx) * 132);
  max-width: calc(var(--rpx) * 460);
  box-sizing: border-box;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #07c160;
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
  color: #1f3d2b;
  z-index: 31;
  opacity: 0;
  transform: translateX(-50%) translateY(calc(var(--rpx) * 10));
  transition: opacity 0.35s ease, transform 0.35s ease;
  will-change: opacity, transform;
  pointer-events: none;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-say-in {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-say-out {
  opacity: 0;
  transform: translateX(-50%) translateY(calc(var(--rpx) * 10));
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-guide {
  position: absolute;
  left: 50%;
  top: calc(var(--rpx) * 44);
  transform: translateX(-50%);
  max-width: calc(var(--rpx) * 460);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 10);
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 22) rgba(0, 0, 0, 0.16);
  z-index: 30;
  animation: fam-guide-fade 3s ease forwards;
  pointer-events: none;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-guide-text {  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 36);
  color: #2f2a22;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-guide-arrow {
  position: absolute;
  right: calc(var(--rpx) * 24);
  top: 50%;
  margin-top: calc(var(--rpx) * -40);
  font-size: calc(var(--rpx) * 40);
  color: #ffc14d;
  text-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 6) rgba(0, 0, 0, 0.2);
  z-index: 30;
  animation: fam-guide-bob 3s ease-in-out forwards;
  pointer-events: none;
}


@keyframes fam-guide-fade {
  0% { opacity: 0; transform: translateX(-50%) translateY(calc(var(--rpx) * -10)); }
  20% { opacity: 1; transform: translateX(-50%) translateY(0); }
  80% { opacity: 1; transform: translateX(-50%) translateY(0); }
  100% { opacity: 0; transform: translateX(-50%) translateY(calc(var(--rpx) * -6)); }
}


@keyframes fam-guide-bob {
  0% { opacity: 0; transform: translateX(0); }
  20% { opacity: 1; }
  50% { transform: translateX(calc(var(--rpx) * 10)); }
  80% { opacity: 1; }
  100% { opacity: 0; transform: translateX(0); }
}
[data-route="pkgFamily/pages/famhome/famhome"] /* 掉头虚化（v4.86.212 木哥令：渐渐没了又渐渐出来，把掉头动作藏起来） */
.fam-cat-hide {
  opacity: 0;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-cat-tag {
  display: flex;
  align-items: center;
  margin-bottom: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(255, 255, 255, 0.94);
  border: calc(var(--rpx) * 2) solid #e3d5c0;
  font-size: calc(var(--rpx) * 20);
  color: #4a3a28;
  white-space: nowrap;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 8) rgba(0, 0, 0, 0.15);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-cat-tag-me {
  border-color: #0a9e4d;
  color: #0a7a3d;
  font-weight: 600;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-cat-dot {
  width: calc(var(--rpx) * 10);
  height: calc(var(--rpx) * 10);
  border-radius: 50%;
  margin-right: calc(var(--rpx) * 8);
  background: #b8c0c8;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-cat-tag-me .fam-cat-dot {
  background: #0a9e4d;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-cat-img {
  width: 100%;
  /* v4.86.255 木哥令：猫再大一倍 —— 图框 100 → calc(var(--rpx) * 200)（宽走行内 w，同样翻倍），
   * aspectFit 等比缩放，两维一起翻倍才是真大一倍 */
  height: calc(var(--rpx) * 200);
  /* 翻身不带走过渡：dir 只在隐身时翻，瞬翻不会被人看见（v4.86.212） */
  transition: none;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* 翻身：目标点在身后时水平镜像 */
.fam-cat-flip .fam-cat-img {
  transform: scaleX(-1);
}
[data-route="pkgFamily/pages/famhome/famhome"] /* +3 闪现（v4.86.207）：受照顾的猫上方，渐入渐出一共 2 秒（端上 2 秒后摘） */
.fam-pop {
  position: absolute;
  left: 50%;
  top: calc(var(--rpx) * -34);
  transform: translateX(-50%);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: #0a9e4d;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
  white-space: nowrap;
  animation: famPop 2s ease-in-out both;
  pointer-events: none;
}


@keyframes famPop {
  0% { opacity: 0; transform: translateX(-50%) translateY(calc(var(--rpx) * 10)); }
  20% { opacity: 1; transform: translateX(-50%) translateY(0); }
  80% { opacity: 1; transform: translateX(-50%) translateY(calc(var(--rpx) * -6)); }
  100% { opacity: 0; transform: translateX(-50%) translateY(calc(var(--rpx) * -16)); }
}
[data-route="pkgFamily/pages/famhome/famhome"] /* ---- 4 件套右栏（v4.86.207；v4.86.214 木哥令：去外框只留图标，
 *      上下居中排在右侧，拖到猫身上松手就用） ---- */
.fam-side {
  position: absolute;
  right: calc(var(--rpx) * 8);
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  z-index: 3;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-tool {
  position: relative;
  width: calc(var(--rpx) * 88);
  height: calc(var(--rpx) * 88);
  margin: calc(var(--rpx) * 10) 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-tool-off {
  opacity: 0.45;
  filter: grayscale(0.8);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-tool-img {
  width: calc(var(--rpx) * 62);
  height: calc(var(--rpx) * 62);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-tool-badge {
  position: absolute;
  right: calc(var(--rpx) * -8);
  top: calc(var(--rpx) * -8);
  min-width: calc(var(--rpx) * 32);
  height: calc(var(--rpx) * 32);
  padding: 0 calc(var(--rpx) * 6);
  border-radius: calc(var(--rpx) * 999);
  background: #fa5151;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 32);
  text-align: center;
  box-sizing: border-box;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* v4.86.215 木哥令②：不能用时图标下的一行小字（没次数/今天做满/N小时后再用） */
.fam-tool-tip {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: calc(var(--rpx) * 92);
  white-space: nowrap;
  font-size: calc(var(--rpx) * 20);
  line-height: 1.2;
  color: #8a8a8a;
  text-shadow: 0 calc(var(--rpx) * 1) calc(var(--rpx) * 2) rgba(255, 255, 255, 0.9);
  pointer-events: none;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* 拖拽中的 4 件套（跟手指走，页面坐标 fixed；与右栏图标同大小） */
.fam-drag {
  position: fixed;
  width: calc(var(--rpx) * 96);
  height: calc(var(--rpx) * 96);
  margin-left: calc(var(--rpx) * -48);
  margin-top: calc(var(--rpx) * -48);
  z-index: 99;
  pointer-events: none;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-drag-img {
  width: 100%;
  height: 100%;
  filter: drop-shadow(0 calc(var(--rpx) * 6) calc(var(--rpx) * 10) rgba(0, 0, 0, 0.3));
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-forms {
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 20) calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/famhome/famhome"] /* ============ 家人名单 ============ */
.fam-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-dot {
  width: calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 20);
  border-radius: 50%;
  background: #d4dbd7;
  margin-left: calc(var(--rpx) * 16);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-dot-on {
  background: #0a9e4d;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-share-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/famhome/famhome"] /* ============ 建 / 加家庭 ============ */
.fam-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-login-note {
  margin-top: calc(var(--rpx) * 12);
  text-align: center;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-join-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-join-input {
  flex: 1;
  height: calc(var(--rpx) * 76);
  padding: 0 calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 2) solid #d9e4dc;
  border-radius: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 28);
  background: #fbfdfb;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-join-btn {
  margin-left: calc(var(--rpx) * 16);
}
[data-route="pkgFamily/pages/famhome/famhome"] /* ============ 签到（v4.86.410 木哥令：从页尾搬到亲密度条下，第一屏就看见） ============ */
.fam-sign-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-sign-today {
  font-size: calc(var(--rpx) * 20);
  color: #eaf7ee;
  opacity: 0.92;
  flex: 1;
  min-width: 0;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-sign-btn {
  flex-shrink: 0;
  padding: 0 calc(var(--rpx) * 32);
  height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 64);
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #7a4a00;
  background: linear-gradient(180deg, #ffe07a, #ffc14d);
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 14) rgba(0, 0, 0, 0.16);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-sign-btn-done {
  opacity: 0.55;
  font-weight: 400;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-reward {
  margin-top: calc(var(--rpx) * 12);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #0a9e4d;
}
[data-route="pkgFamily/pages/famhome/famhome"] .err {
  margin-top: calc(var(--rpx) * 16);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* v4.86.274（木哥令）：亲密度说明默认收起 —— 标题行的「说明/收起」切换 */
.fam-tip-toggle {
  margin-left: auto;
  padding: 0 calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 20);
  line-height: calc(var(--rpx) * 32);
  color: #eaf7ee;
  background: rgba(255, 255, 255, 0.18);
  border-radius: calc(var(--rpx) * 10);
  flex-shrink: 0;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* v4.86.274（木哥令）：电视动感光圈 —— 呼吸发光的一圈，叠在 frame 外侧不挡点 */
.fam-tv-glow {
  position: absolute;
  left: calc(var(--rpx) * -18);
  top: calc(var(--rpx) * -18);
  right: calc(var(--rpx) * -18);
  bottom: calc(var(--rpx) * -18);
  border-radius: calc(var(--rpx) * 24);
  border: calc(var(--rpx) * 6) solid rgba(255, 219, 122, 0.85);
  box-shadow: 0 0 calc(var(--rpx) * 40) calc(var(--rpx) * 10) rgba(255, 219, 122, 0.55);
  animation: fam-tv-glow-breath 2.4s ease-in-out infinite;
  pointer-events: none;
}


@keyframes fam-tv-glow-breath {
  0%, 100% {
    opacity: 0.35;
    box-shadow: 0 0 calc(var(--rpx) * 24) calc(var(--rpx) * 4) rgba(255, 219, 122, 0.35);
  }
  50% {
    opacity: 1;
    box-shadow: 0 0 calc(var(--rpx) * 52) calc(var(--rpx) * 16) rgba(255, 219, 122, 0.65);
  }
}
[data-route="pkgFamily/pages/famhome/famhome"] /* v4.86.274：屏外分享合成画布（藏屏外，不占布局） */
.fam-share-canvas {
  position: fixed;
  left: calc(var(--rpx) * -9999);
  top: 0;
  width: 300px;
  height: 240px;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* v4.86.326：猫语播报开关（固定右下角一枚圆键；关掉压暗+🔇，本地记住） */
.fam-voice {
  position: fixed;
  right: calc(var(--rpx) * 28);
  bottom: calc(var(--rpx) * 200);
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.92);
  border: calc(var(--rpx) * 2) solid #9bd3ab;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 28);
  z-index: 30;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-voice-off {
  opacity: 0.55;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* v4.86.454：家庭号那行「复制」挂的是 link-muted，可这一页从来没定义过它 ——
   一行可点的操作长成了正文黑字，看着像说明文字。补成弱化链接（与 game/home 同款）。 */
.link-muted {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgFamily/pages/famhome/famhome"] /* v7.0.012：家庭页和猫说话（与乐园页 .cat-talk 同款样式，前缀 fam- 只差容器边距） */
.fam-talk {
  margin: calc(var(--rpx) * 16) calc(var(--rpx) * 24) 0;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-talk .cat-talk-state {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  margin-right: calc(var(--rpx) * 16);
  white-space: nowrap;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-talk .cat-talk-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  height: calc(var(--rpx) * 72);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  background: #eef9f2;
  border: calc(var(--rpx) * 2) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-talk .cat-talk-ico {
  width: calc(var(--rpx) * 36);
  height: calc(var(--rpx) * 36);
  margin-right: calc(var(--rpx) * 8);
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48Y2lyY2xlIGN4PSI0OCIgY3k9IjQ4IiByPSI0MiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDdjMTYwIiBzdHJva2Utd2lkdGg9IjUiLz48Y2lyY2xlIGN4PSIzNyIgY3k9IjQ4IiByPSI1IiBmaWxsPSIjMDdjMTYwIi8+PHBhdGggZD0iTTQ5IDM5YTEyIDEyIDAgMCAxIDAgMTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzA3YzE2MCIgc3Ryb2tlLXdpZHRoPSI1IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNNTcgMzBhMjQgMjQgMCAwIDEgMCAzNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDdjMTYwIiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==");
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-talk .cat-talk-btn-hover {
  background: #07c160;
  color: #ffffff;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-talk .cat-talk-live {
  animation: voice-flash 1.4s ease-in-out infinite;
}
[data-route="pkgFamily/pages/famhome/famhome"] .fam-talk .cat-talk-hint {
  width: 100%;
  font-size: calc(var(--rpx) * 24);
  color: #7a9a86;
  margin-top: calc(var(--rpx) * 12);
}



/* ---- pkgFamily/pages/privacy/privacy.wxss ---- */
[data-route="pkgFamily/pages/privacy/privacy"] /* ==================================================================
 * 隐私政策 · 微信文章排版（白底黑字）
 * ================================================================== */

.wrap {
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 32) calc(var(--rpx) * 64);
  background: #ffffff;
  min-height: calc(var(--vh) * 100);
  box-sizing: border-box;
}
[data-route="pkgFamily/pages/privacy/privacy"] .title {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #191919;
}
[data-route="pkgFamily/pages/privacy/privacy"] .upd {
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  margin: calc(var(--rpx) * 12) 0 calc(var(--rpx) * 28);
}
[data-route="pkgFamily/pages/privacy/privacy"] .h {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
  margin: calc(var(--rpx) * 32) 0 calc(var(--rpx) * 12);
}
[data-route="pkgFamily/pages/privacy/privacy"] .p {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  line-height: 1.7;
  margin-bottom: calc(var(--rpx) * 10);
}
[data-route="pkgFamily/pages/privacy/privacy"] .foot {
  margin-top: calc(var(--rpx) * 40);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  line-height: 1.6;
}



/* ---- pkgFamily/pages/agreement/agreement.wxss ---- */
[data-route="pkgFamily/pages/agreement/agreement"] /* 用户服务协议页 —— 与 pkgFamily/pages/privacy 同一套版式 */
page {
  background: #f7f7f7;
}
[data-route="pkgFamily/pages/agreement/agreement"] .wrap {
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 32) calc(calc(var(--rpx) * 32) + env(safe-area-inset-bottom));
}
[data-route="pkgFamily/pages/agreement/agreement"] .title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #191919;
  text-align: center;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pkgFamily/pages/agreement/agreement"] .upd {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  text-align: center;
  margin-bottom: calc(var(--rpx) * 28);
}
[data-route="pkgFamily/pages/agreement/agreement"] .h {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #191919;
  margin: calc(var(--rpx) * 28) 0 calc(var(--rpx) * 10);
}
[data-route="pkgFamily/pages/agreement/agreement"] .p {
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 44);
  color: #444444;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pkgFamily/pages/agreement/agreement"] .foot {
  margin-top: calc(var(--rpx) * 36);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  text-align: center;
}



/* ---- pkgFamily/pages/remind/remind.wxss ---- */
[data-route="pkgFamily/pages/remind/remind"] #app-page[data-route="pkgFamily/pages/remind/remind"] {
  background: #f7f7f7;
}
[data-route="pkgFamily/pages/remind/remind"] .page-wrap {
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 32) calc(var(--rpx) * 60);
}
[data-route="pkgFamily/pages/remind/remind"] .title {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #191919;
}
[data-route="pkgFamily/pages/remind/remind"] .lead {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgFamily/pages/remind/remind"] /* ---- 卡片（全站同一套圆角白卡） ---- */
.card {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 28);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pkgFamily/pages/remind/remind"] .card-head {
  padding-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/remind/remind"] .card-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #191919;
}
[data-route="pkgFamily/pages/remind/remind"] .card-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pkgFamily/pages/remind/remind"] /* ---- 行：名称+状态在左，按钮在右 ---- */
.row {
  margin-top: calc(var(--rpx) * 24);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgFamily/pages/remind/remind"] .row-main {
  flex: 1;
  min-width: 0;
  margin-right: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/remind/remind"] .row-key {
  font-size: calc(var(--rpx) * 24);
  color: #333333;
}
[data-route="pkgFamily/pages/remind/remind"] .row-val {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  word-break: break-all;
}
[data-route="pkgFamily/pages/remind/remind"] .row-val.dim {
  color: #bbbbbb;
}
[data-route="pkgFamily/pages/remind/remind"] .note {
  margin-top: calc(var(--rpx) * 18);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  line-height: 1.6;
}
[data-route="pkgFamily/pages/remind/remind"] /* ---- 按钮（微信绿实心） ---- */
.btn {
  flex-shrink: 0;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 28);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 32);
  text-align: center;
}
[data-route="pkgFamily/pages/remind/remind"] .btn-block {
  display: block;
  width: 100%;
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20) 0;
  font-size: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 40);
  box-sizing: border-box;
}
[data-route="pkgFamily/pages/remind/remind"] /* ---- 选择器与输入 ---- */
.pick {
  display: inline-block;
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  font-weight: 500;
}
[data-route="pkgFamily/pages/remind/remind"] .field {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 24);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pkgFamily/pages/remind/remind"] /* v4.86.205：语音输入那格不额外加内边距（voice-bar 自己带布局） */
.field-voice {
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16);
}
[data-route="pkgFamily/pages/remind/remind"] .field-label {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pkgFamily/pages/remind/remind"] .field-input {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgFamily/pages/remind/remind"] .ph {
  color: #bbbbbb;
}
[data-route="pkgFamily/pages/remind/remind"] /* 说完/写完的话当场回显一行，落日历用的就是这句 */
.what-prev {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #191919;
  word-break: break-all;
}
[data-route="pkgFamily/pages/remind/remind"] .field-pickers {
  display: flex;
  gap: calc(var(--rpx) * 24);
  align-items: center;
}
[data-route="pkgFamily/pages/remind/remind"] .field-pickers .pick {
  margin-top: 0;
}
[data-route="pkgFamily/pages/remind/remind"] /* ---- v4.86.205：写进手机日历开关行 ---- */
.switch-row {
  margin-top: calc(var(--rpx) * 24);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgFamily/pages/remind/remind"] .switch-tx {
  font-size: calc(var(--rpx) * 28);
  color: #333333;
}
[data-route="pkgFamily/pages/remind/remind"] /* ---- 已记的事 ---- */
.rec {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 22) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgFamily/pages/remind/remind"] .rec-main {
  flex: 1;
  min-width: 0;
  margin-right: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/remind/remind"] .rec-what {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  word-break: break-all;
}
[data-route="pkgFamily/pages/remind/remind"] .rec-when {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pkgFamily/pages/remind/remind"] .rec-del {
  flex-shrink: 0;
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  line-height: calc(var(--rpx) * 56);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  background: #f7f7f7;
  border-radius: 50%;
}
[data-route="pkgFamily/pages/remind/remind"] /* ================= ⓪ 我的计划（v7.0.057 并入，原 pages/plan 退役） ================= */
.plan-card {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/remind/remind"] .plan-list {
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgFamily/pages/remind/remind"] .plan-row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 16) 0;
  border-bottom: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pkgFamily/pages/remind/remind"] .plan-row:last-child {
  border-bottom: none;
}
[data-route="pkgFamily/pages/remind/remind"] .plan-check {
  flex: none;
  width: calc(var(--rpx) * 40);
  height: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 18);
  border-radius: 50%;
  border: calc(var(--rpx) * 2) solid #c8c8c8;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 40);
  text-align: center;
}
[data-route="pkgFamily/pages/remind/remind"] .plan-check-on {
  background: #07c160;
  border-color: #07c160;
}
[data-route="pkgFamily/pages/remind/remind"] .plan-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgFamily/pages/remind/remind"] .plan-title {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgFamily/pages/remind/remind"] .plan-row-done .plan-title {
  color: #999999;
  text-decoration: line-through;
}
[data-route="pkgFamily/pages/remind/remind"] .plan-remind {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pkgFamily/pages/remind/remind"] .plan-cal {
  flex: none;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  border: calc(var(--rpx) * 1) solid #07c160;
  color: #07c160;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgFamily/pages/remind/remind"] .plan-empty {
  padding: calc(var(--rpx) * 28) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}



/* ---- pkgFamily/pages/voice-agree/voice-agree.wxss ---- */
[data-route="pkgFamily/pages/voice-agree/voice-agree"] #app-page[data-route="pkgFamily/pages/voice-agree/voice-agree"] {
  background: #f7f7f7;
}
[data-route="pkgFamily/pages/voice-agree/voice-agree"] .page-wrap {
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 32) calc(var(--rpx) * 60);
}
[data-route="pkgFamily/pages/voice-agree/voice-agree"] .title {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #191919;
}
[data-route="pkgFamily/pages/voice-agree/voice-agree"] .lead {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgFamily/pages/voice-agree/voice-agree"] .body {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 28);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pkgFamily/pages/voice-agree/voice-agree"] .p {
  font-size: calc(var(--rpx) * 28);
  color: #333333;
  line-height: 1.8;
  white-space: pre-wrap;
}
[data-route="pkgFamily/pages/voice-agree/voice-agree"] .foot {
  margin-top: calc(var(--rpx) * 40);
}
[data-route="pkgFamily/pages/voice-agree/voice-agree"] .done {
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  text-align: center;
  padding: calc(var(--rpx) * 24) 0;
}
[data-route="pkgFamily/pages/voice-agree/voice-agree"] .tip {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  text-align: center;
  line-height: 1.6;
}



/* ---- pkgMentor/mentor/center.wxss ---- */
[data-route="pkgMentor/mentor/center"] .login-btn {
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pkgMentor/mentor/center"] .center-head {
  background: #ffffff;
}
[data-route="pkgMentor/mentor/center"] .head-nums {
  display: flex;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgMentor/mentor/center"] .head-num {
  flex: 1;
  text-align: center;
}
[data-route="pkgMentor/mentor/center"] .head-num-v {
  font-size: calc(var(--rpx) * 40);
  font-weight: 500;
  color: #07c160;
}
[data-route="pkgMentor/mentor/center"] .head-num-u {
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
  margin-left: calc(var(--rpx) * 4);
}
[data-route="pkgMentor/mentor/center"] .head-num-k {
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pkgMentor/mentor/center"] .save-btn {
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgMentor/mentor/center"] .err {
  margin-top: calc(var(--rpx) * 20);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgMentor/mentor/center"] .withdraw-free {
  color: #07c160;
  font-weight: 500;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgMentor/mentor/center"] .withdraw-list {
  margin-top: calc(var(--rpx) * 26);
}
[data-route="pkgMentor/mentor/center"] .cost-tip {
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pkgMentor/mentor/center"] .badge-quality {
  background: #e8f7ee;
  color: #07c160;
  margin-left: calc(var(--rpx) * 10);
}
[data-route="pkgMentor/mentor/center"] /* ---- 获客分享（v4.5） ---- */

.mentor-share {
  margin-top: calc(var(--rpx) * 20);
  width: 100%;
  background: #e8f7ee;
  color: #07c160;
  border-color: transparent;
  font-weight: 500;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgMentor/mentor/center"] /* 上限与结算口径说明（A 组 §二 要求必须写明上限） */
/* ---- 在线/离线开关（v4.6） ---- */

.online-block {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/center"] .online-text {
  flex: 1;
}
[data-route="pkgMentor/mentor/center"] /* 待开通课程（v4.86.16）：一行课 + 一个「开通」按钮，按钮要够大好点 */
.queue-row {
  align-items: center;
}
[data-route="pkgMentor/mentor/center"] .queue-btn {
  min-width: calc(var(--rpx) * 132);
  height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 64);
  text-align: center;
  padding: 0 calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  color: #fff;
  background: #07c160;
}
[data-route="pkgMentor/mentor/center"] .queue-btn:active {
  opacity: 0.8;
}
[data-route="pkgMentor/mentor/center"] .queue-tip {
  display: block;
  margin-top: calc(var(--rpx) * 12);
  line-height: 1.6;
}
[data-route="pkgMentor/mentor/center"] /* ---- 接单微信提醒（v4.86.14） ---- */
/* 与上面的在线开关同一种排布：左边两行说明、右边一个操作件，视觉上属于同一组「接单设置」。 */

.remind-block {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/center"] .remind-text {
  flex: 1;
}
[data-route="pkgMentor/mentor/center"] /* v4.86.191（木哥 14:2x「每一小项都单独起来中间画一条分界线，不要混在一起」）：
   接单设置卡里每一项之间画一条细线 —— 一项一格，扫一眼知道哪里是一项的起头。
   用法：除第一项外每个 field-block 追加 .set-div。 */
.set-div {

  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/center"] /* v4.86.191：「按住说话 ◯《声纹授权协议》」自成一行的容器。
   voice-bar 的 .vb-btn-row 本身是 flex 行，套一层保左对齐、与上下留呼吸。 */
.bio-voice-row {
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pkgMentor/mentor/center"] /* ---- 未读小红点（v4.86.39，木哥 18:08 第 1 条） ----
   「未读」= 这一单我还没点开过（utils/mentor-unread.js 的本地表）。
   行上一枚小圆点 + 卡片标题旁一枚「N 单未读」的浅底红字，打开那一单即熄灭。 */

.unread-dot {
  display: inline-block;
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 16);
  border-radius: 50%;
  background: #fa5151;
  margin-right: calc(var(--rpx) * 12);
  vertical-align: middle;
}
[data-route="pkgMentor/mentor/center"] .unread-pill {
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: #ffecec;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
}
[data-route="pkgMentor/mentor/center"] /* v4.86.94（木哥 00:5x 第 2 条）：「学员留言 N 条」—— 挂在行副标题行尾。
   与上面那枚 pill 同一套色（红字浅红底），但它更轻：只在有留言时出现，
   一眼分得清「这一单有人说话」和「这一单还没点开」（后者是实心红点）。 */
.chat-new {
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #ffecec;
  color: #fa5151;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/center"] /* ---- v4.86.76（木哥 2026-10-12）：三张卡整卡折叠 ----
   「接单设置 / 收益提现 / 最近完成」默认收起，卡标题行右侧一枚「展开 / 收起」小胶囊
   （与「我的」页练字好物、钱包页小字说明同款交互：只是先不铺开，数据一条没少）。
   折叠态下卡片里只剩这一行，靠 .card-head:last-child 把标题行原本的下间距收掉，
   否则收起来的卡会比旁边高出一截、看着像空块。 */
.card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/center"] .card-head .card-title {
  flex: 1;
  margin-bottom: 0;
}
[data-route="pkgMentor/mentor/center"] .card-head-right {
  display: flex;
  align-items: center;
  flex-shrink: 0;
}
[data-route="pkgMentor/mentor/center"] .card-head:last-child {
  margin-bottom: 0;
}
[data-route="pkgMentor/mentor/center"] /* 「展开 / 收起」胶囊：与上面「去开启」同一种绿描边小件，页内自成一系 */
.card-fold-toggle {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 22);
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
  color: #07c160;
  font-size: calc(var(--rpx) * 20);
  line-height: 1.6;
}
[data-route="pkgMentor/mentor/center"] .card-fold-toggle-hover {
  background: rgba(7, 193, 96, 0.12);
}
[data-route="pkgMentor/mentor/center"] /* 「还有 N 条，点开看全部」—— 最近完成收起时的承接行（整行可点，展开都走 toggleDoneCard） */
.done-more {
  margin-top: calc(var(--rpx) * 16);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgMentor/mentor/center"] .done-more:active {
  opacity: 0.7;
}
[data-route="pkgMentor/mentor/center"] /* ---- v4.86.47：家长约单留言那一行 ----
   底子沿用全局 .cell-sub（calc(var(--rpx) * 24) / 灰），只把颜色提上来一档：
   这句是家长特意写的，比「孩子打卡备注」更该被老师看见。 */
.invite-note-line {
  color: #07c160;
  line-height: 1.6;
}
[data-route="pkgMentor/mentor/center"] /* ---- v4.86.118「加入老师团」入口 + 二维码弹层（2026-10-13 木哥）----
   入口底版沿用「我的」页那条私域入口的走法（绿底 → 这里换橙，与老师身份区呼应）；
   弹层姿势与「我的」页逐字同款：页内 <image show-menu-by-longpress> 长按识别，
   不用 wx.previewImage（预览大图的长按菜单在小程序里不一定有「识别图中二维码」）。
   ★ 这组类名在本页是独立作用域（页面 wxss 不跨页继承），改「我的」页那边不用回来同步。 */
.kefu-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 20);
  /* v4.86.239（木哥配截图）：这条不是 .card，吃不到卡片自带的 calc(var(--rpx) * 16) 下间距，
   * 会直接贴住下一张卡 ⇒ 补齐，与卡片间距同一档。 */
  margin-bottom: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24);
  background: #e9f8ef;
  border: calc(var(--rpx) * 2) solid #a6e0be;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/center"] .kefu-ico {
  width: calc(var(--rpx) * 40);
  height: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 14);
  flex-shrink: 0;
}
[data-route="pkgMentor/mentor/center"] .kefu-t {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #0a7a3d;
  font-weight: 600;
}
[data-route="pkgMentor/mentor/center"] .kefu-x {
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
}
[data-route="pkgMentor/mentor/center"] .mentor-row {
  background: #fff4e8;
  border-color: #f5cb9c;
}
[data-route="pkgMentor/mentor/center"] .mentor-row .kefu-t {
  color: #c46a12;
}
[data-route="pkgMentor/mentor/center"] .mentor-row .kefu-x {
  color: #e08a2e;
}
[data-route="pkgMentor/mentor/center"] .qr-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
  background: rgba(0, 0, 0, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgMentor/mentor/center"] .qr-box {
  width: 100%;
  max-width: calc(var(--rpx) * 560);
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(var(--rpx) * 28);
  background: #fff;
  border-radius: calc(var(--rpx) * 24);
  display: flex;
  flex-direction: column;
  align-items: center;
}
[data-route="pkgMentor/mentor/center"] .qr-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #2b2b2b;
}
[data-route="pkgMentor/mentor/center"] .qr-img {
  width: calc(var(--rpx) * 400);
  height: calc(var(--rpx) * 400);
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 16);
  background: #f6f6f6;
}
[data-route="pkgMentor/mentor/center"] .qr-tip {
  font-size: calc(var(--rpx) * 28);
  color: #e08a2e;
  font-weight: 500;
}
[data-route="pkgMentor/mentor/center"] .qr-note {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #8a8a8a;
}
[data-route="pkgMentor/mentor/center"] .qr-btn {
  margin-top: calc(var(--rpx) * 28);
  width: 100%;
}
[data-route="pkgMentor/mentor/center"] /* v4.86.140 老师中心骨架（点击就开）：数据没回来先给框架，别让用户对着等待卡发呆。
   灰块 + 呼吸动画；不出现任何红字。 */
.sk {
  height: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 8);
  background: #ececec;
  animation: sk-breath 1.2s ease-in-out infinite;
}
[data-route="pkgMentor/mentor/center"] .sk-name {
  width: 40%;
}
[data-route="pkgMentor/mentor/center"] .sk-num {
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 32);
  margin: 0 auto calc(var(--rpx) * 12);
}


@keyframes sk-breath {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.45;
  }
}
[data-route="pkgMentor/mentor/center"] /* v4.86.216 木哥令③：不能接单状态卡（顶部优先展示，红调） */
.center-guard-line {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #8a4a4a;
}
[data-route="pkgMentor/mentor/center"] .center-guard-btn {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  line-height: 2.2;
  background: #d54941;
  color: #ffffff;
}
[data-route="pkgMentor/mentor/center"] /* v4.86.217 木哥令：自己不在挑老师的名单里 —— 老师核对自己那一页的门（center-head 里） */
.center-mine-link {
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/mentor/center"] /* v4.86.230（木哥令）：辞去老师身份卡 —— 主键沿用 .btn-primary（全站最重的动作），
   审核中换成 .btn-ghost（撤回不是重动作）。只补两句说明的行距。 */
.resign-card {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/center"] .resign-note {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
}
[data-route="pkgMentor/mentor/center"] .resign-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/center"] /* v4.86.267：班级点评入口 */
.class-entry-sub {
  margin-top: calc(var(--rpx) * 8);
  line-height: 1.6;
}
[data-route="pkgMentor/mentor/center"] /* v4.86.436（木哥令：「老师页面的班级点评的新标志也不醒目」）——
   与首页同款：米白底棕字改成实心暖橙 + 白字 + 加粗（两支同源，别再各画一份）。 */
.class-entry-new {
  margin-left: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #ff6a00;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(255, 106, 0, 0.3);
  font-size: calc(var(--rpx) * 20);
  font-weight: 600;
  color: #ffffff;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pkgMentor/mentor/center"] .class-entry-link {
  margin-top: calc(var(--rpx) * 18);
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
  text-align: center;
}
[data-route="pkgMentor/mentor/center"] /* ---- 学生留言（v4.86.388 · 384 号令）---- */
.note-cell {
  display: block;
}
[data-route="pkgMentor/mentor/center"] .note-text {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  color: #111111;
  line-height: 1.5;
  word-break: break-all;
}
[data-route="pkgMentor/mentor/center"] .note-time {
  font-size: calc(var(--rpx) * 20);
  white-space: nowrap;
}
[data-route="pkgMentor/mentor/center"] .note-mark {
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
  white-space: nowrap;
}
[data-route="pkgMentor/mentor/center"] /* ── 班级档位折叠区（木哥 2026-10-23 14:1x「放到管理页并折叠起来」）──
   收起时只占一行；展开只有三行摘要 + 一个出口，价目本体在 tclass/plan 页。
   刻意做得「安静」：不给它大色块、不给它红点，老师不看也不碍事。 */
.tier-fold-now {
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
  color: #7d8f85;
}
[data-route="pkgMentor/mentor/center"] .tier-fold-body {
  margin-top: calc(var(--rpx) * 16);
  padding-top: calc(var(--rpx) * 16);
  border-top: calc(var(--rpx) * 2) solid #f0e6d2;
}
[data-route="pkgMentor/mentor/center"] .tier-fold-line {
  margin-bottom: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  /* v4.86.494：这一块是价目入口，跟价目页/开通弹窗同一套金皮（主体仍是功能页的绿） */
  color: #a8792c;
}
[data-route="pkgMentor/mentor/center"] .tier-fold-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding: calc(var(--rpx) * 12) 0;
}
[data-route="pkgMentor/mentor/center"] .tier-fold-n {
  font-size: calc(var(--rpx) * 24);
  color: #16301f;
}
[data-route="pkgMentor/mentor/center"] .tier-fold-cur {
  font-size: calc(var(--rpx) * 20);
  color: #a8792c;
}
[data-route="pkgMentor/mentor/center"] .tier-fold-p {
  font-size: calc(var(--rpx) * 24);
  color: #16301f;
}
[data-route="pkgMentor/mentor/center"] .tier-fold-per {
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgMentor/mentor/center"] .tier-fold-btn {
  margin-top: calc(var(--rpx) * 12);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  border-radius: calc(var(--rpx) * 10);
  background: #fffdf6;
  border: calc(var(--rpx) * 2) solid #c9a15c;
  font-size: calc(var(--rpx) * 24);
  color: #a8792c;
}
[data-route="pkgMentor/mentor/center"] /* ── 点评包（10 次 · 8 折）提醒（木哥 2026-10-23 15:1x③「在老师这是点评费用的位置提醒说明」）
   位置就压在「每单点评收多少颗墨宝」输入框下面 —— 老师改价的那一刻，最该看见这条。
   刻意做得安静：底色浅金、字号 24、不加红点。 */
.pack-note {
  margin-top: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10);
  background: #fdf8ee;
}
[data-route="pkgMentor/mentor/center"] .pack-note-t {
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  color: #8a6a24;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pkgMentor/mentor/center"] .pack-note-d {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.65;
  color: #6b5a35;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pkgMentor/mentor/center"] .pack-note-ok {
  color: #0a7a3d;
  margin-bottom: 0;
}
[data-route="pkgMentor/mentor/center"] .pack-note-btn {
  margin-top: calc(var(--rpx) * 8);
  height: calc(var(--rpx) * 68);
  line-height: calc(var(--rpx) * 68);
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #a8792c;
  font-size: calc(var(--rpx) * 24);
  color: #8a6a24;
}
[data-route="pkgMentor/mentor/center"] .pack-note-off {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #9a8b74;
  text-decoration: underline;
}
[data-route="pkgMentor/mentor/center"] /* v4.86.450：留言下的「回一句」 */
.note-reply {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #8a6320;
  text-align: right;
}



/* ---- pkgMentor/mentor/task.wxss ---- */
[data-route="pkgMentor/mentor/task"] .shot {
  width: 100%;
  height: calc(var(--rpx) * 520);
  border-radius: calc(var(--rpx) * 16);
  background: #f7f7f7;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
[data-route="pkgMentor/mentor/task"] .shot-img {
  width: 100%;
  height: 100%;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.182：视频动作纠正单的播放器（与照片同一块 .shot 容器） */
.shot-video {
  width: 100%;
  height: 100%;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.54：取图失败的档位短码（见 task.js#photoErrCode）。故意做得很轻 ——
   只有排障时才需要它，不该跟「点此重试」那行字抢注意力。 */
.photo-code {
  font-size: calc(var(--rpx) * 20);
  color: #bbbbbb;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.59：错误码 + 原文头 60 字（只在出错那一下出现）——
 * 一张截图 = 一行诊断数据，抛错和显示失败当场分开 */
.photo-err-detail {
  display: block;
  font-size: calc(var(--rpx) * 20);
  color: #bbbbbb;
  margin-top: calc(var(--rpx) * 8);
  word-break: break-all;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.68：照片显示失败时的「1×1 对照」入口（A 组 §六.3）——
 * 只在 canCtrl1x1 为真时出现，正常路径上不占位、不干扰木哥 */
.ctrl-1x1 {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 1) dashed #cfcfcf;
  border-radius: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.68：对照结论（结果行）—— 与入口同一外壳，实线 + 深一点的颜色，别和入口混淆 */
.ctrl-1x1.ctrl-verdict {
  border-style: solid;
  color: #666666;
  text-align: left;
}
[data-route="pkgMentor/mentor/task"] .note {
  margin-top: calc(var(--rpx) * 26);
  padding-top: calc(var(--rpx) * 22);
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pkgMentor/mentor/task"] .note-label {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgMentor/mentor/task"] .note-text {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgMentor/mentor/task"] /* v4.86.47：约单留言 —— 左侧一道主题绿竖条，一眼看得出「这是家长点给我的」 */
.invite-note-text {
  padding-left: calc(var(--rpx) * 20);
  border-left: calc(var(--rpx) * 6) solid #07c160;
  line-height: 1.7;
}
[data-route="pkgMentor/mentor/task"] /* v7.0.028：点评助手拟给家长的回法 —— 与作业点评分开摆，只给老师看、不进孩子的点评 */
.note-copy {
  margin-top: calc(var(--rpx) * 10);
  display: inline-block;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pkgMentor/mentor/task"] .review {
  position: relative;
  font-size: calc(var(--rpx) * 32);
  line-height: 1.9;
  white-space: pre-wrap;
  color: #191919;
  /* v4.86.301：完整复看卡 —— 底色/圆角/内距与学生端点评块同款 */
  background: #f7faf8;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/task"] /* v4.86.62：回看时提示这条点评带了原音
   v4.86.91：色值收到规范里允许的那一档绿（原来用的是自造的另一个绿） */
.review-audio-hint {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgMentor/mentor/task"] .review-area {
  min-height: calc(var(--rpx) * 220);
}
[data-route="pkgMentor/mentor/task"] /* v4.86.588（木哥 2026-11-01 令·点评框滑动穿透）：框改成定高内滚 ——
 * 原来 min-height calc(var(--rpx) * 220) 随文字撑高，整页滚 = 框从不自己滚，老师调预点评稿
 * 时一划整页就跑。现在钉住高度（约五行），字多了框内自己出滚条：
 * 有光标时手指上下滑，滚的是框里的文字，整页由 page-meta overflow 锁住不动。 */
.review-area-scroll {
  height: calc(var(--rpx) * 400);
  min-height: 0;
}
[data-route="pkgMentor/mentor/task"] .char-count {
  margin-top: calc(var(--rpx) * 10);
  text-align: right;
}
[data-route="pkgMentor/mentor/task"] .submit-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/task"] /* ---- v4.86.105（A 组「功课即敲门」）：点评发出后那一帧（sent 卡） ----
 * 全站按钮只有两种脸：绿色主按钮、白底描边次按钮（doc 灰白规范）。
 * 「回老师中心」= 这一步的主按钮；「微信里跟家长说一句」是次按钮。 */
.sent-card { text-align: center; }
[data-route="pkgMentor/mentor/task"] .sent-ok { font-size: calc(var(--rpx) * 28); color: #07c160; font-weight: 600; }
[data-route="pkgMentor/mentor/task"] .sent-row {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) 0;
  border-radius: calc(var(--rpx) * 10);
  background: #f2f2f2;
  font-size: calc(var(--rpx) * 28);
  color: #333333;
}
[data-route="pkgMentor/mentor/task"] .sent-back {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 22) 0;
  border-radius: calc(var(--rpx) * 10);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
}
[data-route="pkgMentor/mentor/task"] .sent-row.button-hover { background: #e6e6e6; }
[data-route="pkgMentor/mentor/task"] .sent-back.button-hover { background: #06ad56; }
[data-route="pkgMentor/mentor/task"] /* ---- v4.86.304（木哥 304 号令）：老师自拍作业的班级单（sent 卡内） ----
 * 「已直接发进学员账号」一行只报结果（绿字小一号）；
 * 「发分享卡给家长」是真分享键（open-type=share），脸与次按钮一致。 */
.sent-cls-ok {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgMentor/mentor/task"] .sent-share-btn {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) 0;
  border-radius: calc(var(--rpx) * 10);
  background: #f2f2f2;
  font-size: calc(var(--rpx) * 28);
  color: #333333;
  line-height: 1.4;
}
[data-route="pkgMentor/mentor/task"] .sent-share-btn::after { border: none; }
[data-route="pkgMentor/mentor/task"] .sent-share-btn.button-hover { background: #e6e6e6; }
[data-route="pkgMentor/mentor/task"] /* ---- v4.86.315（木哥 315 号令②）：sent 卡里的批注图预览（学员看到的样子） ----
 * 缩略图限高不占屏；生成中给 loading-bar；说明行用 calc(var(--rpx) * 20) 灰字（字号只认五档）。 */
.sent-preview { margin-top: calc(var(--rpx) * 20); }
[data-route="pkgMentor/mentor/task"] .sent-preview-img { width: 100%; height: calc(var(--rpx) * 400); border-radius: calc(var(--rpx) * 12); background: #f7f7f7; }
[data-route="pkgMentor/mentor/task"] .sent-preview-loading { padding: calc(var(--rpx) * 40) 0; }
[data-route="pkgMentor/mentor/task"] .sent-preview-cap { margin-top: calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 20); color: #8a8f96; }
[data-route="pkgMentor/mentor/task"] .err {
  margin-top: calc(var(--rpx) * 16);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgMentor/mentor/task"] .err.left {
  text-align: left;
}
[data-route="pkgMentor/mentor/task"] /* ---- 和家长交流（v4.6） ----
 * v4.86.91：去掉「浅绿底 + 绿字」—— 全站按钮只有两种脸：绿色主按钮、白底描边次按钮
 *（doc 灰白规范：颜色只留给主按钮与错误）。这里只留布局，观感交给全局 .btn-ghost。 */
.chat-btn {
  margin-top: calc(var(--rpx) * 18);
}
[data-route="pkgMentor/mentor/task"] /* 圈画 + 交流 双按钮（v4.7） */
.row-btns {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/task"] .row-btns .chat-btn {
  flex: 1;
  margin: 0;
}
[data-route="pkgMentor/mentor/task"] /* v4.83.5：点评输入框上方一行（提示语 + 🎤说话） */
.area-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/mentor/task"] .area-hint {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.35：圈画 + 原音（随点评一起发的两个附件）
 * v4.86.91：收到微信口径 —— 浅灰胶囊（#f7f7f7 / #ececec / calc(var(--rpx) * 999)，与「按住 说话」同一族），
 * 选中不给整块色底，只把边和字变绿（微信里「已选中」就是用主色说事）。 */
.attach-row {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/task"] .attach-item {
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 26);
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 999);
  background: #f7f7f7;
  transition: background 0.12s ease;
}
[data-route="pkgMentor/mentor/task"] .attach-item.button-hover {
  background: #ececec;
}
[data-route="pkgMentor/mentor/task"] .attach-on {
  border-color: #07c160;
  background: #ffffff;
}
[data-route="pkgMentor/mentor/task"] .attach-on .attach-t {
  color: #07c160;
}
[data-route="pkgMentor/mentor/task"] .attach-rec {
  border-color: #fa5151;
  background: #ffffff;
}
[data-route="pkgMentor/mentor/task"] .attach-t {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgMentor/mentor/task"] /* 行尾轻操作（删除录音）：纯文字，无底无框，给足点击热区 */
.attach-del {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 12);
}
[data-route="pkgMentor/mentor/task"] /* v4.86.86：「说话/重录」按键单独一行（独立大按钮已拆）
   v4.86.88（木哥 23:3x 第 2 条）：删除挪回提示行行尾（微信的行尾轻操作），
   按键那一行只留按键自己。
   v4.86.95（木哥 01:1x 第 2 条）：按键不再撑满整行，只按「按住 说话」四个字的
   宽度来 —— 组件根是 width:100%，所以这里给宿主一个下限（4 字 + 内边距），
   上限由文案自己撑开（留过原音时是「按住 重新说话」，六个字也放得下）。 */
.vb-row {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/mentor/task"] .vb-4ch {
  min-width: calc(var(--rpx) * 216);
  width: auto;
}
[data-route="pkgMentor/mentor/task"] .area-head .attach-del {
  margin-left: calc(var(--rpx) * 16);
  flex: none;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.81：和家长交流的未读角标
   v4.86.85（木哥 22:3x「右上角未读显示不完整」）：button 自带 overflow:hidden，
   角标挂在按钮外沿（top/right 负值）会被裁掉一半 ⇒ 显式放开；位置也往回收一点，
   别贴着圆角边。 */
.chat-parent {
  position: relative;
  overflow: visible;
}
[data-route="pkgMentor/mentor/task"] .chat-unread {
  position: absolute;
  top: calc(var(--rpx) * -10);
  right: calc(var(--rpx) * -10);
  flex: none;
  min-width: calc(var(--rpx) * 34);
  height: calc(var(--rpx) * 34);
  padding: 0 calc(var(--rpx) * 8);
  box-sizing: border-box;
  border-radius: calc(var(--rpx) * 20);
  background: #fa5151;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 34);
  text-align: center;
}
[data-route="pkgMentor/mentor/task"] /* ---- v4.86.195 边看边讲 · 视频动作纠正组件 ---- */
.vc-card {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  background: #eef7ef;
  border: calc(var(--rpx) * 2) solid #cde8d0;
}
[data-route="pkgMentor/mentor/task"] .vc-head {
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/task"] .vc-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #1f7a35;
}
[data-route="pkgMentor/mentor/task"] .vc-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #6b9073;
  line-height: 1.5;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.328（木哥令③）：边看边讲按键统一微信生态风格 ——
 * 主键与全站 .btn-primary 同口径（圆角 calc(var(--rpx) * 10)、#07c160、白字 500、calc(var(--rpx) * 32)），
 * 不再自造 calc(var(--rpx) * 40) 胶囊；重录/撤下改白底细边小键（.btn-ghost 同族）。 */
.vc-start {
  margin-top: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 24) 0;
  border-radius: calc(var(--rpx) * 10);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  text-align: center;
  line-height: 1.4;
}
[data-route="pkgMentor/mentor/task"] .vc-preview {
  width: 100%;
  height: calc(var(--rpx) * 380);
  border-radius: calc(var(--rpx) * 12);
  background: #000000;
}
[data-route="pkgMentor/mentor/task"] .vc-done-row {
  margin-top: calc(var(--rpx) * 14);
  display: flex;
  align-items: center;
}
[data-route="pkgMentor/mentor/task"] .vc-ok {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  color: #1f7a35;
}
[data-route="pkgMentor/mentor/task"] .vc-redo {
  font-size: calc(var(--rpx) * 24);
  color: #191919;
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 24);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgMentor/mentor/task"] .vc-del {
  color: #999999;
}
[data-route="pkgMentor/mentor/task"] /* ---- v4.86.432（木哥令 · 配截图）：纠正视频「还没发出去」那一档 ----
   合成好只是手上有片子，孩子那边要等这一下确认才收得到。提示用暖色（不是错误红，
   也不是成功绿）—— 它是「还差一步」，不是失败；主键沿用 .vc-start 的绿，
   发送中压暗防连点。 */
.vc-stage-tip {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  color: #a4641a;
  line-height: 1.5;
}
[data-route="pkgMentor/mentor/task"] .vc-stage-sub {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #6b9073;
  line-height: 1.5;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.482：只发了纠正视频的单 —— 「视频已发、正文待写」这一行。
   暖色（不是成功绿）与 .vc-stage-tip 同一套语义：还差一步，不是失败。 */
.vc-only-tip {
  margin: calc(var(--rpx) * 18) 0 calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 16);
  background: #fdf6e8;
  border: calc(var(--rpx) * 2) solid #f0e0c0;
  font-size: calc(var(--rpx) * 24);
  color: #a4641a;
  line-height: 1.5;
}
[data-route="pkgMentor/mentor/task"] .vc-start-off {
  background: #b7dfc6;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.199：视频动作纠正从作业卡里搬出来单独成卡 —— 卡片壳复用 .card，
 * 这里只补与上一张卡的间距和卡内留白（原来 vc-card 自带的那层浅绿底取消，
 * 卡里直接放标题/播放器/按钮，跟其他卡同一个视觉口径）。 */
.vc-standalone {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/task"] .vc-standalone .vc-head {
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/task"] /* ---- v4.86.229 木哥令：主动发起视频示范（老师端卡片） ---- */
.demo-card {
  margin-top: calc(var(--rpx) * 20);
  position: relative;
}
[data-route="pkgMentor/mentor/task"] /* v7.0.212：卡片随木哥令搬进「我的点评」卡内（大绿键上方）。
   嵌套态不再套一层白卡（白底白边看不见，只剩内缩，像缩在里头），
   改成一条细分隔线 + 透明底 —— 内容与正文同宽，微信生态的轻。 */
.card .demo-card {
  margin-top: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 16) 0 0;
  background: transparent;
  border-radius: 0;
  border-top: calc(var(--rpx) * 1) solid #f0e6d8;
}
[data-route="pkgMentor/mentor/task"] /* v7.0.107（木哥令）：卡片右上角「推荐」小角标 —— 出现一会儿自动淡出：
   0~3s 常亮，3~4s 淡到透明并停在透明；纯 CSS，不占点击、不占布局。
   点进这页的老师每次都能看见这一眼，看久了它自己让开。 */
.demo-rec-badge {
  position: absolute;
  top: calc(var(--rpx) * 16);
  right: calc(var(--rpx) * 20);
  z-index: 2;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  font-weight: 600;
  line-height: 1.5;
  pointer-events: none;
  animation: demoRecFade 4s ease forwards;
}


@keyframes demoRecFade {
  0%, 75% { opacity: 1; }
  100% { opacity: 0; }
}
[data-route="pkgMentor/mentor/task"] /* v4.86.276（木哥 00:4x 令「发起视频示范按键，高度和其他按键统一一下 ui」）：
   原来这里自己定 height:calc(var(--rpx) * 88) + flex 居中，叠上 .btn-primary 的 padding calc(var(--rpx) * 24) 0
   后整颗键被撑到 calc(var(--rpx) * 130)+，比「放大圈画 / 点评结束发给学员/家长」高出一截。
   现在尺寸全交全站 .btn-primary / .btn-ghost（padding calc(var(--rpx) * 24) 0，与其余按键同高），
   这里只管间距。 */
.demo-go {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/task"] .demo-state {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #07c160;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.302（木哥令③）：「等学员同意」状态行 —— 右侧一颗刷新键，
   单独刷这一单学员的确认回复（不用整页重进） */
.demo-state-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgMentor/mentor/task"] .demo-refresh {
  flex: none;
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #06ad56;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 1) solid #bfe8d2;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pkgMentor/mentor/task"] /* v4.86.280（木哥令）：tasked 态等稿进度条 —— 垫底爬升封顶 95，到稿才满格（不骗人）
 * v7.0.152（木哥令）：四段节点（提交/仔细点评/核验点评/发出）+ 飞火流星条 ——
 * 流星头挂在条前端（白心 + 绿晕），拖尾白光一道道往前冲；240 秒标准档节奏。 */
.hire-wait {
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/mentor/task"] .hire-steps {
  display: flex;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/task"] .hire-step {
  flex: 1;
  text-align: center;
}
[data-route="pkgMentor/mentor/task"] .hire-dot {
  width: calc(var(--rpx) * 14);
  height: calc(var(--rpx) * 14);
  border-radius: 50%;
  background: #d7e2db;
  margin: 0 auto calc(var(--rpx) * 6);
}
[data-route="pkgMentor/mentor/task"] .hire-step.is-done .hire-dot {
  background: #07c160;
}
[data-route="pkgMentor/mentor/task"] .hire-step.is-cur .hire-dot {
  background: #ff9d00;
  animation: hire-dot-fire 1.2s ease-in-out infinite;
}
[data-route="pkgMentor/mentor/task"] /* v7.0.168：当前段的火种脉冲（与金黄条同色系） */
@keyframes hire-dot-fire {
  0%, 100% { box-shadow: 0 0 0 calc(var(--rpx) * 4) rgba(255, 157, 0, 0.22); }
  50% { box-shadow: 0 0 0 calc(var(--rpx) * 9) rgba(255, 119, 0, 0.06); }
}
[data-route="pkgMentor/mentor/task"] .hire-step-name {
  font-size: calc(var(--rpx) * 20);
  color: #9aa8a0;
}
[data-route="pkgMentor/mentor/task"] .hire-step.is-done .hire-step-name {
  color: #0a7d43;
  font-weight: bold;
}
[data-route="pkgMentor/mentor/task"] .hire-step.is-cur .hire-step-name {
  color: #b26a00;
  font-weight: bold;
}
[data-route="pkgMentor/mentor/task"] /* v7.0.168（木哥令）：绿条在白卡上看不清 —— 轨道改夜色底，金黄火焰条才压得住 */
/* v7.0.175（木哥令①）：轨道不再裁切——流星头光晕要溢出条上下以透明压在最上层 */
.hire-wait-track {
  position: relative;
  height: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 7);
  background: linear-gradient(180deg, #232a36, #141a24);
  box-shadow: inset 0 calc(var(--rpx) * 2) calc(var(--rpx) * 6) rgba(0, 0, 0, 0.45);
}
[data-route="pkgMentor/mentor/task"] /* v7.0.168（木哥令「飞火流星加金黄色，要火焰的夜色效果」）：
   暗芯金焰 —— 根部橙红、中段金、前锋亮黄白，自带火光外晕 */
.hire-wait-bar {
  position: relative;
  height: 100%;
  border-radius: calc(var(--rpx) * 7);
  background: linear-gradient(90deg, #d2570a, #ff9d00 30%, #ffc93c 55%, #ffe27a 80%, #fff3c4);
  box-shadow: 0 0 calc(var(--rpx) * 10) rgba(255, 157, 0, 0.55), 0 0 calc(var(--rpx) * 22) rgba(255, 119, 0, 0.3);
  transition: width 0.9s ease;
  /* v7.0.175：拖尾光带留在条身里冲，裁切收归条身（条自己的外晕照常出框） */
  overflow: hidden;
}
[data-route="pkgMentor/mentor/task"] /* v7.0.175（木哥令①）：流星头座标——骑在条最前端（left 跟条同步动），
   只当定位销不裁切；头本体比条大得多，光晕透明溢出轨道上下 */
.hire-head {
  position: absolute;
  top: 50%;
  width: 0;
  height: 0;
  z-index: 5;
  transition: left 0.9s ease;
  pointer-events: none;
}
[data-route="pkgMentor/mentor/task"] /* 拖尾：条前端的白光带，一道道往流星头方向冲 */
.hire-wait-bar::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  width: calc(var(--rpx) * 96);
  background: linear-gradient(90deg, rgba(255, 214, 120, 0), rgba(255, 244, 214, 0.8));
  animation: hire-streak 1.3s linear infinite;
}
[data-route="pkgMentor/mentor/task"] /* v7.0.175（木哥令①）：流星头破格放大——白心金焰火种 calc(var(--rpx) * 44)（条身的 3 倍多），
   三层外晕半径同步加大，透明光晕漫过轨道上下压在最上层，火焰感更冲 */
.hire-comet {
  position: absolute;
  left: calc(var(--rpx) * -22);
  top: calc(var(--rpx) * -22);
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  border-radius: 50%;
  background: radial-gradient(circle at 40% 40%, #fffbe8, #ffd76a 60%, #ff9d00);
  box-shadow:
    0 0 calc(var(--rpx) * 14) calc(var(--rpx) * 6) rgba(255, 244, 200, 0.95),
    0 0 calc(var(--rpx) * 30) calc(var(--rpx) * 13) rgba(255, 170, 0, 0.7),
    0 0 calc(var(--rpx) * 54) calc(var(--rpx) * 24) rgba(255, 110, 0, 0.35);
  animation: hire-comet 1.1s ease-in-out infinite;
}
[data-route="pkgMentor/mentor/task"] /* 火舌：头顶一撮向上窜的小火焰，随呼吸摆动——比光晕更像火 */
.hire-comet::before {
  content: '';
  position: absolute;
  left: 50%;
  top: calc(var(--rpx) * -18);
  width: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 26);
  margin-left: calc(var(--rpx) * -8);
  border-radius: 50% 50% 50% 50% / 62% 62% 38% 38%;
  background: linear-gradient(180deg, rgba(255, 244, 200, 0.95), rgba(255, 170, 0, 0.55) 62%, rgba(255, 110, 0, 0));
  transform-origin: 50% 100%;
  animation: hire-flame 0.9s ease-in-out infinite;
}


@keyframes hire-streak {
  0% { transform: translateX(calc(var(--rpx) * 48)); opacity: 0; }
  35% { opacity: 1; }
  100% { transform: translateX(0); opacity: 0.9; }
}


@keyframes hire-comet {
  0%, 100% { transform: scale(0.82); opacity: 0.85; }
  50% { transform: scale(1.18); opacity: 1; }
}
[data-route="pkgMentor/mentor/task"] /* v7.0.175：火舌摆动 */
@keyframes hire-flame {
  0%, 100% { transform: scaleY(0.78) skewX(-6deg); opacity: 0.8; }
  50% { transform: scaleY(1.16) skewX(5deg); opacity: 1; }
}
[data-route="pkgMentor/mentor/task"] .hire-wait-text {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgMentor/mentor/task"] /* v7.0.212（木哥令②）：等稿固定话术 —— 时长 + 可离开 + 从「我的点评」回来 */
.hire-wait-leave {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #a5854f;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.272：批注图画布 —— 藏屏外的 1×1 工作画布（与 detail 页 share-canvas 同款姿势） */
.mark-canvas {
  position: fixed;
  left: 0;
  top: 0;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
  z-index: -1;
}
[data-route="pkgMentor/mentor/task"] .am {
  display: flex;
  align-items: flex-start;
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pkgMentor/mentor/task"] .am-dot {
  width: calc(var(--rpx) * 18);
  height: calc(var(--rpx) * 18);
  border-radius: 50%;
  margin: calc(var(--rpx) * 10) calc(var(--rpx) * 12) 0 0;
  flex-shrink: 0;
}
[data-route="pkgMentor/mentor/task"] .am-red { background: #e5484d; }
[data-route="pkgMentor/mentor/task"] .am-blue { background: #3b82f6; }
[data-route="pkgMentor/mentor/task"] .am-green { background: #16a34a; }
[data-route="pkgMentor/mentor/task"] .am-body { flex: 1; }
[data-route="pkgMentor/mentor/task"] .am-text { font-size: calc(var(--rpx) * 24); color: #233; }
[data-route="pkgMentor/mentor/task"] .am-note { font-size: calc(var(--rpx) * 20); color: #7d8f85; margin-top: calc(var(--rpx) * 4); }
[data-route="pkgMentor/mentor/task"] .am-del {
  font-size: calc(var(--rpx) * 20);
  color: #b91c1c;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 12);
  flex-shrink: 0;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.286（木哥令③）：「我的点评」卡上的点评助手按键 */
.assist-invite {
  margin: calc(var(--rpx) * 4) 0 calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/task"] .assist-invite-note {
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
  margin-bottom: calc(var(--rpx) * 10);
}
[data-route="pkgMentor/mentor/task"] .assist-invite-btn {
  width: 100%;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgMentor/mentor/task"] /* v4.86.296（木哥令④）：已点评单的「复看修改」入口（点评完成后可改可重发） */
.reopen-link {
  color: #06ad56;
  font-size: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 4);
}
[data-route="pkgMentor/mentor/task"] /* ---- v4.86.301（木哥令①）：点评完的完整复看，与学生端同款 ----
   （.review 容器的底色/圆角/内距并进顶部原有那条，这里不再重复定义） */
.review-text {
  white-space: pre-wrap; /* v4.86.589：同上，复看分支保换行 */
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #1f2d27;
  white-space: pre-wrap;
}
[data-route="pkgMentor/mentor/task"] .task-read {
  display: inline-block;
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #06ad56;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 1) solid #bfe8d2;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pkgMentor/mentor/task"] .task-read-on {
  color: #d97b00;
  border-color: #f0d3a8;
}
[data-route="pkgMentor/mentor/task"] .task-notes {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/task"] .task-notes-head {
  font-size: calc(var(--rpx) * 24);
  color: #51665c;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pkgMentor/mentor/task"] .task-note {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 12) 0;
  border-bottom: calc(var(--rpx) * 1) solid #eef2ef;
}
[data-route="pkgMentor/mentor/task"] .task-note:last-child {
  border-bottom: none;
}
[data-route="pkgMentor/mentor/task"] .task-note-no {
  flex: none;
  font-size: calc(var(--rpx) * 24);
  color: #06ad56;
  margin-right: calc(var(--rpx) * 16);
  padding-top: calc(var(--rpx) * 2);
}
[data-route="pkgMentor/mentor/task"] .task-note-text {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  color: #1f2d27;
  line-height: 1.6;
  white-space: pre-wrap;
}
[data-route="pkgMentor/mentor/task"] /* ---- v4.86.301（木哥令②）：纠正视频合成失败的重试行 ---- */
.vc-builderr {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 8) 0;
}
[data-route="pkgMentor/mentor/task"] .vc-builderr-text {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  color: #c6482f;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.318（木哥 318 号令②）：sent 卡「分享卡生成中」那一行 ——
   不是键，只是状态字（旧口径拿 toast 代答，老师以为分享没成）。 */
.sent-share-wait {
  color: #888888;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.321（木哥 321 号令③）：批注图重试键 —— 淡绿小字行，贴在作业图下 */
.mark-retry {
  margin: calc(var(--rpx) * 12) 0 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
  background: #eaf6ef;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/task"] /* v4.86.322（木哥令）：圈点叠层 —— 学生端合成图的等价预览（零 canvas）。
   容器不锁高（图 widthFix 撑开），叠层百分比才与图片显示区对齐。 */
.shot-mark {
  position: relative;
  width: 100%;
  border-radius: calc(var(--rpx) * 16);
  overflow: hidden;
  background: #f7f7f7;
}
[data-route="pkgMentor/mentor/task"] .shot-img-wide {
  width: 100%;
  height: auto;
  display: block;
}
[data-route="pkgMentor/mentor/task"] .mk-ov {
  position: absolute;
  border: calc(var(--rpx) * 4) solid #fa5151;
  border-radius: calc(var(--rpx) * 8);
  opacity: 0.72;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgMentor/mentor/task"] .mk-ov-badge {
  /* v4.86.381（377 号令）：♪ 从框中心挪到**右上角** ——
     木哥发图令「图标的位置一定要在圈点的右上角，不要在圈点的中间，会遮挡内容的」。
     旧口径靠父级 flex 居中，♪ 正好压在被圈的字上；改绝对定位骑在圈框的角线上
     （外探 calc(var(--rpx) * 10)），被圈的内容一寸不遮，压住的那点只是圈线本身。
     放大层（mark-zoom）与卡片共用这条规则，一次全改。 */
  position: absolute;
  top: calc(var(--rpx) * -10);
  right: calc(var(--rpx) * -10);
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  border-radius: 50%;
  /* v4.86.362（359 号令）：固定绿降为兜底色 —— wxml 内联 background 已带
     这一笔圈点自己的颜色（木哥「圈点线条什么颜色，声音图标就什么颜色」，
     356 号令的固定绿口径废止） */
  /* v4.86.358（356 号令②）：♪ 固定微信绿（#07c160，与学生端 note-dot-audio 同色）——
     木哥「声音符号也变了，应该是绿色的声音符号」。原来跟随圈点颜色（红笔=红♪），废。 */
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.358（356 号令②）：合成批注图打头时只叠 ♪ 不叠几何框 ——
   圈画笔迹已经画在图里，再叠一层方框就是「笔迹变了」 */
.mk-ov-dot {
  border: none;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.361（358 号令）：pen 手划的轨迹点串 —— 沿原笔迹铺开的小圆点，
   替掉 v4.86.322 的外接方框（木哥「圈点的地方全部变成方框式…要保留
   原来的手划的轨迹」）。颜色由内联 background 带这一笔自己的 color；
   直径 calc(var(--rpx) * 10) ≈ canvas 线宽的屏幕观感，透明度与合成图同一口径（0.4 档）。 */
.mk-ov-trace-dot {
  position: absolute;
  width: calc(var(--rpx) * 10);
  height: calc(var(--rpx) * 10);
  margin: calc(var(--rpx) * -5) 0 0 calc(var(--rpx) * -5);
  border-radius: 50%;
  opacity: 0.45;
  pointer-events: none;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.362（359 号令）：有原音的 ♪ 常驻闪动（任何时候都在闪）；
   keyframes 全站共用 app.wxss 的 voice-flash */
.mk-ov-flash {
  animation: voice-flash 1.4s ease-in-out infinite;
}
[data-route="pkgMentor/mentor/task"] /* ---- v4.86.323（木哥发图三件：颜色/样子不对、没声音、放大只剩圈点）----
   ① 圈渲染成圆：oval/circle 的框在 js 里追加 border-radius:50% 内联；
   ② ♪ 可点出声：响着的徽标降透明度示意；逐处点评行右侧配 ♪/停；
   ③ 放大开本页全屏叠层（原图 + 同一份 markOverlay），不再赌 canvas 合成图。 */
.mk-ov-badge-on {
  opacity: 0.55;
}
[data-route="pkgMentor/mentor/task"] .task-note-play {
  flex: none;
  margin-left: calc(var(--rpx) * 12);
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  border-radius: 50%;
  background: #06ad56;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgMentor/mentor/task"] .task-note-play-on {
  opacity: 0.55;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.372（368 号令）：放大层去黑底 —— 改微信生态浅色页（#f7f7f7），
   与全站页面同底色；收起键从半透明白字改实心绿胶囊（白字+投影），
   一眼能找到；提示行从灰白改深灰绿（浅底上看得清）。 */
.mark-zoom {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 1200;
  background: #f7f7f7;
}
[data-route="pkgMentor/mentor/task"] .mark-zoom-close {
  position: absolute;
  top: calc(var(--rpx) * 24);
  right: calc(var(--rpx) * 24);
  z-index: 10;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 36);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 14) rgba(7, 193, 96, 0.35);
}
[data-route="pkgMentor/mentor/task"] /* v7.0.125（木哥令）：放大层从竖向 scroll-view 换成 movable-area + movable-view
   —— 双指捏合（1~6 倍）、单指拖动、双击 2.5 倍；底图按屏宽铺满、比例不变形 */
.mark-zoom-area {
  width: 100%;
  height: 100%;
  overflow: hidden;
}
[data-route="pkgMentor/mentor/task"] .mark-zoom-mv {
  width: 100%;
}
[data-route="pkgMentor/mentor/task"] .mark-zoom-img {
  display: block;
  width: 100%;
  height: 100%;
}
[data-route="pkgMentor/mentor/task"] .mark-zoom-shot {
  position: relative;
  width: 100%;
  border-radius: calc(var(--rpx) * 10);
  overflow: hidden;
  background: #ffffff;
}
[data-route="pkgMentor/mentor/task"] .mark-zoom-tip {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(var(--rpx) * 20);
  z-index: 10;
  text-align: center;
  color: #7a9a86;
  font-size: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 12) 0;
  background: rgba(247, 247, 247, 0.88);
}
[data-route="pkgMentor/mentor/task"] /* v4.86.330（木哥 330 号令）：编辑态常驻「学员看到的样子」实时预览卡 */
.live-preview {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 1) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 12);
  background: #fafafa;
}
[data-route="pkgMentor/mentor/task"] .live-preview-title {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  font-weight: 600;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/mentor/task"] .live-preview-img {
  width: 100%;
  height: calc(var(--rpx) * 320);
  border-radius: calc(var(--rpx) * 8);
  background: #ffffff;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/mentor/task"] .live-preview-text {
  /* v4.86.589：预览兜底分支保换行 —— 池稿分段缺席时直接渲染整稿，
   * view 默认 white-space:normal 会把 \n 折成空格，木哥截图里的「挤成一堆」就是它 */
  white-space: pre-wrap;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-all;
}
[data-route="pkgMentor/mentor/task"] .live-preview-hint {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.433：分段渲染 —— 段间留白 calc(var(--rpx) * 20)、行高 1.7（#659 的分段规格，端上同一套） */
.live-preview-body {
  display: flex;
  flex-direction: column;
}
[data-route="pkgMentor/mentor/task"] .live-preview-para {
  display: flex;
  align-items: flex-start;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/task"] .live-preview-para:last-child {
  margin-bottom: 0;
}
[data-route="pkgMentor/mentor/task"] .live-preview-emoji {
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  margin-right: calc(var(--rpx) * 8);
  flex-shrink: 0;
}
[data-route="pkgMentor/mentor/task"] .live-preview-t {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  line-height: 1.7;
  white-space: pre-wrap;
  word-break: break-all;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.433：终审稿卡 —— 分段渲染，段间 calc(var(--rpx) * 20)、行高 1.7（#659 分段规格） */
.pool-card {
  margin: 0 0 calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 1) solid #cfe9da;
  border-radius: calc(var(--rpx) * 10);
  background: #f4faf7;
}
[data-route="pkgMentor/mentor/task"] .pool-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/mentor/task"] .pool-title {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgMentor/mentor/task"] .pool-hit {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 8);
}
[data-route="pkgMentor/mentor/task"] .pool-para {
  display: flex;
  align-items: flex-start;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/task"] .pool-para:last-child {
  margin-bottom: 0;
}
[data-route="pkgMentor/mentor/task"] .pool-emoji {
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  margin-right: calc(var(--rpx) * 8);
  flex-shrink: 0;
}
[data-route="pkgMentor/mentor/task"] .pool-t {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  line-height: 1.7;
  white-space: pre-wrap;
  word-break: break-all;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.433：终审稿来源说明（框边一行小字） */
.draft-src {
  font-size: calc(var(--rpx) * 24);
  color: #7a9a86;
  padding: calc(var(--rpx) * 8) 0 0 calc(var(--rpx) * 8);
}
[data-route="pkgMentor/mentor/task"] /* v4.86.356（355 号令①）：放大圈画点评 —— 这页第一主操作给微信绿描边同色字。
 * v4.86.365（362 号令①）：字号/高度/粗细回归与右边「和家长交流」完全一致
 *（木哥令：两个按键要一样的大小和字体大小粗细）—— calc(var(--rpx) * 40)/600 特例撤掉，
 * 只留绿色身份。 */
.annotate-btn {
  font-size: calc(var(--rpx) * 32);
  padding: calc(var(--rpx) * 24) 0;
  color: #07c160;
  border: calc(var(--rpx) * 2) solid #07c160;
  font-weight: normal;
}
[data-route="pkgMentor/mentor/task"] /* v4.86.371（367 号令）：图片作业的图区改竖版 —— 放开 .shot 的 calc(var(--rpx) * 520) 死高度，
   widthFix 的完整作业图有多高就撑多高（圈点/♪/批注图全量预览）；
   视频播放器那条 .shot 不带这个类，照旧 calc(var(--rpx) * 520)。 */
.shot-tall {
  height: auto;
  min-height: calc(var(--rpx) * 320);
}
[data-route="pkgMentor/mentor/task"] /* v4.86.403（A 组派单 · 作业等级卡）：四档一排，选中的金底金边。
   用色沿用财富金铜系（主金 a8792c / 亮金 d8b25c / 边金 c9a15c）。 */
/* v4.86.420：逐字数字条（老师编辑页）—— 档+总分+四维+每字均分（低在前），不画标签 */
.hw-nums {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 2) solid #e3efe6;
  border-radius: calc(var(--rpx) * 10);
  background: #f8fcf9;
}
[data-route="pkgMentor/mentor/task"] .hw-nums-head {
  display: flex;
  align-items: center;
}
[data-route="pkgMentor/mentor/task"] .hw-nums-grade {
  font-size: calc(var(--rpx) * 28);
  color: #223a2c;
}
[data-route="pkgMentor/mentor/task"] .hw-nums-total {
  font-size: calc(var(--rpx) * 28);
  color: #2f7a4d;
  margin-left: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/task"] .hw-nums-parts {
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgMentor/mentor/task"] .hw-nums-part {
  display: inline-block;
  font-size: calc(var(--rpx) * 24);
  color: #4a7a5c;
  margin: calc(var(--rpx) * 4) calc(var(--rpx) * 16) 0 0;
}
[data-route="pkgMentor/mentor/task"] .hw-nums-rows {
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgMentor/mentor/task"] .hw-nums-cell {
  display: inline-block;
  font-size: calc(var(--rpx) * 24);
  color: #3d5a48;
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #dfe9e2;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 12);
  margin: calc(var(--rpx) * 6) calc(var(--rpx) * 8) 0 0;
}
[data-route="pkgMentor/mentor/task"] .hw-nums-chars {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #4a7a5c;
}
[data-route="pkgMentor/mentor/task"] .grade-card {
  margin: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22);
  border: calc(var(--rpx) * 2) solid #efe3cf;
  border-radius: calc(var(--rpx) * 10);
  background: #fffdf8;
}
[data-route="pkgMentor/mentor/task"] .grade-head {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
}
[data-route="pkgMentor/mentor/task"] .grade-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #4a3a24;
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/mentor/task"] .grade-tip {
  font-size: calc(var(--rpx) * 24);
  color: #8a7a63;
}
[data-route="pkgMentor/mentor/task"] .grade-row {
  display: flex;
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pkgMentor/mentor/task"] .grade-chip {
  flex: 1;
  margin-right: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 12) 0;
  border: calc(var(--rpx) * 2) solid #e6dccb;
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  text-align: center;
}
[data-route="pkgMentor/mentor/task"] .grade-chip:last-child {
  margin-right: 0;
}
[data-route="pkgMentor/mentor/task"] .grade-chip-on {
  border-color: #c9a15c;
  background: #fdf3df;
}
[data-route="pkgMentor/mentor/task"] .grade-chip-icon {
  display: block;
  font-size: calc(var(--rpx) * 32);
  line-height: calc(var(--rpx) * 36);
}
[data-route="pkgMentor/mentor/task"] .grade-chip-name {
  display: block;
  font-size: calc(var(--rpx) * 24);
  color: #4a3a24;
}
[data-route="pkgMentor/mentor/task"] .grade-chip-on .grade-chip-name {
  color: #a8792c;
  font-weight: 600;
}
[data-route="pkgMentor/mentor/task"] .grade-chip-alias {
  display: block;
  font-size: calc(var(--rpx) * 20);
  color: #b39058;
}
[data-route="pkgMentor/mentor/task"] .grade-reason {
  margin-top: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16);
  border: calc(var(--rpx) * 2) solid #e6dccb;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  background: #ffffff;
}
[data-route="pkgMentor/mentor/task"] .grade-note {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #9a8b74;
}
[data-route="pkgMentor/mentor/task"] .grade-readonly {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 10);
  background: #fdf3df;
}
[data-route="pkgMentor/mentor/task"] .grade-readonly-t {
  font-size: calc(var(--rpx) * 24);
  color: #8a7a63;
  margin-right: calc(var(--rpx) * 10);
}
[data-route="pkgMentor/mentor/task"] .grade-readonly-g {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #a8792c;
}
[data-route="pkgMentor/mentor/task"] .grade-readonly-r {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #8a7a63;
  flex: 1;
}
[data-route="pkgMentor/mentor/task"] /* ===== v7.0.146（木哥 11-02 令）：逐字叠加图条进点评任务页 =====
   样式与孩子端 detail 页同一套（gal-* 原样搬），只多了 gal-item-focus 高亮
   与 gal-box-review（复看态去顶线）。 */
.gal-box {
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 18) 0 calc(var(--rpx) * 14);
  border-top: calc(var(--rpx) * 2) solid #f0e6d8;
}
[data-route="pkgMentor/mentor/task"] .gal-box-review {
  border-top: none;
  margin-top: calc(var(--rpx) * 4);
  padding: 0 0 calc(var(--rpx) * 14);
}
[data-route="pkgMentor/mentor/task"] .gal-head {
  display: flex;
  align-items: baseline;
  padding: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 12);
}
[data-route="pkgMentor/mentor/task"] .gal-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #5d4a2f;
}
[data-route="pkgMentor/mentor/task"] .gal-count {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #9b8a72;
}
[data-route="pkgMentor/mentor/task"] .gal-item-hover {
  opacity: 0.82;
}
[data-route="pkgMentor/mentor/task"] /* ===== v7.0.175（木哥令③）：小图堆 → 钱包卡片式滑动 =====
   与 card-viewer 同一语言：两侧露边、当前卡亮、邻卡缩小压暗；
   夜色舞台把叠加图衬出来，卡内底部一行「图N·字·第几格」。 */
/* v7.0.200（木哥令「直接用下图的模式算作为放大图。常态的展示时只要这个下图的二分之一
   大小即可……点击图片就大图就大图……再点击图片，就回到原来尺寸」）：
   calc(var(--rpx) * 620) 是「下图」原样（点开放大时的尺寸），常态收一半，点卡原地切换、不换页。
   v7.0.211（木哥令「小图的白底竖形长条变成 1:1 方形，不要这样占空间」）：
   常态卡做成方卡 —— swiper 高按卡内容算（卡宽 310 − 左右 margin/padding = 图宽 282，
   282 + 上 8 + 下 6 + 说明行 36 = 332），小图 aspectFill 居中裁满，不再左右留白条；
   点开大图（gal-swiper-on calc(var(--rpx) * 620)）仍是 aspectFit 全图。 */
.gal-swiper {
  width: 100%;
  height: calc(var(--rpx) * 332);
  transition: height 0.28s ease;
}
[data-route="pkgMentor/mentor/task"] .gal-swiper-on {
  height: calc(var(--rpx) * 620);
}
[data-route="pkgMentor/mentor/task"] .gal-card {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  margin: 0 calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 8) calc(var(--rpx) * 6);
  overflow: hidden;
  border-radius: calc(var(--rpx) * 16);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #f0e6d8;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(93, 74, 47, 0.06);
  transform: scale(0.96);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
[data-route="pkgMentor/mentor/task"] .gal-swiper-on .gal-card {
  margin: 0 calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 16) calc(var(--rpx) * 12);
}
[data-route="pkgMentor/mentor/task"] .gal-card-on {
  transform: scale(1);
  border-color: #e4d6bf;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 16) rgba(93, 74, 47, 0.12);
}
[data-route="pkgMentor/mentor/task"] .gal-img {
  flex: 1 1 0;
  height: 0;
  width: 100%;
  min-height: 0;
}
[data-route="pkgMentor/mentor/task"] .gal-card .gal-cap {
  flex-shrink: 0;
  margin-top: calc(var(--rpx) * 6);
  line-height: calc(var(--rpx) * 30);
  font-size: calc(var(--rpx) * 20);
  color: #8a7a66;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-route="pkgMentor/mentor/task"] .gal-swiper-on .gal-card .gal-cap {
  margin-top: calc(var(--rpx) * 10);
  line-height: calc(var(--rpx) * 34);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgMentor/mentor/task"] .gal-badge {
  position: absolute;
  top: calc(var(--rpx) * 8);
  left: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 20);
  color: #3f7d52;
  background: rgba(76, 140, 92, 0.10);
  border: calc(var(--rpx) * 1) solid rgba(76, 140, 92, 0.22);
}
[data-route="pkgMentor/mentor/task"] .gal-swiper-on .gal-badge {
  top: calc(var(--rpx) * 24);
  left: calc(var(--rpx) * 24);
}
[data-route="pkgMentor/mentor/task"] .gal-badge-focus {
  color: #b4544f;
  background: rgba(200, 76, 72, 0.10);
  border-color: rgba(200, 76, 72, 0.22);
}
[data-route="pkgMentor/mentor/task"] .gal-cap {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #3f3527;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-route="pkgMentor/mentor/task"] /* v7.0.146：给家长的回复卡 —— 自动双通道发送的说明行 */
.note-reply-tip {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #8a7a63;
}



/* ---- pkgMentor/pages/vcorrect/vcorrect.wxss ---- */
[data-route="pkgMentor/pages/vcorrect/vcorrect"] #app-page[data-route="pkgMentor/pages/vcorrect/vcorrect"] {
  background: #f7f7f7;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .page-wrap {
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 32) calc(var(--rpx) * 60);
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .lead {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] /* ---- 原视频 ---- */
.vbox {
  margin-top: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  overflow: hidden;
  background: #ffffff;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .vplayer {
  width: 100%;
  height: calc(var(--rpx) * 420);
  background: #000000;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .empty {
  padding: calc(var(--rpx) * 80) calc(var(--rpx) * 24);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] /* v4.86.260（木哥令）：画面中央的「开始」圆钮 —— 微信播放键同款：
 * 半透黑底白三角，点它与下面的「开始点评」同一件事（横屏+播放+录音）。 */
.vc-bigstart {
  position: absolute;
  left: 50%;
  top: 50%;
  width: calc(var(--rpx) * 96);
  height: calc(var(--rpx) * 96);
  line-height: calc(var(--rpx) * 96);
  margin-left: calc(var(--rpx) * -48);
  margin-top: calc(var(--rpx) * -48);
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.5);
  color: #ffffff;
  font-size: calc(var(--rpx) * 40);
  text-align: center;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] /* ---- 视频画面上的 HUD（v4.86.219 起）--------------------------------
 * v4.86.373（369 号令）：两枚按键从**右上角**搬到画面**下方居中** ——
 * 横屏全屏时右上角贴屏幕边，「■」小圆钮被裁掉一截、还没文字标注看不懂；
 * 下方居中横竖屏都稳、顺手够得着。徽标 = 红点 + 读秒（「剩 N 秒」），
 * 停止键 = 红底白字胶囊、带「■ 停止」文字标注。
 * 全是 cover-view（见 wxml 注释），只吃最稳的那几样 CSS：绝对定位、
 * flex、纯色底、圆角、opacity。闪动由 js 的 recBlink 每 500ms 翻一次驱动，
 * 这里那条 transition 只是锦上添花（真机不认也有肉眼可见的明暗交替）。
 * v4.86.385（木哥发图：横屏全屏里两枚键肥得占半屏）：根子是 rpx 按屏幕宽
 * 换算，横屏屏宽翻倍 ⇒ 同一份 rpx 全被放大一号多。HUD 尺寸全部改 **px 锁死**，
 * 横竖屏一个样：徽标/停止键收紧成微信录音同款小胶囊，够点但不霸屏。 */
.vc-hud {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 24px;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0);
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] /* 徽标：微信录音同款半透黑胶囊（红点闪 + 白字读秒） */
.vc-badge {
  display: flex;
  flex-direction: row;
  align-items: center;
  padding: 6px 12px;
  background: rgba(17, 17, 17, 0.72);
  border-radius: 999px;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] /* 最后十秒徽标变红：倒数在画面上一眼就能看见 */
.vc-hud-warn .vc-badge {
  background: rgba(250, 81, 81, 0.9);
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .vc-rec {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #fa5151;
  opacity: 0.3;
  transition: opacity 0.2s ease;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .vc-rec-on {
  opacity: 1;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .vc-hud-warn .vc-rec {
  background: #ffffff;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .vc-hud-t {
  margin-left: 6px;
  color: #ffffff;
  font-size: 13px;
  font-weight: 500;
  line-height: 1;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] /* 「停止」键：红底白字胶囊带文字标注（旧口径只有一颗小 ■ 圆钮，
 * 横屏全屏贴边被裁掉一截、也没有字说明看不懂）。385 收紧：可点面积
 * 保住，但不再横屏放大霸半屏。 */
.vc-hud-stop {
  margin-left: 10px;
  padding: 8px 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fa5151;
  color: #ffffff;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 500;
  line-height: 1;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .vc-hud-warn .vc-hud-stop {
  background: #fa5151;
  color: #ffffff;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] /* ---- 状态条 ---- */
.state {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  background: #ffffff;
  font-size: calc(var(--rpx) * 24);
  color: #333333;
  display: flex;
  align-items: center;
  min-height: calc(var(--rpx) * 88);
  box-sizing: border-box;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .state.rec {
  background: #eef7ef;
  border: calc(var(--rpx) * 2) solid #cde8d0;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .state.composing {
  background: #fff7e6;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .state.done {
  background: #eef7ef;
  color: #1f7a35;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .state.error {
  background: #fdecec;
  color: #b34242;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .sec {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #07c160;
  margin-right: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .hint {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.5;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] /* ---- v4.86.328（木哥令①）：录制态 = 固定播放窗 ----
 * rec-mode 一挂：铺底 fixed 全屏黑，说明/状态条/按键全退场，只剩视频和
 * HUD（cover-view 跟着 video 走）。原生全屏接不接得住都只有播放窗。 */
.rec-mode .lead, [data-route="pkgMentor/pages/vcorrect/vcorrect"] .rec-mode .state, [data-route="pkgMentor/pages/vcorrect/vcorrect"] .rec-mode .btns {
  display: none;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .rec-mode .vbox {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  margin: 0;
  border-radius: 0;
  background: #000000;
  z-index: 50;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .rec-mode .vplayer {
  width: 100%;
  height: 100%;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] /* ---- 操作 ---- */
.btns {
  margin-top: calc(var(--rpx) * 32);
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] /* v4.86.328（木哥令③）：按键统一微信生态风格 —— 与全站 .btn-primary/
 * .btn-ghost 同一口径（圆角 calc(var(--rpx) * 10)、高 calc(var(--rpx) * 24)×2+行高、主键绿底白字 500、
 * 次键白底 calc(var(--rpx) * 1) #e5e5e5 边 #191919 字），不再自造大圆角胶囊。 */
.btn {
  margin-bottom: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 24) 0;
  border-radius: calc(var(--rpx) * 10);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  line-height: 1.4;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .btn.main {
  background: #07c160;
  color: #ffffff;
  font-weight: 500;
}
[data-route="pkgMentor/pages/vcorrect/vcorrect"] .btn.ghost {
  background: #ffffff;
  color: #191919;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
}



/* ---- pkgMentor/pages/assist/assist.wxss ---- */
[data-route="pkgMentor/pages/assist/assist"] /* 预点评工作台（v4.86.270）
   字号只用 A 层五档（20 / 24 / 28 / 32 / 40 rpx）—— tools/lint-style.js 钉着。
   三色圈点的色值是**语义色**（红/蓝/绿各管一类问题），不是品牌色。 */
.ds-state {
  font-size: calc(var(--rpx) * 24);
  color: #1aad19;
}
[data-route="pkgMentor/pages/assist/assist"] .ds-bad {
  color: #fa5151;
}
[data-route="pkgMentor/pages/assist/assist"] .ds-no {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #888;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pkgMentor/pages/assist/assist"] .ds-x {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #888;
  line-height: 1.6;
}
[data-route="pkgMentor/pages/assist/assist"] .ds-count {
  font-size: calc(var(--rpx) * 24);
  color: #888;
}
[data-route="pkgMentor/pages/assist/assist"] .ds-lock {
  margin-top: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 8);
  background: #f0f7f2;
  font-size: calc(var(--rpx) * 24);
  color: #4a6b52;
  line-height: 1.6;
}
[data-route="pkgMentor/pages/assist/assist"] .ds-ta {
  width: 100%;
  min-height: calc(var(--rpx) * 220);
  margin-top: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 16);
  box-sizing: border-box;
  border-radius: calc(var(--rpx) * 12);
  background: #f7faf8;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #333;
}
[data-route="pkgMentor/pages/assist/assist"] .ds-ta-s {
  min-height: calc(var(--rpx) * 120);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgMentor/pages/assist/assist"] .ds-in {
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/pages/assist/assist"] .ds-num {
  width: calc(var(--rpx) * 140);
  margin-left: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/pages/assist/assist"] .ds-lab {
  font-size: calc(var(--rpx) * 24);
  color: #666;
}
[data-route="pkgMentor/pages/assist/assist"] .ds-line {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/pages/assist/assist"] .ds-miss {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
}
[data-route="pkgMentor/pages/assist/assist"] .ds-go {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/pages/assist/assist"] .ds-tip {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #888;
  line-height: 1.6;
}
[data-route="pkgMentor/pages/assist/assist"] /* 圈点 */
.mk {
  display: flex;
  align-items: flex-start;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/pages/assist/assist"] .mk-dot {
  width: calc(var(--rpx) * 8);
  height: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 4);
  flex: 0 0 auto;
}
[data-route="pkgMentor/pages/assist/assist"] .mk-red {
  background: #fa5151;
}
[data-route="pkgMentor/pages/assist/assist"] .mk-blue {
  background: #3b82f6;
}
[data-route="pkgMentor/pages/assist/assist"] .mk-green {
  background: #1aad19;
}
[data-route="pkgMentor/pages/assist/assist"] .mk-body {
  flex: 1;
}
[data-route="pkgMentor/pages/assist/assist"] .mk-text {
  font-size: calc(var(--rpx) * 28);
  color: #333;
  line-height: 1.6;
}
[data-route="pkgMentor/pages/assist/assist"] .mk-note {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888;
}
[data-route="pkgMentor/pages/assist/assist"] .mk-del {
  flex: 0 0 auto;
  padding-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
}
[data-route="pkgMentor/pages/assist/assist"] /* 三色选择 */
.cs {
  min-width: calc(var(--rpx) * 72);
  margin-right: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 8) 0;
  text-align: center;
  border-radius: calc(var(--rpx) * 24);
  border: calc(var(--rpx) * 2) solid #e2e8e4;
  font-size: calc(var(--rpx) * 24);
  color: #666;
}
[data-route="pkgMentor/pages/assist/assist"] .cs-on.cs-red {
  border-color: #fa5151;
  color: #fa5151;
}
[data-route="pkgMentor/pages/assist/assist"] .cs-on.cs-blue {
  border-color: #3b82f6;
  color: #3b82f6;
}
[data-route="pkgMentor/pages/assist/assist"] .cs-on.cs-green {
  border-color: #1aad19;
  color: #1aad19;
}
[data-route="pkgMentor/pages/assist/assist"] /* 分段 */
.sg {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #555;
  line-height: 1.6;
}
[data-route="pkgMentor/pages/assist/assist"] /* 门禁四项 */
.gd {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/pages/assist/assist"] .gd-tick {
  width: calc(var(--rpx) * 40);
  height: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 20);
  background: #f0f2f1;
  color: #aaa;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 40);
  text-align: center;
}
[data-route="pkgMentor/pages/assist/assist"] .gd-on {
  background: #e7f7ea;
  color: #1aad19;
}
[data-route="pkgMentor/pages/assist/assist"] .gd-name {
  font-size: calc(var(--rpx) * 28);
  color: #333;
}
[data-route="pkgMentor/pages/assist/assist"] /* 反馈 */
.fb-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgMentor/pages/assist/assist"] .fb-src {
  font-size: calc(var(--rpx) * 28);
  color: #333;
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/pages/assist/assist"] .fb-st {
  font-size: calc(var(--rpx) * 24);
  color: #888;
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/pages/assist/assist"] .st {
  margin-right: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 40);
  color: #d8dcda;
}
[data-route="pkgMentor/pages/assist/assist"] .st-on {
  color: #f5a623;
}
[data-route="pkgMentor/pages/assist/assist"] .tg {
  margin: 0 calc(var(--rpx) * 12) 0 0;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 24);
  border: calc(var(--rpx) * 2) solid #e2e8e4;
  font-size: calc(var(--rpx) * 24);
  color: #666;
}
[data-route="pkgMentor/pages/assist/assist"] .tg-on {
  border-color: #1aad19;
  color: #1aad19;
  background: #f0f9f2;
}
[data-route="pkgMentor/pages/assist/assist"] /* v4.86.433：分段渲染行（段间 calc(var(--rpx) * 20)、行高 1.7，与老师点评页同一套） */
.sg-para {
  display: flex;
  align-items: flex-start;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/pages/assist/assist"] .sg-emoji {
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  margin-right: calc(var(--rpx) * 8);
  flex-shrink: 0;
}
[data-route="pkgMentor/pages/assist/assist"] .sg-t {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  line-height: 1.7;
  word-break: break-all;
}



/* ---- pkgMentor/mentor/profile.wxss ---- */
[data-route="pkgMentor/mentor/profile"] /* 老师主页（v4.86.216 起；v7.0.173 整版重设计 —— 木哥令「这个页面需要你来设计，
 * 尽量拿出你的最高水平，因为老师是我们的最核心价值」）
 * 设计语言「墨玉」：hero 用深墨绿渐变画布（玉色点缀圆），白玉环头像，
 * 数据白卡 calc(var(--rpx) * -56) 压在 hero 下缘交叠；正文区微信白卡体系（#f7f7f7 底）；
 * 强调色只有两个：微信绿 #07c160（在线/主键）、金 #b8860b→#d4a017（级别/质量章）。
 * 字号全部在白名单：20/24/28/32/40 + 展示级 48。 */

page { background: #f2f3f5; }
[data-route="pkgMentor/mentor/profile"] /* ===== 加载骨架（v4.86.454 同套） ===== */
.sk {
  height: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 8);
  background: #ececec;
  animation: sk-breath 1.2s ease-in-out infinite;
}
[data-route="pkgMentor/mentor/profile"] .sk-avatar { width: calc(var(--rpx) * 104); height: calc(var(--rpx) * 104); border-radius: 50%; flex-shrink: 0; }
[data-route="pkgMentor/mentor/profile"] .sk-name { width: 40%; height: calc(var(--rpx) * 32); }
[data-route="pkgMentor/mentor/profile"] .sk-line { width: 72%; height: calc(var(--rpx) * 22); margin-top: calc(var(--rpx) * 12); }

@keyframes sk-breath {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.45; }
}
[data-route="pkgMentor/mentor/profile"] .prof-card { display: flex; align-items: flex-start; }
[data-route="pkgMentor/mentor/profile"] .prof-card-main { flex: 1; margin-left: calc(var(--rpx) * 24); min-width: 0; }
[data-route="pkgMentor/mentor/profile"] /* ===== v7.0.173 错误态：品牌画布，不再白卡甩键 ===== */
.pf-err {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 88) calc(var(--rpx) * 48) calc(var(--rpx) * 64);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 24);
  text-align: center;
}
[data-route="pkgMentor/mentor/profile"] .pf-err-art { position: relative; width: calc(var(--rpx) * 176); height: calc(var(--rpx) * 176); margin: 0 auto calc(var(--rpx) * 36); }
[data-route="pkgMentor/mentor/profile"] .pf-err-ring {
  position: absolute; left: 0; top: 0; right: 0; bottom: 0;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 25%, #e8f8ef, #d3f0e0);
}
[data-route="pkgMentor/mentor/profile"] .pf-err-ring::after {
  content: '';
  position: absolute; right: calc(var(--rpx) * -14); top: calc(var(--rpx) * -14);
  width: calc(var(--rpx) * 44); height: calc(var(--rpx) * 44); border-radius: 50%;
  background: #fce9c8;
}
[data-route="pkgMentor/mentor/profile"] .pf-err-cat {
  position: absolute; left: 50%; top: 50%;
  width: calc(var(--rpx) * 96); height: calc(var(--rpx) * 96);
  transform: translate(-50%, -50%);
}
[data-route="pkgMentor/mentor/profile"] .pf-err-t { font-size: calc(var(--rpx) * 32); font-weight: 600; color: rgba(0, 0, 0, 0.9); line-height: 1.5; }
[data-route="pkgMentor/mentor/profile"] .pf-err-s { margin-top: calc(var(--rpx) * 14); font-size: calc(var(--rpx) * 24); color: #999999; line-height: 1.7; }
[data-route="pkgMentor/mentor/profile"] .pf-err-btn { margin-top: calc(var(--rpx) * 44); }
[data-route="pkgMentor/mentor/profile"] .pf-err-btn2 { margin-top: calc(var(--rpx) * 18); }
[data-route="pkgMentor/mentor/profile"] .pf-err-link { margin-top: calc(var(--rpx) * 36); font-size: calc(var(--rpx) * 28); color: #576b95; }
[data-route="pkgMentor/mentor/profile"] /* ===== v7.0.173 hero：墨玉渐变画布 ===== */
.pf-hero {
  position: relative;
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 32) calc(var(--rpx) * 96);
  border-radius: calc(var(--rpx) * 24);
  background: linear-gradient(150deg, #123b2e 0%, #17553f 58%, #1d6a4c 100%);
  overflow: hidden;
}
[data-route="pkgMentor/mentor/profile"] /* 玉色点缀：右上大圆 + 左下细环，低调不抢人 */
.pf-hero-deco {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
}
[data-route="pkgMentor/mentor/profile"] .pf-hero-deco1 {
  right: calc(var(--rpx) * -90); top: calc(var(--rpx) * -110);
  width: calc(var(--rpx) * 320); height: calc(var(--rpx) * 320);
  background: radial-gradient(circle at 35% 35%, rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.02));
}
[data-route="pkgMentor/mentor/profile"] .pf-hero-deco2 {
  left: calc(var(--rpx) * -40); bottom: calc(var(--rpx) * -120);
  width: calc(var(--rpx) * 260); height: calc(var(--rpx) * 260);
  border: calc(var(--rpx) * 2) solid rgba(255, 255, 255, 0.08);
}
[data-route="pkgMentor/mentor/profile"] .pf-hero-top { position: relative; display: flex; align-items: flex-start; }
[data-route="pkgMentor/mentor/profile"] .pf-ava-wrap { position: relative; flex-shrink: 0; }
[data-route="pkgMentor/mentor/profile"] .pf-ava {
  width: calc(var(--rpx) * 148);
  height: calc(var(--rpx) * 148);
  border-radius: calc(var(--rpx) * 36);
  border: calc(var(--rpx) * 6) solid rgba(255, 255, 255, 0.92);
  box-shadow: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 24) rgba(0, 0, 0, 0.28);
  background: #f2f2f2;
  display: block;
}
[data-route="pkgMentor/mentor/profile"] .pf-ava-txt {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 48);
  font-weight: 700;
  color: #0f4c35;
  background: linear-gradient(160deg, #ffffff, #dff3e8);
}
[data-route="pkgMentor/mentor/profile"] .pf-ava-dot {
  position: absolute;
  right: calc(var(--rpx) * 4); bottom: calc(var(--rpx) * 4);
  width: calc(var(--rpx) * 28); height: calc(var(--rpx) * 28);
  border-radius: 50%;
  background: #34d97b;
  border: calc(var(--rpx) * 5) solid #ffffff;
}
[data-route="pkgMentor/mentor/profile"] .pf-hero-main { flex: 1; min-width: 0; margin-left: calc(var(--rpx) * 26); }
[data-route="pkgMentor/mentor/profile"] .pf-name-row { display: flex; align-items: center; flex-wrap: wrap; }
[data-route="pkgMentor/mentor/profile"] .pf-name {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
  letter-spacing: calc(var(--rpx) * 2);
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgMentor/mentor/profile"] /* 级别金章 */
.pf-badge {
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(135deg, #e7c880, #c9a04e);
  color: #4a3410;
  font-size: calc(var(--rpx) * 20);
  font-weight: 600;
}
[data-route="pkgMentor/mentor/profile"] .pf-hero-tags { display: flex; align-items: center; flex-wrap: wrap; margin-top: calc(var(--rpx) * 14); }
[data-route="pkgMentor/mentor/profile"] /* 质量章（家长的评分徽） */
.pf-quality {
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(255, 255, 255, 0.14);
  color: #ffe9bd;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/profile"] .pf-state {
  display: inline-flex;
  align-items: center;
  margin-left: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(52, 217, 123, 0.18);
  color: #7ef0b0;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/profile"] .pf-state-dot {
  width: calc(var(--rpx) * 12); height: calc(var(--rpx) * 12);
  border-radius: 50%;
  background: #34d97b;
  margin-right: calc(var(--rpx) * 10);
}
[data-route="pkgMentor/mentor/profile"] .pf-state-off { background: rgba(255, 255, 255, 0.14); color: #f3b9b9; }
[data-route="pkgMentor/mentor/profile"] .pf-hero-line {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.78);
  line-height: 1.5;
}
[data-route="pkgMentor/mentor/profile"] /* 数据白卡：calc(var(--rpx) * -56) 压在 hero 下缘 */
.pf-hero-stats {
  position: relative;
  margin: calc(var(--rpx) * -56) calc(var(--rpx) * 44) 0;
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 8);
  display: flex;
  align-items: stretch;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 20);
  box-shadow: 0 calc(var(--rpx) * 10) calc(var(--rpx) * 30) rgba(15, 59, 46, 0.14);
}
[data-route="pkgMentor/mentor/profile"] .pf-stat { flex: 1; text-align: center; min-width: 0; }
[data-route="pkgMentor/mentor/profile"] .pf-stat-div { width: calc(var(--rpx) * 1); background: #f0f0f0; margin: calc(var(--rpx) * 6) 0; }
[data-route="pkgMentor/mentor/profile"] .pf-stat-v {
  font-size: calc(var(--rpx) * 48);
  font-weight: 700;
  color: rgba(0, 0, 0, 0.9);
  line-height: 1.2;
}
[data-route="pkgMentor/mentor/profile"] .pf-stat-v-hot { color: #0d9c54; }
[data-route="pkgMentor/mentor/profile"] .pf-stat-k { margin-top: calc(var(--rpx) * 6); font-size: calc(var(--rpx) * 20); color: #b2b2b2; }
[data-route="pkgMentor/mentor/profile"] /* ===== 暂停接单守卫卡 ===== */
.prof-guard { border: calc(var(--rpx) * 1) solid #f0c8c8; background: #fff7f7; }
[data-route="pkgMentor/mentor/profile"] .prof-guard-title { font-size: calc(var(--rpx) * 28); font-weight: 600; color: #d54941; }
[data-route="pkgMentor/mentor/profile"] .prof-guard-line { margin-top: calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 24); color: #8a5a5a; line-height: 1.6; }
[data-route="pkgMentor/mentor/profile"] .prof-guard-btn {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  color: #d54941;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #f0c8c8;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 16) 0;
  line-height: 1.4;
}
[data-route="pkgMentor/mentor/profile"] .prof-guard-btn::after { border: none; }
[data-route="pkgMentor/mentor/profile"] /* ===== 简介 ===== */
.prof-bio {
  margin-top: calc(var(--rpx) * 18);
  font-size: calc(var(--rpx) * 28);
  color: rgba(0, 0, 0, 0.9);
  line-height: 1.8;
  word-break: break-all;
  white-space: pre-wrap;
}
[data-route="pkgMentor/mentor/profile"] .prof-tags { display: flex; flex-wrap: wrap; margin-top: calc(var(--rpx) * 20); }
[data-route="pkgMentor/mentor/profile"] .prof-tag {
  margin: 0 calc(var(--rpx) * 12) calc(var(--rpx) * 12) 0;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 999);
  background: #f0f9eb;
  color: #0d9c54;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgMentor/mentor/profile"] .prof-tag-years { background: #fdf6e7; color: #a4711c; }
[data-route="pkgMentor/mentor/profile"] .pf-card-sub { margin-top: calc(var(--rpx) * 8); }
[data-route="pkgMentor/mentor/profile"] /* ===== 特点清单 ===== */
.pf-trait {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 22) 0;
  border-bottom: calc(var(--rpx) * 1) solid #f5f5f5;
}
[data-route="pkgMentor/mentor/profile"] .pf-trait:last-child { border-bottom: none; padding-bottom: calc(var(--rpx) * 4); }
[data-route="pkgMentor/mentor/profile"] .pf-trait-ico {
  flex-shrink: 0;
  width: calc(var(--rpx) * 64); height: calc(var(--rpx) * 64);
  border-radius: calc(var(--rpx) * 18);
  background: #f4f7f5;
  text-align: center;
  line-height: calc(var(--rpx) * 64);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgMentor/mentor/profile"] .pf-trait-body { flex: 1; min-width: 0; margin-left: calc(var(--rpx) * 20); }
[data-route="pkgMentor/mentor/profile"] .pf-trait-hd { display: flex; align-items: baseline; justify-content: space-between; }
[data-route="pkgMentor/mentor/profile"] .pf-trait-name { font-size: calc(var(--rpx) * 28); font-weight: 600; color: rgba(0, 0, 0, 0.9); }
[data-route="pkgMentor/mentor/profile"] .pf-trait-val { font-size: calc(var(--rpx) * 24); color: #0d9c54; font-weight: 600; }
[data-route="pkgMentor/mentor/profile"] .pf-trait-note { margin-top: calc(var(--rpx) * 6); font-size: calc(var(--rpx) * 24); color: #999999; line-height: 1.6; }
[data-route="pkgMentor/mentor/profile"] /* ===== 点评数据 · 图文分析 ===== */
.pf-stars { display: flex; align-items: baseline; margin-top: calc(var(--rpx) * 18); }
[data-route="pkgMentor/mentor/profile"] .pf-stars-on { font-size: calc(var(--rpx) * 40); color: #f7b52c; letter-spacing: calc(var(--rpx) * 4); }
[data-route="pkgMentor/mentor/profile"] .pf-stars-off { font-size: calc(var(--rpx) * 40); color: #e5e5e5; letter-spacing: calc(var(--rpx) * 4); }
[data-route="pkgMentor/mentor/profile"] .pf-stars-num { margin-left: calc(var(--rpx) * 18); font-size: calc(var(--rpx) * 32); font-weight: 700; color: rgba(0, 0, 0, 0.9); }
[data-route="pkgMentor/mentor/profile"] .pf-stars-empty { font-size: calc(var(--rpx) * 24); color: #b2b2b2; }
[data-route="pkgMentor/mentor/profile"] .pf-stars-cnt { margin-top: calc(var(--rpx) * 8); }
[data-route="pkgMentor/mentor/profile"] .pf-bar { margin-top: calc(var(--rpx) * 30); }
[data-route="pkgMentor/mentor/profile"] .pf-bar-hd { display: flex; align-items: baseline; justify-content: space-between; }
[data-route="pkgMentor/mentor/profile"] .pf-bar-label { font-size: calc(var(--rpx) * 28); font-weight: 600; color: rgba(0, 0, 0, 0.9); }
[data-route="pkgMentor/mentor/profile"] .pf-bar-legend { font-size: calc(var(--rpx) * 20); color: #b2b2b2; }
[data-route="pkgMentor/mentor/profile"] .pf-bar-line { display: flex; align-items: center; margin-top: calc(var(--rpx) * 16); }
[data-route="pkgMentor/mentor/profile"] .pf-bar-tag {
  flex-shrink: 0;
  width: calc(var(--rpx) * 72);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pkgMentor/mentor/profile"] .pf-bar-track {
  flex: 1;
  height: calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  background: #f2f3f5;
  overflow: hidden;
}
[data-route="pkgMentor/mentor/profile"] .pf-bar-fill {
  height: 100%;
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(90deg, #0d9c54, #34d97b);
  transition: width 0.4s ease;
}
[data-route="pkgMentor/mentor/profile"] .pf-bar-fill-peer { background: #c8e6d4; }
[data-route="pkgMentor/mentor/profile"] .pf-bar-num { flex-shrink: 0; width: calc(var(--rpx) * 88); text-align: right; font-size: calc(var(--rpx) * 24); color: #666666; }
[data-route="pkgMentor/mentor/profile"] .pf-bar-verdict {
  margin-top: calc(var(--rpx) * 14);
  margin-left: calc(var(--rpx) * 72);
  font-size: calc(var(--rpx) * 24);
  color: #0d9c54;
  line-height: 1.6;
}
[data-route="pkgMentor/mentor/profile"] /* 数据小方块（bars） */
.pf-nums { display: flex; flex-wrap: wrap; margin-top: calc(var(--rpx) * 26); }
[data-route="pkgMentor/mentor/profile"] .pf-num-item {
  width: 50%;
  box-sizing: border-box;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 12);
  background: #f7f8f9;
  border-radius: calc(var(--rpx) * 14);
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pkgMentor/mentor/profile"] .pf-num-item:nth-child(odd) { margin-right: calc(var(--rpx) * 12); }
[data-route="pkgMentor/mentor/profile"] .pf-num-t { font-size: calc(var(--rpx) * 20); color: #b2b2b2; }
[data-route="pkgMentor/mentor/profile"] .pf-num-s { margin-top: calc(var(--rpx) * 6); font-size: calc(var(--rpx) * 24); color: rgba(0, 0, 0, 0.9); line-height: 1.5; }
[data-route="pkgMentor/mentor/profile"] /* ===== 服务与价格 ===== */
.pf-svc { display: flex; gap: calc(var(--rpx) * 16); margin-top: calc(var(--rpx) * 18); }
[data-route="pkgMentor/mentor/profile"] .pf-svc-card {
  flex: 1;
  min-width: 0;
  padding: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 18);
  background: #f8faf8;
  border: calc(var(--rpx) * 1) solid #e8f2ec;
  box-sizing: border-box;
}
[data-route="pkgMentor/mentor/profile"] .pf-svc-off { background: #f7f7f7; border-color: #eeeeee; }
[data-route="pkgMentor/mentor/profile"] .pf-svc-hd { display: flex; align-items: center; }
[data-route="pkgMentor/mentor/profile"] .pf-svc-ico { font-size: calc(var(--rpx) * 32); margin-right: calc(var(--rpx) * 10); }
[data-route="pkgMentor/mentor/profile"] .pf-svc-name { font-size: calc(var(--rpx) * 28); font-weight: 600; color: rgba(0, 0, 0, 0.9); }
[data-route="pkgMentor/mentor/profile"] .pf-svc-flag {
  margin-left: auto;
  font-size: calc(var(--rpx) * 20);
  color: #a4711c;
  background: #fdf6e7;
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pkgMentor/mentor/profile"] .pf-svc-price { margin-top: calc(var(--rpx) * 16); font-size: calc(var(--rpx) * 32); font-weight: 700; color: #0d9c54; }
[data-route="pkgMentor/mentor/profile"] .pf-svc-off .pf-svc-price { color: #b2b2b2; font-weight: 500; font-size: calc(var(--rpx) * 24); }
[data-route="pkgMentor/mentor/profile"] .pf-svc-desc { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 20); color: #999999; line-height: 1.6; }
[data-route="pkgMentor/mentor/profile"] .pf-svc-tip { margin-top: calc(var(--rpx) * 16); }
[data-route="pkgMentor/mentor/profile"] /* ===== 荣誉 ===== */
.prof-honor { margin-top: calc(var(--rpx) * 14); }
[data-route="pkgMentor/mentor/profile"] .prof-honor-item {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;
  border-bottom: calc(var(--rpx) * 1) solid #f5f5f5;
}
[data-route="pkgMentor/mentor/profile"] .prof-honor-item:last-child { border-bottom: none; }
[data-route="pkgMentor/mentor/profile"] .prof-honor-ico {
  flex-shrink: 0;
  width: calc(var(--rpx) * 72); height: calc(var(--rpx) * 72);
  border-radius: 50%;
  background: #fdf6e7;
  text-align: center;
  line-height: calc(var(--rpx) * 72);
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgMentor/mentor/profile"] .prof-honor-txt { flex: 1; min-width: 0; margin-left: calc(var(--rpx) * 20); }
[data-route="pkgMentor/mentor/profile"] .prof-honor-name { font-size: calc(var(--rpx) * 28); font-weight: 600; color: rgba(0, 0, 0, 0.9); }
[data-route="pkgMentor/mentor/profile"] .prof-honor-sub { margin-top: calc(var(--rpx) * 4); font-size: calc(var(--rpx) * 20); }
[data-route="pkgMentor/mentor/profile"] /* ===== 约单卡 ===== */
.prof-price-line { margin-top: calc(var(--rpx) * 10); }
[data-route="pkgMentor/mentor/profile"] .prof-note-area { margin-top: calc(var(--rpx) * 14); width: 100%; box-sizing: border-box; }
[data-route="pkgMentor/mentor/profile"] .prof-note-tip { margin-top: calc(var(--rpx) * 8); text-align: right; }
[data-route="pkgMentor/mentor/profile"] .prof-order-btn { margin-top: calc(var(--rpx) * 24); }
[data-route="pkgMentor/mentor/profile"] .prof-invite-btn { margin-top: calc(var(--rpx) * 16); }
[data-route="pkgMentor/mentor/profile"] .prof-invite-tip { margin-top: calc(var(--rpx) * 10); text-align: center; }
[data-route="pkgMentor/mentor/profile"] /* ===== 页脚 ===== */
.pf-foot {
  margin: calc(var(--rpx) * 28) calc(var(--rpx) * 24) calc(var(--rpx) * 40);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  color: #c2c2c2;
  line-height: 1.7;
}



/* ---- pkgMentor/hwcomment/hwcomment.wxss ---- */
[data-route="pkgMentor/hwcomment/hwcomment"] /* AI 作业点评 · 样式（跟着全站皮肤：灰底、白分组块、发丝线、微信绿） */
.hc-wrap { padding-bottom: calc(var(--rpx) * 48); }
[data-route="pkgMentor/hwcomment/hwcomment"] /* ——— 挑图 ——— */
.hc-shot {
  margin-top: calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 420);
  border-radius: calc(var(--rpx) * 16);
  background: #f7f7f7;
  border: calc(var(--rpx) * 2) dashed #d5d5d5;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-shot-img { width: 100%; height: 100%; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-shot-empty { text-align: center; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-shot-plus { font-size: calc(var(--rpx) * 40); line-height: 1; color: #b2b2b2; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-shot-tip { margin-top: calc(var(--rpx) * 12); font-size: calc(var(--rpx) * 28); color: #888888; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-field { margin-top: calc(var(--rpx) * 28); }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-label { font-size: calc(var(--rpx) * 28); color: #888888; margin-bottom: calc(var(--rpx) * 12); }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-input {
  height: calc(var(--rpx) * 88);
  padding: 0 calc(var(--rpx) * 24);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 32);
  color: #191919;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-go { margin-top: calc(var(--rpx) * 32); }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-hint { margin-top: calc(var(--rpx) * 16); font-size: calc(var(--rpx) * 24); color: #b2b2b2; line-height: 1.6; }
[data-route="pkgMentor/hwcomment/hwcomment"] /* ——— 历史 ——— */
.hc-his {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 24) 0;
  border-bottom: calc(var(--rpx) * 1) solid #e5e5e5;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-his:last-child { border-bottom: 0; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-his-c { font-size: calc(var(--rpx) * 32); color: #191919; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-his-s { margin-top: calc(var(--rpx) * 6); font-size: calc(var(--rpx) * 24); color: #b2b2b2; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-his-r { display: flex; align-items: baseline; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-his-n { font-size: calc(var(--rpx) * 32); color: #07c160; font-weight: 600; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-his-u { font-size: calc(var(--rpx) * 24); color: #07c160; margin-left: calc(var(--rpx) * 2); }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-his-go { margin-left: calc(var(--rpx) * 16); color: #c8c8cd; font-size: calc(var(--rpx) * 32); }
[data-route="pkgMentor/hwcomment/hwcomment"] /* ——— 出稿中 ——— */
.hc-run { text-align: center; padding: calc(var(--rpx) * 48) calc(var(--rpx) * 32); }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-run-ring {
  width: calc(var(--rpx) * 96); height: calc(var(--rpx) * 96); margin: 0 auto calc(var(--rpx) * 28);
  border-radius: 50%;
  border: calc(var(--rpx) * 6) solid #e8f7ee;
  border-top-color: #07c160;
  animation: hc-spin 1s linear infinite;
}

@keyframes hc-spin { to { transform: rotate(360deg); } }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-run-t { font-size: calc(var(--rpx) * 32); color: #191919; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-run-s { margin-top: calc(var(--rpx) * 12); font-size: calc(var(--rpx) * 28); color: #888888; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-run-bar {
  margin: calc(var(--rpx) * 36) auto 0; height: calc(var(--rpx) * 10); width: 100%;
  background: #f2f2f2; border-radius: calc(var(--rpx) * 8); overflow: hidden;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-run-bar-i { height: 100%; background: #07c160; border-radius: calc(var(--rpx) * 8); transition: width .6s; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-run-tip { margin-top: calc(var(--rpx) * 28); font-size: calc(var(--rpx) * 24); color: #b2b2b2; line-height: 1.6; }
[data-route="pkgMentor/hwcomment/hwcomment"] /* ——— 结果头 ——— */
.hc-head { display: flex; align-items: center; justify-content: space-between; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-head-c { font-size: calc(var(--rpx) * 40); font-weight: 600; color: #191919; letter-spacing: calc(var(--rpx) * 4); }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-head-s { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 24); color: #b2b2b2; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-score { display: flex; align-items: baseline; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-score-n { font-size: calc(var(--rpx) * 40); font-weight: 700; color: #07c160; line-height: 1; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-score-u { font-size: calc(var(--rpx) * 24); color: #07c160; margin-left: calc(var(--rpx) * 4); }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-score-lv {
  margin-left: calc(var(--rpx) * 16); font-size: calc(var(--rpx) * 24); color: #06ad56;
  background: #e8f7ee; border: calc(var(--rpx) * 1) solid #d5f0df;
  border-radius: calc(var(--rpx) * 20); padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
}
[data-route="pkgMentor/hwcomment/hwcomment"] /* ——— 浏览位置框（跟网页版同一套口径：一框一张、缩放/拖动/翻页/缩略图） ——— */
.hc-viewer-t { font-size: calc(var(--rpx) * 32); color: #191919; font-weight: 600; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-viewer { margin-top: calc(var(--rpx) * 16); }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-va {
  width: 100%;
  height: calc(var(--rpx) * 620);
  background: #111111;
  border-radius: calc(var(--rpx) * 12);
  overflow: hidden;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-vv { width: 100%; height: 100%; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-vimg { width: 100%; height: 100%; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-vbar {
  display: flex;
  justify-content: space-between;
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-vbtn {
  flex: 1;
  margin-right: calc(var(--rpx) * 10);
  height: calc(var(--rpx) * 68);
  line-height: calc(var(--rpx) * 68);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  border: calc(var(--rpx) * 1) solid #e5e5e5;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-vbtn:last-child { margin-right: 0; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-vbtn:active { background: #ececec; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-vcount {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  font-variant-numeric: tabular-nums;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-vtip { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 24); color: #b2b2b2; line-height: 1.6; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-thumbs {
  margin-top: calc(var(--rpx) * 18);
  white-space: nowrap;
  width: 100%;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-th {
  display: inline-block;
  width: calc(var(--rpx) * 132);
  margin-right: calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 3) solid transparent;
  border-radius: calc(var(--rpx) * 10);
  background: #fafafa;
  padding: calc(var(--rpx) * 4);
  box-sizing: border-box;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-th-on { border-color: #07c160; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-th-i { width: 100%; height: calc(var(--rpx) * 108); border-radius: calc(var(--rpx) * 8); background: #f2f2f2; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-th-t { font-size: calc(var(--rpx) * 20); color: #b2b2b2; text-align: center; margin-top: calc(var(--rpx) * 4); }
[data-route="pkgMentor/hwcomment/hwcomment"] /* ——— 正文 ——— */
.hc-doc { padding-bottom: calc(var(--rpx) * 28); }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-h3 {
  margin: calc(var(--rpx) * 28) 0 calc(var(--rpx) * 12);
  padding-left: calc(var(--rpx) * 16);
  border-left: calc(var(--rpx) * 6) solid #07c160;
  font-size: calc(var(--rpx) * 32); color: #191919; font-weight: 600;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-h4 { margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 32); color: #06ad56; font-weight: 600; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-p { margin: calc(var(--rpx) * 14) 0; font-size: calc(var(--rpx) * 32); line-height: 1.8; color: #191919; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-li { margin: calc(var(--rpx) * 10) 0 calc(var(--rpx) * 10) calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 32); line-height: 1.8; color: #191919; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-note {
  margin: calc(var(--rpx) * 16) 0; padding-left: calc(var(--rpx) * 16);
  border-left: calc(var(--rpx) * 6) solid #e5e5e5;
  font-size: calc(var(--rpx) * 28); color: #888888; line-height: 1.7;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-row { display: flex; padding: calc(var(--rpx) * 10) 0; border-bottom: calc(var(--rpx) * 1) dashed #e5e5e5; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-row-c { flex: 1; font-size: calc(var(--rpx) * 28); color: #191919; }
[data-route="pkgMentor/hwcomment/hwcomment"] /* ——— 分数拆解 ——— */
.hc-parts { display: flex; flex-wrap: wrap; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-part {
  width: 50%;
  padding: calc(var(--rpx) * 12) 0;
}
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-part-k { font-size: calc(var(--rpx) * 28); color: #888888; }
[data-route="pkgMentor/hwcomment/hwcomment"] .hc-part-v { margin-left: calc(var(--rpx) * 12); font-size: calc(var(--rpx) * 32); color: #07c160; font-weight: 600; }



/* ---- components/hw-cards/hw-cards.wxss ---- */
[data-comp="components/hw-cards/hw-cards"] /* hw-cards —— 点评卡片（与网页版点评页同一套版式，木哥 2026-11-05 20:3x） */

.hwc { display: block; }
[data-comp="components/hw-cards/hw-cards"] /* ── 总评 ── */
.hwc-sum {
  background: #fbfcfe;
  border-left: calc(var(--rpx) * 6) solid #5b8def;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28);
  margin: 0 0 calc(var(--rpx) * 28);
}
[data-comp="components/hw-cards/hw-cards"] .hwc-sumtx { font-size: calc(var(--rpx) * 30); line-height: 1.9; color: #333c4d; }
[data-comp="components/hw-cards/hw-cards"] /* ── 一个字一块 ── */
.hwc-card {
  background: #fff;
  border: calc(var(--rpx) * 2) solid #eceff5;
  border-radius: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 26) calc(var(--rpx) * 20);
  margin: 0 0 calc(var(--rpx) * 30);
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 20) rgba(30, 42, 58, 0.04);
}
[data-comp="components/hw-cards/hw-cards"] .hwc-top { display: flex; align-items: flex-start; margin-bottom: calc(var(--rpx) * 22); }
[data-comp="components/hw-cards/hw-cards"] .hwc-ch { font-size: calc(var(--rpx) * 58); line-height: 1; color: #1e2a3a; margin-right: calc(var(--rpx) * 18); }
[data-comp="components/hw-cards/hw-cards"] .hwc-meta { flex: 1; min-width: 0; padding-top: calc(var(--rpx) * 4); }
[data-comp="components/hw-cards/hw-cards"] .hwc-cell { display: block; font-size: calc(var(--rpx) * 24); color: #8b93a3; line-height: 1.6; }
[data-comp="components/hw-cards/hw-cards"] .hwc-sub { display: block; font-size: calc(var(--rpx) * 24); color: #8b93a3; line-height: 1.6; }
[data-comp="components/hw-cards/hw-cards"] .hwc-tag {
  flex: 0 0 auto;
  font-size: calc(var(--rpx) * 22);
  line-height: 1.8;
  color: #c0392b;
  background: #fdeceb;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 18);
  margin-left: calc(var(--rpx) * 12);
}
[data-comp="components/hw-cards/hw-cards"] .hwc-tag.mid { color: #8a6d1f; background: #fbf3e0; }
[data-comp="components/hw-cards/hw-cards"] .hwc-tag.ok { color: #2e7d32; background: #eaf6ec; }
[data-comp="components/hw-cards/hw-cards"] /* ── 叠加图 ── */
.hwc-pic {
  background: #f6f7fa;
  border-radius: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 16);
  margin: 0 0 calc(var(--rpx) * 22);
}
[data-comp="components/hw-cards/hw-cards"] .hwc-img { display: block; width: 100%; border-radius: calc(var(--rpx) * 12); }
[data-comp="components/hw-cards/hw-cards"] /* ── 一句总说 ── */
.hwc-lead { font-size: calc(var(--rpx) * 28); line-height: 1.9; color: #2c3444; margin: 0 0 calc(var(--rpx) * 6); }
[data-comp="components/hw-cards/hw-cards"] /* ── 逐笔 ── */
.hwc-st { display: block; }
[data-comp="components/hw-cards/hw-cards"] .hwc-row { padding: calc(var(--rpx) * 20) 0; border-top: calc(var(--rpx) * 2) dashed #edf0f5; }
[data-comp="components/hw-cards/hw-cards"] .hwc-row:first-child { border-top: 0; padding-top: calc(var(--rpx) * 6); }
[data-comp="components/hw-cards/hw-cards"] .hwc-r1 { display: flex; align-items: center; }
[data-comp="components/hw-cards/hw-cards"] .hwc-n {
  flex: 0 0 calc(var(--rpx) * 36);
  font-size: calc(var(--rpx) * 22);
  color: #9aa3b2;
  text-align: right;
  margin-right: calc(var(--rpx) * 12);
}
[data-comp="components/hw-cards/hw-cards"] .hwc-nm { flex: 0 0 auto; min-width: calc(var(--rpx) * 104); font-size: calc(var(--rpx) * 28); color: #1e2a3a; margin-right: calc(var(--rpx) * 16); }
[data-comp="components/hw-cards/hw-cards"] .hwc-bar {
  flex: 1;
  height: calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 6);
  background: #eef1f6;
  overflow: hidden;
}
[data-comp="components/hw-cards/hw-cards"] .hwc-bari { height: 100%; border-radius: calc(var(--rpx) * 6); }
[data-comp="components/hw-cards/hw-cards"] .hwc-pc {
  flex: 0 0 calc(var(--rpx) * 84);
  font-size: calc(var(--rpx) * 24);
  color: #8b93a3;
  text-align: right;
}
[data-comp="components/hw-cards/hw-cards"] .hwc-r2 { display: flex; align-items: flex-start; padding-left: calc(var(--rpx) * 48); margin-top: calc(var(--rpx) * 10); }
[data-comp="components/hw-cards/hw-cards"] .hwc-pill {
  flex: 0 0 auto;
  font-size: calc(var(--rpx) * 22);
  line-height: 1.75;
  font-weight: 600;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 1) calc(var(--rpx) * 12);
  margin-right: calc(var(--rpx) * 14);
}
[data-comp="components/hw-cards/hw-cards"] .hwc-tx { flex: 1; font-size: calc(var(--rpx) * 26); line-height: 1.8; color: #4a5468; }
[data-comp="components/hw-cards/hw-cards"] /* ── 展开 / 收起 ── */
.hwc-more {
  margin-top: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 18) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 26);
  color: #3b5bdb;
  background: #f7f9fd;
  border: calc(var(--rpx) * 2) dashed #d3dbeb;
  border-radius: calc(var(--rpx) * 18);
}
[data-comp="components/hw-cards/hw-cards"] .hwc-more-h { background: #eaf0fc; }
[data-comp="components/hw-cards/hw-cards"] /* ── 悄悄话 ── */
.hwc-whis {
  border-top: calc(var(--rpx) * 2) dashed #dfe3ec;
  margin: calc(var(--rpx) * 6) 0 0;
  padding-top: calc(var(--rpx) * 22);
}
[data-comp="components/hw-cards/hw-cards"] .hwc-wt { font-size: calc(var(--rpx) * 24); font-weight: 600; color: #b0832a; margin-bottom: calc(var(--rpx) * 8); }
[data-comp="components/hw-cards/hw-cards"] .hwc-wtx { font-size: calc(var(--rpx) * 28); line-height: 1.85; color: #5a6273; }



/* ---- pkgPromo/pages/land/land.wxss ---- */
[data-route="pkgPromo/pages/land/land"] /* 地推落地页（B-6 / G-23a）
 * 目标：首屏 ≤1.5s —— 全静态、无图、无组件，纯色块 + 文字。
 * 视觉沿用全站微信绿系（绿底卡 #e9f8ef / 主绿 #07c160 / 标题 #0a7a3d）。 */

.land {
  min-height: calc(var(--vh) * 100);
  background: #e9f8ef;
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgPromo/pages/land/land"] /* ---------- 顶部 ---------- */
.hero {
  position: relative;
  padding: calc(var(--rpx) * 64) calc(var(--rpx) * 40) calc(var(--rpx) * 48);
  background: linear-gradient(180deg, #ffffff 0%, #e9f8ef 100%);
}
[data-route="pkgPromo/pages/land/land"] .hero-cat {
  font-size: calc(var(--rpx) * 96);
  line-height: 1;
}
[data-route="pkgPromo/pages/land/land"] .hero-title {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 56);
  font-weight: 700;
  color: #0a7a3d;
  letter-spacing: calc(var(--rpx) * 2);
}
[data-route="pkgPromo/pages/land/land"] .hero-sub {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 28);
  color: #4c8f68;
  line-height: 1.6;
}
[data-route="pkgPromo/pages/land/land"] .hero-badge {
  position: absolute;
  right: calc(var(--rpx) * 40);
  top: calc(var(--rpx) * 72);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 30);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgPromo/pages/land/land"] /* ---------- 三步图 ---------- */
.steps {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 40);
}
[data-route="pkgPromo/pages/land/land"] .step {
  display: flex;
  flex-direction: column;
  align-items: center;
}
[data-route="pkgPromo/pages/land/land"] .step-n {
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 64);
  text-align: center;
  border-radius: 50%;
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
}
[data-route="pkgPromo/pages/land/land"] .step-text {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
}
[data-route="pkgPromo/pages/land/land"] .step-arrow {
  padding: 0 calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 32);
  font-size: calc(var(--rpx) * 40);
  color: #d5f0df;
}
[data-route="pkgPromo/pages/land/land"] /* ---------- 卡片 ---------- */
.card {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 32);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgPromo/pages/land/land"] .card-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #0a7a3d;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgPromo/pages/land/land"] .gift {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 18) 0;
}
[data-route="pkgPromo/pages/land/land"] .gift-icon {
  width: calc(var(--rpx) * 60);
  font-size: calc(var(--rpx) * 40);
  line-height: 1.2;
}
[data-route="pkgPromo/pages/land/land"] .gift-body {
  flex: 1;
  min-width: 0;
}
[data-route="pkgPromo/pages/land/land"] .gift-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pkgPromo/pages/land/land"] .gift-note {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  line-height: 1.5;
}
[data-route="pkgPromo/pages/land/land"] .gift-free {
  margin-top: calc(var(--rpx) * 20);
  padding-top: calc(var(--rpx) * 20);
  border-top: calc(var(--rpx) * 2) dashed #d5f0df;
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  font-weight: 500;
}
[data-route="pkgPromo/pages/land/land"] /* ---------- 领取区 ---------- */
.claim-area {
  margin: 0 calc(var(--rpx) * 32);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgPromo/pages/land/land"] .agree {
  display: flex;
  align-items: center;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgPromo/pages/land/land"] .agree-box {
  width: calc(var(--rpx) * 40);
  height: calc(var(--rpx) * 40);
  line-height: calc(var(--rpx) * 40);
  text-align: center;
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 8);
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  flex-shrink: 0;
}
[data-route="pkgPromo/pages/land/land"] .agree-on {
  background: #07c160;
  border-color: #07c160;
}
[data-route="pkgPromo/pages/land/land"] .agree-text {
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 28);
  color: #4c8f68;
}
[data-route="pkgPromo/pages/land/land"] .claim-btn {
  width: 100%;
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  border-radius: calc(var(--rpx) * 10);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  padding: 0;
  margin: 0;
}
[data-route="pkgPromo/pages/land/land"] .claim-btn::after {
  border: none;
}
[data-route="pkgPromo/pages/land/land"] .claim-btn-busy {
  opacity: 0.7;
}
[data-route="pkgPromo/pages/land/land"] .claim-err {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #fa9d3b;
  text-align: center;
}
[data-route="pkgPromo/pages/land/land"] .claim-hint {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
}
[data-route="pkgPromo/pages/land/land"] /* 领取完成 */
.done {
  text-align: center;
}
[data-route="pkgPromo/pages/land/land"] .done-icon {
  font-size: calc(var(--rpx) * 72);
  line-height: 1;
}
[data-route="pkgPromo/pages/land/land"] .done-title {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgPromo/pages/land/land"] .done-note {
  margin: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 32);
  font-size: calc(var(--rpx) * 28);
  color: #4c8f68;
  line-height: 1.6;
}
[data-route="pkgPromo/pages/land/land"] /* ---------- 页脚 ---------- */
.foot {
  margin: calc(var(--rpx) * 40) calc(var(--rpx) * 32) 0;
  text-align: center;
}
[data-route="pkgPromo/pages/land/land"] .foot-links {
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgPromo/pages/land/land"] .foot-link {
  color: #07c160;
}
[data-route="pkgPromo/pages/land/land"] .foot-dot {
  margin: 0 calc(var(--rpx) * 12);
  color: #d5f0df;
}
[data-route="pkgPromo/pages/land/land"] .foot-note {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pkgPromo/pages/land/land"] /* ---------- 字帖样张（A 组 §四.1c） ---------- */
/* 目录只在点了「看看字帖样张」之后才出现，所以这里不涉及首屏性能 */
.zt-lead {
  font-size: calc(var(--rpx) * 28);
  color: #4c8f68;
  line-height: 1.5;
}
[data-route="pkgPromo/pages/land/land"] .zt-item {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 22) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgPromo/pages/land/land"] .zt-book {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pkgPromo/pages/land/land"] .zt-meta {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
}
[data-route="pkgPromo/pages/land/land"] .zt-open {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgPromo/pages/land/land"] .zt-more {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  background: #e9f8ef;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pkgPromo/pages/land/land"] .zt-note {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  line-height: 1.5;
}



/* ---- pkgPromo/pages/paydone/paydone.wxss ---- */
[data-route="pkgPromo/pages/paydone/paydone"] /* pages/paydone/paydone —— 支付完成页（v7.0.110）
 * 配色沿 pay-pop / wallet 的金墨口径：奶油底、金键、墨字。 */
.pd-page {
  min-height: calc(var(--vh) * 100);
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 32) calc(var(--rpx) * 60);
  box-sizing: border-box;
  background: linear-gradient(180deg, #faf6ec 0%, #f5efe0 100%);
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-press {
  opacity: 0.85;
}
[data-route="pkgPromo/pages/paydone/paydone"] /* ① 报账区 */
.pd-hero {
  padding: calc(var(--rpx) * 46) calc(var(--rpx) * 32) calc(var(--rpx) * 36);
  border-radius: calc(var(--rpx) * 20);
  background: linear-gradient(180deg, #fffdf6 0%, #fdf8ea 100%);
  border: calc(var(--rpx) * 2) solid #eadcb8;
  text-align: center;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-hero-badge {
  width: calc(var(--rpx) * 88);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 84);
  margin: 0 auto calc(var(--rpx) * 18);
  border-radius: 50%;
  background: linear-gradient(180deg, #6fae6a 0%, #4c8f4d 100%);
  color: #fff;
  font-size: calc(var(--rpx) * 48);
  font-weight: 700;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-hero-title {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #3d2f14;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-hero-sub {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #7a6b4a;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-hero-strong {
  color: #6b4a12;
  font-weight: 700;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-hero-muted {
  color: #a3936f;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-kefu {
  margin-top: calc(var(--rpx) * 24);
  width: 100%;
  height: calc(var(--rpx) * 76);
  line-height: calc(var(--rpx) * 76);
  padding: 0;
  border-radius: calc(var(--rpx) * 12);
  background: #eef7ee;
  border: calc(var(--rpx) * 2) solid #bcd9bd;
  color: #3c7a3e;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgPromo/pages/paydone/paydone"] /* 通用卡片 */
.pd-card {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 20);
  background: #fffdf6;
  border: calc(var(--rpx) * 2) solid #eadcb8;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-card-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #3d2f14;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-card-sub {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #a3936f;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-card-note {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #8a7a52;
}
[data-route="pkgPromo/pages/paydone/paydone"] /* ② 免费取键 */
.pd-claim {
  position: absolute;
  right: calc(var(--rpx) * 28);
  margin-top: calc(var(--rpx) * -64);
  width: calc(var(--rpx) * 170);
  height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 64);
  padding: 0;
  border-radius: calc(var(--rpx) * 32);
  background: linear-gradient(180deg, #fbeecd 0%, #dcb96a 100%);
  color: #6b4a12;
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-claim::after { border: none; }
[data-route="pkgPromo/pages/paydone/paydone"] .pd-claim-busy { opacity: 0.6; }
[data-route="pkgPromo/pages/paydone/paydone"] .pd-claim-done {
  background: #f0ead8;
  color: #a3936f;
}
[data-route="pkgPromo/pages/paydone/paydone"] /* ③ 问句选项 */
.pd-opts {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-opt {
  display: flex;
  align-items: center;
  min-height: calc(var(--rpx) * 84);
  padding: 0 calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 14);
  border: calc(var(--rpx) * 2) solid #e5d9b8;
  background: #fffef9;
  color: #4a3c1e;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-opt-on {
  border-color: #cfa64f;
  background: #fbf3dc;
  font-weight: 700;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-opt-mark {
  width: calc(var(--rpx) * 40);
  color: #6b4a12;
  font-weight: 700;
}
[data-route="pkgPromo/pages/paydone/paydone"] /* ④ 分享横幅 */
.pd-share {
  margin-top: calc(var(--rpx) * 32);
  width: 100%;
  padding: calc(var(--rpx) * 24) 0;
  border-radius: calc(var(--rpx) * 18);
  background: linear-gradient(180deg, #fbeecd 0%, #dcb96a 100%);
  color: #5a3d0d;
  text-align: center;
  box-shadow: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 24) rgba(150, 105, 25, 0.2);
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-share::after { border: none; }
[data-route="pkgPromo/pages/paydone/paydone"] .pd-share-main {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-share-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #7d6330;
}
[data-route="pkgPromo/pages/paydone/paydone"] /* 完成键 */
.pd-done {
  margin-top: calc(var(--rpx) * 40);
  width: 100%;
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  padding: 0;
  border-radius: calc(var(--rpx) * 14);
  background: #433b2a;
  color: #f7efdb;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
}
[data-route="pkgPromo/pages/paydone/paydone"] .pd-done::after { border: none; }
[data-route="pkgPromo/pages/paydone/paydone"] .pd-fine {
  margin-top: calc(var(--rpx) * 14);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  color: #a3936f;
}



/* ---- pkgOps/pages/admin/admin.wxss ---- */
[data-route="pkgOps/pages/admin/admin"] .app-item {
  padding: calc(var(--rpx) * 20) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/admin/admin"] .app-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: calc(var(--rpx) * 6);
}
[data-route="pkgOps/pages/admin/admin"] .app-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
}
[data-route="pkgOps/pages/admin/admin"] .app-intro {
  margin-top: calc(var(--rpx) * 6);
  line-height: 1.6;
}
[data-route="pkgOps/pages/admin/admin"] .uid {
  margin-top: calc(var(--rpx) * 6);
  word-break: break-all;
}
[data-route="pkgOps/pages/admin/admin"] .app-form {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/admin/admin"] .picker {
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 22);
  font-size: calc(var(--rpx) * 28);
  flex-shrink: 0;
}
[data-route="pkgOps/pages/admin/admin"] .price-input {
  width: calc(var(--rpx) * 130);
  flex-shrink: 0;
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/admin/admin"] .price-unit {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  flex-shrink: 0;
}
[data-route="pkgOps/pages/admin/admin"] .grant-row {
  display: flex;
  gap: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/admin/admin"] .grant-note {
  flex: 1;
}
[data-route="pkgOps/pages/admin/admin"] .app-actions {
  display: flex;
  justify-content: flex-end;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/admin/admin"] .app-actions .btn-mini {
  margin-left: 0;
}
[data-route="pkgOps/pages/admin/admin"] .err {
  margin-top: calc(var(--rpx) * 20);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/admin/admin"] /* v4.86.256 木哥令「空白行全部收紧」：本页空态压矮（全局是 calc(var(--rpx) * 80) 上下留白，
 * 管理台一张空卡顶小半屏）——只覆写本页，不动全站。 */
.empty {
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/admin/admin"] .cert-link {
  color: #576b95;
  margin: calc(var(--rpx) * 8) 0;
}
[data-route="pkgOps/pages/admin/admin"] /* ---- 老师管理：头像头 + 微信式单元格组（v4.86.256 木哥令「ui 极不合理，要紧凑，
   节约空间为原则，内容不变，严格按照微信生态的简约风格」） ----
   237 的三列列线保留（标签/内容/动作），但四行从「四个各自带底的胖盒子」
   收成**一组微信式单元格**：共用一块底、行间只留发丝线，行高 96 → 72；
   保存键从大绿 slab 收成小片；风纪行的按钮不再换行、说明小字不再一宇一行竖排。 */

.mentor-item {
  padding: calc(var(--rpx) * 20) 0;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-admin-row {
  display: flex;
  align-items: center;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/admin/admin"] .mentor-admin-avatar {
  width: calc(var(--rpx) * 80);
  height: calc(var(--rpx) * 80);
  border-radius: 50%;
  margin-right: calc(var(--rpx) * 18);
  flex-shrink: 0;
  background: #ffffff;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-admin-avatar-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #e8f7ee;
  color: #07c160;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-admin-info {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-line1 {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 12);
  min-width: 0;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-line2 {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pkgOps/pages/admin/admin"] .status-pill {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 6);
}
[data-route="pkgOps/pages/admin/admin"] .pill-on {
  background: #e8f7ee;
  color: #07c160;
}
[data-route="pkgOps/pages/admin/admin"] .pill-off {
  background: #f2f2f2;
  color: #b2b2b2;
}
[data-route="pkgOps/pages/admin/admin"] /* 暂停/恢复：淡红底小胶囊（微信式次级危险动作，不再是裸文字） */
.mentor-toggle {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  background: #feeceb;
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/admin/admin"] /* 单元格组：一块底、发丝线分行（不再每行一个独立盒子） */
.mentor-cells {
  margin-top: 0;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  overflow: hidden;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-cell {
  display: flex;
  align-items: center;
  min-height: calc(var(--rpx) * 72);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20);

  background: transparent;
  border-radius: 0;
  margin-bottom: 0;
  border-bottom: calc(var(--rpx) * 1) solid #ececec;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-cell-last {
  border-bottom: none;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-cell-top {
  align-items: flex-start;
}
[data-route="pkgOps/pages/admin/admin"] /* 列 1：标签（行 1 用级别 picker 当标签，同宽 ⇒ 四行左列对齐） */
.mentor-label-pick {
  width: calc(var(--rpx) * 176);
  flex-shrink: 0;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-picker {
  background: transparent;
  padding: 0;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-cell-label {
  width: calc(var(--rpx) * 176);
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgOps/pages/admin/admin"] /* 列 2：内容（输入框同宽 calc(var(--rpx) * 120)，说明文字同色 calc(var(--rpx) * 24)）；
 * 风纪格内状态行/按钮行两行堆叠靠 wrap */
.mentor-cell-main {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 8) calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/admin/admin"] .mentor-cell-top .mentor-cell-main {
  align-items: flex-start;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-num {
  width: calc(var(--rpx) * 120);
  flex-shrink: 0;
  /* v4.86.272（木哥令「数字 1 和 0 显示了一半」）：input 不给显式高时，
   * 部分机型内容高度被压到比字行矮，数字被拦腰裁掉 —— 高度 / 行高一锤定音。 */
  height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 64);
  padding: 0 calc(var(--rpx) * 18);
  text-align: center;
  box-sizing: border-box;
}
[data-route="pkgOps/pages/admin/admin"] /* 列 3：动作（保存键同宽 calc(var(--rpx) * 96) 小片，右缘成一条线） */
.mentor-cell .btn-mini.mentor-save {
  width: calc(var(--rpx) * 96);
  margin-left: 0;
  padding: calc(var(--rpx) * 8) 0;
  text-align: center;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgOps/pages/admin/admin"] /* 开关（略缩，微信式） */
.grant-switch {
  flex-shrink: 0;
  transform: scale(0.8);
  transform-origin: left center;
  margin: calc(var(--rpx) * -8) 0;
}
[data-route="pkgOps/pages/admin/admin"] /* ---- 发放墨宝：用户点选列表 ---- */

.grant-tip {
  font-size: calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pkgOps/pages/admin/admin"] .user-search {
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/admin/admin"] .user-list {
  max-height: calc(var(--rpx) * 420);
  overflow-y: auto;
  border: calc(var(--rpx) * 1) solid #f2f2f2;
  border-radius: calc(var(--rpx) * 16);
  margin-bottom: calc(var(--rpx) * 18);
}
[data-route="pkgOps/pages/admin/admin"] .user-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 20);

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/admin/admin"] .user-row-on {
  background: #e8f7ee;
}
[data-route="pkgOps/pages/admin/admin"] .user-id {
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/admin/admin"] .user-balance {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgOps/pages/admin/admin"] /* ---- 充值确认 ---- */

.pending-badge {
  margin-left: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  background: #feeceb;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  font-weight: 600;
}
[data-route="pkgOps/pages/admin/admin"] .user-row-on .user-balance {
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgOps/pages/admin/admin"] /* ---- 运营工具入口（v4.86.19 · 管理入口集中） ---- */

.ops-row {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/admin/admin"] .ops-btn {
  flex: 1 1 auto;
  min-width: calc(var(--rpx) * 160);
  padding: calc(var(--rpx) * 18) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/admin/admin"] /* ---- 开通课程授权（v4.86.22 · A 组 §三#2） ----
   木哥 2026-10-11 口径：开通课程只给管理员，要帮忙的老师单独授权。
   开关样式已并入上面老师管理单元格段。 */

/* ---- 风纪 · 解封 / 差评清零（v4.86.202；v4.86.237 合进「风纪」格）----
   同一格两行：上一行报状态（封禁到期 / 差评次数 / 黑名单），下一行两个按钮。
   状态文字**不做窄屏截断**（vice-text 不设 ellipsis）——「封禁中 · 到 10-16 23:10」
   被截成「封禁中 · 到 10…」就等于没说，而这一行恰恰是要人看清楚的。 */
.vice-line {
  display: flex;
  align-items: flex-start;
  gap: calc(var(--rpx) * 12);
  width: 100%;
}
[data-route="pkgOps/pages/admin/admin"] .vice-text {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: calc(var(--rpx) * 34);
}
[data-route="pkgOps/pages/admin/admin"] .vice-warn {
  color: #c0392b;
}
[data-route="pkgOps/pages/admin/admin"] /* v4.86.454：反向操作按钮的警示配色 —— 驳回入账 / 驳回退墨宝 / 驳回退货这三处 wxml
   挂了 `btn-mini warn`，可全站 wxss 里一条 .warn 都没有：结果「确认入账」（绿底）和
   「驳回退墨宝」长得一模一样，管理端点错一次就是钱的错。这里补上红调，尺寸沿用
   .btn-mini，只换配色。 */
.btn-mini.warn {
  background: #feeceb;
  color: #fa5151;
  border: calc(var(--rpx) * 1) solid #fbd9d7;
}
[data-route="pkgOps/pages/admin/admin"] /* 「本地豁免」角标（v4.86.208）：这位老师的解封只落在本地台账、云库还没落地
   （补位名单 = 申请过解封且 !cloudUnban）。云库真解封过的人**不在**名单 ⇒ 永不误标。 */
.vice-amnesty {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #b26a00;
  background: #fff4e5;
  line-height: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/admin/admin"] .vice-actions {
  margin-top: calc(var(--rpx) * 6);
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 12);
  width: 100%;
  /* v4.86.272（木哥令）：按键整行**左对齐**（从卡左缘起排，不再缩在内容列里） */
  justify-content: flex-start;
}
[data-route="pkgOps/pages/admin/admin"] /* v4.86.272（木哥令）：风纪行改上下两段 —— 上段「风纪标签 + 状态字」一行顶对齐
 * （标签行高与状态字同为 calc(var(--rpx) * 34)，两条线齐平）；下段按键行占满整行。
 * .mentor-cell-block 只把这一行改块状，不影响别的三列行。 */
.mentor-cell-block {
  display: block;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-cell-top.mentor-cell-block {
  align-items: flex-start;
}
[data-route="pkgOps/pages/admin/admin"] .vice-top {
  display: flex;
  align-items: flex-start;
  width: 100%;
}
[data-route="pkgOps/pages/admin/admin"] .mentor-cell-block .mentor-cell-label {
  line-height: calc(var(--rpx) * 34);
}
[data-route="pkgOps/pages/admin/admin"] .vice-actions .btn-mini {
  margin-left: 0;
  flex-shrink: 0;
  white-space: nowrap;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/admin/admin"] .vice-note {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  text-align: right;
  line-height: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/admin/admin"] /* v4.86.272：说明文字不再右贴边被裁 —— 键右留下自然间隙，放不下就整句换行 */
.vice-actions .vice-note {
  text-align: left;
  flex-shrink: 1;
}



/* ---- pkgOps/pages/chatpick/chatpick.wxss ---- */
[data-route="pkgOps/pages/chatpick/chatpick"] /* 作业库选件（v4.86.579）—— 字号只用 5 档（20/24/28/32/calc(var(--rpx) * 40)），
   圆角只用 calc(var(--rpx) * 10) / calc(var(--rpx) * 999)，与全站口径一致 */
.cp-wrap {
  min-height: calc(var(--vh) * 100);
  background: #ededed;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 24) calc(var(--rpx) * 160);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-tabs {
  display: flex;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 8);
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-tab {
  flex: 1;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #666666;
  padding: calc(var(--rpx) * 16) 0;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-tab-on {
  background: #e8f5e9;
  color: #2e7d32;
  font-weight: 600;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-seg {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-seg-i {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-seg-on {
  background: #2e7d32;
  color: #ffffff;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-tip {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  text-align: center;
  padding: calc(var(--rpx) * 120) calc(var(--rpx) * 40);
  line-height: 1.6;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-grid {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-cell {
  width: calc((100% - calc(var(--rpx) * 40)) / 3);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  overflow: hidden;
  padding-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-thumb {
  position: relative;
  width: 100%;
  height: calc(var(--rpx) * 200);
  background: #f2f2f2;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-img {
  width: 100%;
  height: 100%;
  display: block;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-ph {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 24);
  color: #bbbbbb;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-badge {
  position: absolute;
  top: 0;
  right: 0;
  font-size: calc(var(--rpx) * 20);
  color: #ffffff;
  background: #2e7d32;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 10);
  border-bottom-left-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-play {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  line-height: calc(var(--rpx) * 56);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
  background: rgba(0, 0, 0, 0.45);
  border-radius: 50%;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-date {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 12) 0;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-title {
  font-size: calc(var(--rpx) * 24);
  color: #333333;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 12) 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-meta {
  display: flex;
  gap: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 12) 0;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-mk {
  font-size: calc(var(--rpx) * 20);
  color: #1e6fd9;
  background: #e8f0fe;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-mk-v {
  color: #b26a00;
  background: #fff4e0;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-foot {
  margin-top: calc(var(--rpx) * 28);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  line-height: 1.6;
  text-align: center;
}
[data-route="pkgOps/pages/chatpick/chatpick"] .cp-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: transparent;
}



/* ---- pkgOps/pages/push/push.wxss ---- */
[data-route="pkgOps/pages/push/push"] /* 推广工作站（B-7 / G-23d）
 * 出摊用的一页，要能在阳光下的手机上看清 —— 字大、对比高。
 * 视觉沿用全站微信绿系（绿底卡 #e9f8ef / 主绿 #07c160 / 标题 #0a7a3d）。 */

.desk {
  min-height: calc(var(--vh) * 100);
  background: #e9f8ef;
  padding: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/push/push"] /* ---------- 卡片 ---------- */
.card {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/push/push"] .card-title {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #0a7a3d;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/push/push"] .card-sub {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
  color: #4c8f68;
}
[data-route="pkgOps/pages/push/push"] .tag {
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 20);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
}
[data-route="pkgOps/pages/push/push"] .tag-warn {
  background: #fa9d3b;
}
[data-route="pkgOps/pages/push/push"] /* ---------- ① 专属码 ---------- */
.qr-box {
  display: flex;
  align-items: center;
  justify-content: center;
  height: calc(var(--rpx) * 360);
  background: #f7f7f7;
  border: calc(var(--rpx) * 2) dashed #d5f0df;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/push/push"] .qr-img {
  width: calc(var(--rpx) * 320);
  height: calc(var(--rpx) * 320);
}
[data-route="pkgOps/pages/push/push"] .qr-wait {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pkgOps/pages/push/push"] .scene-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/push/push"] .scene-label {
  font-size: calc(var(--rpx) * 28);
  color: #4c8f68;
  flex-shrink: 0;
}
[data-route="pkgOps/pages/push/push"] .scene-val {
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #191919;
  word-break: break-all;
}
[data-route="pkgOps/pages/push/push"] .scene-note {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #fa9d3b;
  line-height: 1.6;
}
[data-route="pkgOps/pages/push/push"] .ch-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  background: #f7f7f7;
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 14);
}
[data-route="pkgOps/pages/push/push"] .ch-label {
  font-size: calc(var(--rpx) * 28);
  color: #4c8f68;
  flex-shrink: 0;
}
[data-route="pkgOps/pages/push/push"] .ch-input {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgOps/pages/push/push"] .ch-btn {
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  flex-shrink: 0;
}
[data-route="pkgOps/pages/push/push"] .ch-note {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pkgOps/pages/push/push"] /* ---------- 按钮 ---------- */
.btn-row {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/push/push"] .btn {
  flex: 1;
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  border-radius: calc(var(--rpx) * 10);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
}
[data-route="pkgOps/pages/push/push"] /* ---------- ② 四计数 ---------- */
.grid {
  display: flex;
  flex-wrap: wrap;
}
[data-route="pkgOps/pages/push/push"] .cell {
  width: 50%;
  box-sizing: border-box;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 12);
  text-align: center;
}
[data-route="pkgOps/pages/push/push"] .cell-v {
  font-size: calc(var(--rpx) * 52);
  font-weight: 700;
  line-height: 1.1;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/push/push"] .cell-n {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgOps/pages/push/push"] .cell-t {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pkgOps/pages/push/push"] .grid-note {
  margin-top: calc(var(--rpx) * 16);
  padding-top: calc(var(--rpx) * 16);
  border-top: calc(var(--rpx) * 2) dashed #d5f0df;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pkgOps/pages/push/push"] /* ---------- ③ 服务费 ---------- */
.fee-row {
  display: flex;
  align-items: baseline;
}
[data-route="pkgOps/pages/push/push"] .fee-v {
  font-size: calc(var(--rpx) * 64);
  font-weight: 700;
  line-height: 1.1;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/push/push"] .fee-u {
  margin-left: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  color: #4c8f68;
}
[data-route="pkgOps/pages/push/push"] .fee-note {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  line-height: 1.6;
}
[data-route="pkgOps/pages/push/push"] /* ---------- ④ 待回访 ---------- */
.fu {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/push/push"] .fu-ico {
  width: calc(var(--rpx) * 56);
  font-size: calc(var(--rpx) * 40);
  line-height: 1.2;
}
[data-route="pkgOps/pages/push/push"] .fu-body {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/push/push"] .fu-nick {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgOps/pages/push/push"] .fu-at {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pkgOps/pages/push/push"] .fu-go {
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 24);
  border: calc(var(--rpx) * 2) solid #07c160;
  color: #07c160;
  font-size: calc(var(--rpx) * 24);
  flex-shrink: 0;
}
[data-route="pkgOps/pages/push/push"] .fu-empty {
  padding: calc(var(--rpx) * 16) 0;
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  line-height: 1.6;
}
[data-route="pkgOps/pages/push/push"] /* ---------- ④b 超时（SLA 巡库 · A-10 / G-24c） ---------- */
.badge-warn {
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 20);
  background: #e5484d;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
}
[data-route="pkgOps/pages/push/push"] .od-lead {
  font-size: calc(var(--rpx) * 28);
  color: #4c8f68;
  line-height: 1.6;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/push/push"] .od-more {
  margin-top: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 20) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #0a7a3d;
  background: #f2fbf6;
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/push/push"] .od {
  padding: calc(var(--rpx) * 22) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/push/push"] .od-top {
  display: flex;
  align-items: center;
  margin-bottom: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/push/push"] .od-kind {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pkgOps/pages/push/push"] .od-over {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  color: #e5484d;
}
[data-route="pkgOps/pages/push/push"] .od-note {
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  line-height: 1.6;
  margin-bottom: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/push/push"] .od-meta {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pkgOps/pages/push/push"] .od-assign-btn {
  display: inline-block;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 28);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  background: #e8f7ee;
  border: calc(var(--rpx) * 1) solid #bfe8cd;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/push/push"] .od-assign {
  display: flex;
  align-items: center;
}
[data-route="pkgOps/pages/push/push"] .od-assign-input {
  flex: 1;
  min-width: 0;
  height: calc(var(--rpx) * 64);
  padding: 0 calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #191919;
  background: #f7fbf9;
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 12);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/push/push"] .od-assign-go {
  margin-left: calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 28);
  height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 64);
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/push/push"] .od-assign-off {
  background: #a8dfc0;
}
[data-route="pkgOps/pages/push/push"] .od-assign-x {
  margin-left: calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 12);
  height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 64);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgOps/pages/push/push"] .od-empty {
  padding: calc(var(--rpx) * 16) 0;
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  line-height: 1.6;
}
[data-route="pkgOps/pages/push/push"] .od-foot {
  margin-top: calc(var(--rpx) * 18);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pkgOps/pages/push/push"] /* ---------- ⑤ 反刷三条 ---------- */
.anti {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 18) 0;
}
[data-route="pkgOps/pages/push/push"] .anti-ico {
  width: calc(var(--rpx) * 56);
  font-size: calc(var(--rpx) * 32);
  line-height: 1.3;
}
[data-route="pkgOps/pages/push/push"] .anti-body {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/push/push"] .anti-t {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #191919;
}
[data-route="pkgOps/pages/push/push"] .anti-x {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  line-height: 1.6;
}
[data-route="pkgOps/pages/push/push"] /* ---------- 脚注 ---------- */
.foot {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 32) 0;
  text-align: center;
}
[data-route="pkgOps/pages/push/push"] .foot-note {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pkgOps/pages/push/push"] /* ④c 渠道口令入口（A-7） */
.chd-note {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  line-height: 1.6;
}
[data-route="pkgOps/pages/push/push"] .chd-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #bfe6cf;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/push/push"] .chd-t {
  font-size: calc(var(--rpx) * 28);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/push/push"] .chd-x {
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
}



/* ---- pkgOps/pages/notice/notice.wxss ---- */
[data-route="pkgOps/pages/notice/notice"] /* 系统通知（v4.86.555）—— 版式照 pkgOps/pages/goods-admin；字号只用 20/24/28/32 */
.page {
  padding: calc(var(--rpx) * 24);
  padding-bottom: calc(var(--rpx) * 48);
}
[data-route="pkgOps/pages/notice/notice"] .center { text-align: center; }
[data-route="pkgOps/pages/notice/notice"] .right { text-align: right; }
[data-route="pkgOps/pages/notice/notice"] .card {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/notice/notice"] .card-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222222;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/notice/notice"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgOps/pages/notice/notice"] .fine {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  margin-top: calc(var(--rpx) * 8);
  line-height: 1.6;
}
[data-route="pkgOps/pages/notice/notice"] .in-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/notice/notice"] .in-label {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  width: calc(var(--rpx) * 96);
  flex-shrink: 0;
}
[data-route="pkgOps/pages/notice/notice"] .in {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #222222;
  background: #f6f7f8;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16);
  min-height: calc(var(--rpx) * 56);
  line-height: calc(var(--rpx) * 56);
}
[data-route="pkgOps/pages/notice/notice"] .ta {
  width: 100%;
  box-sizing: border-box;
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  color: #222222;
  background: #f6f7f8;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 16);
  min-height: calc(var(--rpx) * 180);
  line-height: 1.6;
}
[data-route="pkgOps/pages/notice/notice"] .btn-row {
  display: flex;
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/notice/notice"] .btn {
  flex: 1;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 20) 0;
  border-radius: calc(var(--rpx) * 999);
  margin-left: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/notice/notice"] .btn:first-child { margin-left: 0; }
[data-route="pkgOps/pages/notice/notice"] .btn.main {
  color: #ffffff;
  background: #07c160;
  font-weight: 600;
}
[data-route="pkgOps/pages/notice/notice"] .btn.ghost {
  color: #4b3818;
  background: #f8f1e2;
}
[data-route="pkgOps/pages/notice/notice"] .btn.busy { opacity: 0.6; }
[data-route="pkgOps/pages/notice/notice"] /* 本版会发出去的那句（只核对，不用点） */
.ver-box {
  margin-top: calc(var(--rpx) * 16);
  background: #f8f1e2;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/notice/notice"] .ver-line {
  font-size: calc(var(--rpx) * 24);
  color: #4b3818;
  line-height: 1.6;
}
[data-route="pkgOps/pages/notice/notice"] /* 发过的 */
.hist {
  border-top: calc(var(--rpx) * 1) solid #f0f0f0;
  padding-top: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/notice/notice"] .hist-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/notice/notice"] .hist-title {
  font-size: calc(var(--rpx) * 28);
  color: #222222;
  font-weight: 600;
}
[data-route="pkgOps/pages/notice/notice"] .hist-sent {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pkgOps/pages/notice/notice"] .hist-text {
  font-size: calc(var(--rpx) * 24);
  color: #444444;
  line-height: 1.6;
  margin-top: calc(var(--rpx) * 8);
  word-break: break-all;
}



/* ---- pkgOps/pages/hub/hub.wxss ---- */
[data-route="pkgOps/pages/hub/hub"] /* 中枢看板（A-10 · G-24d）
 * 管理员在手机上扫一眼就知道「今天该管什么」——
 * 所以：字大、分组清楚、要处理的项**用颜色跳出来**。
 * 视觉沿用全站微信绿系（绿底 #e9f8ef / 主绿 #07c160 / 标题 #0a7a3d /
 * 警示用橙 #c46a1a —— 与工作台的 tag-warn 同色系）。 */

.hub {
  min-height: calc(var(--vh) * 100);
  background: #e9f8ef;
  padding: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/hub/hub"] .hub-head {
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 32) calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/hub/hub"] .hub-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/hub/hub"] .hub-sub {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
}
[data-route="pkgOps/pages/hub/hub"] /* 有 X 项要办：页头就给结论，别让管理员自己数红牌。
   用橙（#c46a1a，与 tag-warn 同色系）—— 它是「提醒」不是「报错」。 */
.hub-warn {
  display: inline-block;
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 24);
  background: #fdf1e3;
  border: calc(var(--rpx) * 2) solid #f3d3a8;
  border-radius: calc(var(--rpx) * 999);
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  color: #c46a1a;
}
[data-route="pkgOps/pages/hub/hub"] /* 没有要办的：同一位置换成安静的绿，避免「0 项」看着也像告警 */
.hub-warn-ok {
  background: #ffffff;
  border-color: #d5f0df;
  color: #4c8f68;
  font-weight: 400;
}
[data-route="pkgOps/pages/hub/hub"] .hub-loading, [data-route="pkgOps/pages/hub/hub"] .hub-empty {
  margin: 0 calc(var(--rpx) * 32);
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  text-align: center;
}
[data-route="pkgOps/pages/hub/hub"] /* ---------- 分组 ---------- */
.g {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/hub/hub"] .g-title {
  margin-bottom: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/hub/hub"] .g-cards {
  display: flex;
  flex-wrap: wrap;
}
[data-route="pkgOps/pages/hub/hub"] .c {
  width: calc(var(--rpx) * 214);
  margin: 0 calc(var(--rpx) * 12) calc(var(--rpx) * 12) 0;
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 18);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 20);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/hub/hub"] /* 要处理的项：浅橙底 + 橙描边，一眼跳出来 */
.c-warn {
  background: #fff6ec;
  border-color: #f5cfa2;
}
[data-route="pkgOps/pages/hub/hub"] .c-v {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #191919;
  line-height: 1.2;
}
[data-route="pkgOps/pages/hub/hub"] .c-warn .c-v {
  color: #c46a1a;
}
[data-route="pkgOps/pages/hub/hub"] .c-l {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
}
[data-route="pkgOps/pages/hub/hub"] .c-f {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #c46a1a;
}
[data-route="pkgOps/pages/hub/hub"] /* ---------- 脚注 ---------- */
.hub-foot {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 32) 0;
}
[data-route="pkgOps/pages/hub/hub"] .hub-note {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}



/* ---- pkgOps/pages/ship/ship.wxss ---- */
[data-route="pkgOps/pages/ship/ship"] /* 发货台（v4.86.396）—— 版式照 pkgOps 现有页 */
.page {
  padding: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/ship/ship"] .center { text-align: center; }
[data-route="pkgOps/pages/ship/ship"] .card {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/ship/ship"] .card-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222222;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/ship/ship"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgOps/pages/ship/ship"] .fine { font-size: calc(var(--rpx) * 20); color: #999999; margin-bottom: calc(var(--rpx) * 8); }
[data-route="pkgOps/pages/ship/ship"] .bar {
  display: flex;
  align-items: center;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/ship/ship"] .bar-t {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #222222;
}
[data-route="pkgOps/pages/ship/ship"] .bar-btn {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pkgOps/pages/ship/ship"] .err {
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 4) calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/ship/ship"] .row-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
[data-route="pkgOps/pages/ship/ship"] .no {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgOps/pages/ship/ship"] .late {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pkgOps/pages/ship/ship"] .late-red {
  color: #fa5151;
  font-weight: 700;
}
[data-route="pkgOps/pages/ship/ship"] .row-t {
  font-size: calc(var(--rpx) * 28);
  color: #222222;
  margin: calc(var(--rpx) * 8) 0;
}
[data-route="pkgOps/pages/ship/ship"] .ship-row {
  display: flex;
  gap: calc(var(--rpx) * 12);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/ship/ship"] .ship-input {
  flex: 1;
  border: calc(var(--rpx) * 1) solid #dddddd;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/ship/ship"] .ship-input.wide { flex: 1.4; }
[data-route="pkgOps/pages/ship/ship"] .btn-row { margin-top: calc(var(--rpx) * 16); }
[data-route="pkgOps/pages/ship/ship"] .btn {
  background: #07c160;
  color: #ffffff;
  border-radius: calc(var(--rpx) * 999);
  text-align: center;
  padding: calc(var(--rpx) * 18);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgOps/pages/ship/ship"] .btn.mini { padding: calc(var(--rpx) * 12) 0; }
[data-route="pkgOps/pages/ship/ship"] .btn.dis { opacity: 0.6; }
[data-route="pkgOps/pages/ship/ship"] .batch-area {
  width: 100%;
  box-sizing: border-box;
  min-height: calc(var(--rpx) * 160);
  border: calc(var(--rpx) * 1) solid #dddddd;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/ship/ship"] .batch-result { margin-top: calc(var(--rpx) * 12); }
[data-route="pkgOps/pages/ship/ship"] .batch-line { font-size: calc(var(--rpx) * 20); padding: calc(var(--rpx) * 4) 0; }
[data-route="pkgOps/pages/ship/ship"] .ok { color: #07c160; }
[data-route="pkgOps/pages/ship/ship"] .bad { color: #fa5151; }



/* ---- pkgOps/pages/goods-admin/goods-admin.wxss ---- */
[data-route="pkgOps/pages/goods-admin/goods-admin"] /* 商品后台（v4.86.397）—— 版式照 pkgOps/pages/ship */
.page {
  padding: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .center { text-align: center; }
[data-route="pkgOps/pages/goods-admin/goods-admin"] .card {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .card-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222222;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .fine {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .tabs {
  display: flex;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .tab {
  flex: 1;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #666666;
  padding: calc(var(--rpx) * 16) 0;
  border-radius: calc(var(--rpx) * 999);
  background: #ffffff;
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .tab.on {
  color: #ffffff;
  background: #07c160;
  font-weight: 600;
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .row-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .o-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222222;
  flex: 1;
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .chip {
  font-size: calc(var(--rpx) * 20);
  color: #666666;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .in-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .in-row.col {
  flex-direction: column;
  align-items: stretch;
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .in-label {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .in-row.col .in-label {
  margin: calc(var(--rpx) * 12) 0 calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .in {
  flex: 1;
  min-width: 0;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #222222;
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .in.wide {
  margin-right: 0;
  box-sizing: border-box;
  width: 100%;
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .act {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  margin-left: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .act.main {
  background: #07c160;
  color: #ffffff;
  font-weight: 600;
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .err {
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 4) calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .btn-row {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .btn {
  background: #07c160;
  color: #ffffff;
  border-radius: calc(var(--rpx) * 999);
  text-align: center;
  padding: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgOps/pages/goods-admin/goods-admin"] .btn.dis { opacity: 0.6; }



/* ---- pkgOps/pages/card-admin/card-admin.wxss ---- */
[data-route="pkgOps/pages/card-admin/card-admin"] /* 学习卡待激活（v7.0.156 · 管理员）· 字号只走 20/24/28/32/40 五档 */

.lca {
  padding-bottom: calc(var(--rpx) * 40);
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-top {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 8) calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-tabs {
  display: flex;
  background: #f2f4f6;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 6);
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-tab {
  flex: 1;
  text-align: center;
  padding: calc(var(--rpx) * 14) 0;
  border-radius: calc(var(--rpx) * 999);
  font-size: calc(var(--rpx) * 24);
  color: #555555;
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-tab.on {
  background: #ffffff;
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-tip {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  line-height: 1.6;
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-item {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 8) calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  border: calc(var(--rpx) * 2) solid #eeeeee;
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-id {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-st {
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: #fff8e6;
  border: calc(var(--rpx) * 2) solid #f5e0a8;
  color: #8a6a1f;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-st.on {
  background: #e8f8ef;
  border-color: #b7e6c9;
  color: #07843f;
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-title {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  line-height: 1.5;
  font-weight: 600;
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-line {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
  word-break: break-all;
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-copy {
  margin-left: calc(var(--rpx) * 16);
  color: #4a90d9;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-err {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #d9534f;
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-acts {
  display: flex;
  justify-content: flex-end;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-btn {
  padding: 0 calc(var(--rpx) * 32);
  height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 64);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-btn.off {
  background: #cfd8d2;
}
[data-route="pkgOps/pages/card-admin/card-admin"] .lca-fine {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 16) 0;
  font-size: calc(var(--rpx) * 20);
  color: #aaaaaa;
  line-height: 1.7;
}



/* ---- pkgOps/pages/words/words.wxss ---- */
[data-route="pkgOps/pages/words/words"] /** 工作台 · 渠道口令 —— 全站微信绿系，字号落格五档 */
.page {
  min-height: calc(var(--vh) * 100);
  background: #f4f7f5;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/words/words"] .card {
  background: #e9f8ef;
  border: calc(var(--rpx) * 1) solid #bfe6cd;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 28) calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/words/words"] .card-quiet {
  background: #ffffff;
  border-color: #e2e2e2;
}
[data-route="pkgOps/pages/words/words"] .card-t {
  font-size: calc(var(--rpx) * 32);
  color: #0a7a3d;
  line-height: 1.4;
}
[data-route="pkgOps/pages/words/words"] .card-s {
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/words/words"] .empty {
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  padding: calc(var(--rpx) * 32) 0;
  text-align: center;
}
[data-route="pkgOps/pages/words/words"] /* ① 口令卡 */
.w-item {
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #d5eee0;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/words/words"] .w-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/words/words"] .w-word {
  font-size: calc(var(--rpx) * 40);
  color: #0a7a3d;
  letter-spacing: calc(var(--rpx) * 4);
}
[data-route="pkgOps/pages/words/words"] .w-kind {
  font-size: calc(var(--rpx) * 20);
  color: #4c8f68;
  background: #eef8f2;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/words/words"] .w-stats {
  display: flex;
  margin-top: calc(var(--rpx) * 18);
}
[data-route="pkgOps/pages/words/words"] .w-stat {
  flex: 1;
  text-align: center;
}
[data-route="pkgOps/pages/words/words"] .w-k {
  display: block;
  font-size: calc(var(--rpx) * 20);
  color: #4c8f68;
}
[data-route="pkgOps/pages/words/words"] .w-v {
  display: block;
  font-size: calc(var(--rpx) * 28);
  color: #0a7a3d;
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pkgOps/pages/words/words"] /* ② tabs */
.tabs {
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/words/words"] .tab {
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #d5eee0;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 24);
  margin: 0 calc(var(--rpx) * 12) calc(var(--rpx) * 12) 0;
}
[data-route="pkgOps/pages/words/words"] .tab-on {
  color: #ffffff;
  background: #07c160;
  border-color: #0a7a3d;
}
[data-route="pkgOps/pages/words/words"] .tab-desc {
  font-size: calc(var(--rpx) * 20);
  color: #4c8f68;
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pkgOps/pages/words/words"] .ipt-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/words/words"] .ipt {
  flex: 1;
  height: calc(var(--rpx) * 76);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #d5eee0;
  border-radius: calc(var(--rpx) * 12);
  padding: 0 calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  color: #0a7a3d;
  box-sizing: border-box;
}
[data-route="pkgOps/pages/words/words"] .ipt-full {
  width: 100%;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/words/words"] .ph {
  color: #9dc4ae;
}
[data-route="pkgOps/pages/words/words"] .btn {
  width: calc(var(--rpx) * 170);
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  margin: 0 0 0 calc(var(--rpx) * 16);
  padding: 0;
  font-size: calc(var(--rpx) * 28);
  color: #ffffff;
  background: #07c160;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/words/words"] .btn::after {
  border: none;
}
[data-route="pkgOps/pages/words/words"] .btn-full {
  width: 100%;
  margin: calc(var(--rpx) * 24) 0 0;
}
[data-route="pkgOps/pages/words/words"] .btn-off {
  background: #a6e0be;
}
[data-route="pkgOps/pages/words/words"] .msg {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 18);
}
[data-route="pkgOps/pages/words/words"] .hr {
  height: calc(var(--rpx) * 1);
  background: #cfe9da;
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/words/words"] /* ③ 台账 */
.lg {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #d5eee0;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 22);
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pkgOps/pages/words/words"] .lg-main {
  flex: 1;
  min-width: 0;
  padding-right: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/words/words"] .lg-who {
  font-size: calc(var(--rpx) * 28);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/words/words"] .lg-note {
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  margin-top: calc(var(--rpx) * 6);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pkgOps/pages/words/words"] .lg-right {
  text-align: right;
  flex-shrink: 0;
}
[data-route="pkgOps/pages/words/words"] .lg-amt {
  font-size: calc(var(--rpx) * 32);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/words/words"] .lg-time {
  font-size: calc(var(--rpx) * 20);
  color: #4c8f68;
  margin-top: calc(var(--rpx) * 6);
}



/* ---- pkgOps/pages/tclass/list.wxss ---- */
[data-route="pkgOps/pages/tclass/list"] /* 班级点评 · 班级列表（v4.86.267）
   视觉：深绿头 + 浅绿底 + 白卡。全站绿系（#07c160 / #0a7a3d），
   与 pkgOps/hub、财富页同一套；卡内分行用灰底圆角块，不画细线。 */

.page {
  min-height: calc(var(--vh) * 100);
  background: #f2f7f4;
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/tclass/list"] .hero {
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(var(--rpx) * 40);
  background: linear-gradient(160deg, #0a7a3d 0%, #0e9450 100%);
}
[data-route="pkgOps/pages/tclass/list"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pkgOps/pages/tclass/list"] .hero-s {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.86);
}
[data-route="pkgOps/pages/tclass/list"] .hero-tags {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 12);
  margin-top: calc(var(--rpx) * 22);
}
[data-route="pkgOps/pages/tclass/list"] .hero-tag {
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(255, 255, 255, 0.16);
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/list"] .card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/tclass/list"] .card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/list"] .card-s {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/list"] .card-s.tip {
  margin-top: calc(var(--rpx) * 16);
  color: #a08a55;
}
[data-route="pkgOps/pages/tclass/list"] .row-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/tclass/list"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/list"] .empty {
  padding: calc(var(--rpx) * 40) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/list"] .err {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #c0392b;
}
[data-route="pkgOps/pages/tclass/list"] /* 班级行 */
.cls {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 14);
  background: #f4f8f5;
}
[data-route="pkgOps/pages/tclass/list"] .cls:active {
  background: #e9f3ec;
}
[data-route="pkgOps/pages/tclass/list"] .cls-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/tclass/list"] .cls-n {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/list"] .cls-sub {
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #e2f2e7;
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/list"] .cls-meta {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/list"] .cls-meta .dot {
  margin: 0 calc(var(--rpx) * 10);
  color: #c2d0c7;
}
[data-route="pkgOps/pages/tclass/list"] .cls-go {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 40);
  color: #b9c9bf;
}
[data-route="pkgOps/pages/tclass/list"] /* 新建班 */
.ipt {
  margin-top: calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 84);
  padding: 0 calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 12);
  background: #f4f8f5;
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/list"] .subj-row {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 14);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/tclass/list"] .subj {
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 999);
  background: #f4f8f5;
  font-size: calc(var(--rpx) * 24);
  color: #4f665a;
}
[data-route="pkgOps/pages/tclass/list"] .subj-on {
  background: #e2f2e7;
  color: #0a7a3d;
  font-weight: 600;
}
[data-route="pkgOps/pages/tclass/list"] .btn-primary {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/tclass/list"] /* 用法三步 */
.how {
  margin-top: calc(var(--rpx) * 18);
}
[data-route="pkgOps/pages/tclass/list"] .how-i {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  margin-bottom: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 12);
  background: #f4f8f5;
}
[data-route="pkgOps/pages/tclass/list"] .how-n {
  flex-shrink: 0;
  width: calc(var(--rpx) * 40);
  height: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 16);
  border-radius: 50%;
  background: #0a7a3d;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 40);
  text-align: center;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/list"] .how-t {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/list"] .how-d {
  flex: 1;
  margin-left: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
  color: #7d8f85;
  text-align: right;
}


/* 档位卡已搬到 /pkgOps/pages/tclass/plan（木哥 2026-10-23 14:1x：
   班级点评页不出现任何收费痕迹），本页不再保留 tier 样式。 */



/* ---- components/gold-modal/gold-modal.wxss ---- */
[data-comp="components/gold-modal/gold-modal"] /* 收费面金弹窗（v4.86.494）
   与 components/pay-pop、pages/wallet 同一套金铜系：
   主金 #a8792c / 亮金 #d8b25c / 边金 #c9a15c / 底金 #fdf8ec / 微金 #fffdf6 / 深棕 #6b4d14。
   字号（v4.86.550 统一到微信弹窗表）：标题 / 按键 calc(var(--rpx) * 32) ｜ 正文说明 calc(var(--rpx) * 28) ｜
   单位与卖点小注 calc(var(--rpx) * 24) ｜ 注脚 calc(var(--rpx) * 20)；价格是展示级数字（calc(var(--rpx) * 46)），不算文字刻度。 */

.gm-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 calc(var(--rpx) * 44);
  background: rgba(36, 26, 12, 0.55);
}
[data-comp="components/gold-modal/gold-modal"] .gm-box {
  position: relative;
  width: 100%;
  max-width: calc(var(--rpx) * 620);
  padding: calc(var(--rpx) * 44) calc(var(--rpx) * 36) calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 24);
  border: calc(var(--rpx) * 2) solid #e3cf9f;
  background: linear-gradient(180deg, #fffdf6 0%, #fdf8ec 42%, #ffffff 100%);
  box-shadow: 0 calc(var(--rpx) * 18) calc(var(--rpx) * 56) rgba(60, 40, 10, 0.24);
  box-sizing: border-box;
  overflow: hidden;
}
[data-comp="components/gold-modal/gold-modal"] /* 顶部一条亮金压深金的细带：整块卡的金色来源，不靠阴影堆 */
.gm-cap {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  height: calc(var(--rpx) * 6);
  background: linear-gradient(90deg, #a8792c 0%, #e8cf94 45%, #d8b25c 70%, #a8792c 100%);
}
[data-comp="components/gold-modal/gold-modal"] .gm-face {
  font-size: calc(var(--rpx) * 40);
  line-height: 1.2;
  text-align: center;
  color: #a8792c;
}
[data-comp="components/gold-modal/gold-modal"] .gm-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  line-height: 1.4;
  text-align: center;
  color: #6b4d14;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-comp="components/gold-modal/gold-modal"] .gm-line {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #7a6a52;
}
[data-comp="components/gold-modal/gold-modal"] /* ---- 价目块：奶金底 + 金细边，价格是这一屏最亮的东西 ---- */
.gm-price {
  margin-top: calc(var(--rpx) * 22);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  border: calc(var(--rpx) * 1) solid #ecdcb8;
  background: #fdf8ec;
}
[data-comp="components/gold-modal/gold-modal"] .gm-price-row {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
}
[data-comp="components/gold-modal/gold-modal"] .gm-price-name {
  margin-right: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #6b4d14;
}
[data-comp="components/gold-modal/gold-modal"] .gm-price-cur {
  font-size: calc(var(--rpx) * 24);
  color: #a8792c;
}
[data-comp="components/gold-modal/gold-modal"] .gm-price-v {
  margin-left: calc(var(--rpx) * 2);
  font-size: calc(var(--rpx) * 46);
  font-weight: 700;
  line-height: 1.1;
  color: #a8792c;
}
[data-comp="components/gold-modal/gold-modal"] .gm-price-unit {
  margin-left: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #a8792c;
}
[data-comp="components/gold-modal/gold-modal"] .gm-price-pitch {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #9a8a6e;
}
[data-comp="components/gold-modal/gold-modal"] /* ---- 两颗键：左「先这样」是弱字，右「去看看」是金弹 ---- */
.gm-btns {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 28);
}
[data-comp="components/gold-modal/gold-modal"] .gm-cancel {
  flex: 0 0 calc(var(--rpx) * 210);
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  color: #a2937a;
}
[data-comp="components/gold-modal/gold-modal"] .gm-cancel-hover {
  color: #6b4d14;
}
[data-comp="components/gold-modal/gold-modal"] .gm-ok {
  flex: 1;
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  text-align: center;
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(135deg, #d8b25c, #a8792c);
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #ffffff;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-comp="components/gold-modal/gold-modal"] .gm-ok-hover {
  opacity: 0.88;
}
[data-comp="components/gold-modal/gold-modal"] .gm-fine {
  margin-top: calc(var(--rpx) * 14);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  line-height: 1.6;
  color: #b0a488;
}



/* ---- styles/gold.wxss ---- */
[data-route="pkgOps/pages/tclass/plan"] /* ==================================================================
 * 收费面金皮 · styles/gold.wxss（v4.86.494）
 * ------------------------------------------------------------------
 * 木哥 2026-10-24 23:3x 两张截图 + 一句令：
 *   「这些和收费有关的弹窗弹框和页面，都设计成金色的ui风格。全站统一这种风格。」
 *
 * 一套色，别处不许自造 —— 与 components/pay-pop（v4.86.402 开通弹窗）、
 * pages/wallet（v4.86.481 财富/充值）同一套金铜系：
 *   主金   #a8792c   价格数字 / 金按钮 / 金描边字
 *   亮金   #d8b25c   渐变亮头 / 分割线高光
 *   边金   #c9a15c   卡片描边 / 选中边
 *   底金   #fdf8ec   价目块底 / 弹窗底
 *   微金   #fffdf6   弹窗头 / 卡片顶部渐隐
 *   淡金边 #f0e6d2   细分割线 / 内框
 *   深棕   #6b4d14   标题字（比纯黑暖，和金色是一家人）
 *   金灰   #b0a488   注释小字
 *
 * 用在哪：价目页（班级档位）、开通/升级弹窗、额度墙、会员页、商城下单结算。
 * 不用在哪：班级列表、作业、点评这些功能页 —— 收费痕迹不许提前露（v4.86.443 的运营口径）。
 *
 * 字号只走 20 / 24 / 28 / 32 / 40 / ≥46（A 层五档，tools/lint-style.js 会扫）。
 * ================================================================== */

/* ---- 页面底：一层极淡金雾，不是白纸 ---- */
.gd-page {
  min-height: calc(var(--vh) * 100);
  background: linear-gradient(180deg, #fdf8ec 0%, #f8f1e2 calc(var(--rpx) * 320), #f6efe1 100%);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/tclass/plan"] /* ---- 页头：深棕金压顶 + 一条亮金细线 ---- */
.gd-hero {
  position: relative;
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(var(--rpx) * 40);
  background: linear-gradient(150deg, #43301a 0%, #6b4d14 60%, #8a6a22 100%);
  overflow: hidden;
}
[data-route="pkgOps/pages/tclass/plan"] .gd-hero::after {
  content: '';
  position: absolute;
  left: calc(var(--rpx) * 32);
  right: calc(var(--rpx) * 32);
  bottom: 0;
  height: calc(var(--rpx) * 2);
  background: linear-gradient(90deg, rgba(216, 178, 92, 0) 0%, #d8b25c 50%, rgba(216, 178, 92, 0) 100%);
}
[data-route="pkgOps/pages/tclass/plan"] .gd-hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #fdf3d8;
  letter-spacing: calc(var(--rpx) * 2);
}
[data-route="pkgOps/pages/tclass/plan"] .gd-hero-s {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: rgba(253, 243, 216, 0.78);
}
[data-route="pkgOps/pages/tclass/plan"] /* 页头右上的小印：只用来说明这一页是「价目」，不做促销角标 */
.gd-seal {
  position: absolute;
  right: calc(var(--rpx) * 32);
  top: calc(var(--rpx) * 40);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 18);
  border: calc(var(--rpx) * 1) solid rgba(216, 178, 92, 0.7);
  border-radius: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  letter-spacing: calc(var(--rpx) * 2);
  color: #e8cf94;
}
[data-route="pkgOps/pages/tclass/plan"] /* ---- 卡片：米金底 + 金描边，不做重阴影 ---- */
.gd-card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 2) solid #f0e6d2;
  background: linear-gradient(180deg, #fffdf6, #ffffff calc(var(--rpx) * 200));
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(107, 77, 20, 0.06);
}
[data-route="pkgOps/pages/tclass/plan"] .gd-card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #6b4d14;
}
[data-route="pkgOps/pages/tclass/plan"] .gd-card-s {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #8a7d66;
}
[data-route="pkgOps/pages/tclass/plan"] /* ---- 价目标签 ---- */
.gd-tag {
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 6);
  background: #fdf8ec;
  border: calc(var(--rpx) * 1) solid #c9a15c;
  font-size: calc(var(--rpx) * 20);
  color: #a8792c;
}
[data-route="pkgOps/pages/tclass/plan"] /* ---- 价格：¥ 小、数字大、周期灰 ---- */
.gd-price {
  display: flex;
  align-items: baseline;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/tclass/plan"] .gd-price-cur {
  font-size: calc(var(--rpx) * 24);
  color: #a8792c;
}
[data-route="pkgOps/pages/tclass/plan"] .gd-price-v {
  margin-left: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 46);
  font-weight: 700;
  line-height: 1.1;
  color: #a8792c;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pkgOps/pages/tclass/plan"] .gd-price-per {
  flex: 1;
  margin-left: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 20);
  color: #b0a488;
}
[data-route="pkgOps/pages/tclass/plan"] /* ---- 金按钮：亮金压主金的渐变，白字 ---- */
.gd-cta {
  margin-top: calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(135deg, #d8b25c, #a8792c);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #ffffff;
  text-align: center;
  border: none;
}
[data-route="pkgOps/pages/tclass/plan"] .gd-cta::after {
  border: none;
}
[data-route="pkgOps/pages/tclass/plan"] .gd-cta-hover {
  opacity: 0.88;
}
[data-route="pkgOps/pages/tclass/plan"] .gd-cta[disabled] {
  background: #e6dcc4;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/plan"] /* ---- 金描边的次按钮（当前档位 / 已知晓） ---- */
.gd-cta-ghost {
  margin-top: calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 76);
  border-radius: calc(var(--rpx) * 999);
  background: #fffdf6;
  border: calc(var(--rpx) * 2) solid #c9a15c;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #a8792c;
  text-align: center;
}
[data-route="pkgOps/pages/tclass/plan"] .gd-cta-ghost::after {
  border: none;
}
[data-route="pkgOps/pages/tclass/plan"] /* ---- 注释小字 ---- */
.gd-fine {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  line-height: 1.6;
  color: #b0a488;
}
[data-route="pkgOps/pages/tclass/plan"] /* ---- 细分割线 ---- */
.gd-line {
  height: calc(var(--rpx) * 2);
  margin: calc(var(--rpx) * 20) 0;
  background: linear-gradient(90deg, rgba(201, 161, 92, 0) 0%, rgba(201, 161, 92, 0.55) 50%, rgba(201, 161, 92, 0) 100%);
}



/* ---- pkgOps/pages/tclass/plan.wxss ---- */
[data-route="pkgOps/pages/tclass/plan"] /* 班级档位独立页（木哥 2026-10-23 14:1x）
 * v4.86.494（木哥 2026-10-24 23:3x 两张截图 + 「这些和收费有关的弹窗弹框和页面，
 * 都设计成金色的ui风格。全站统一这种风格。」）：
 *   原来是「深绿头 + 浅绿底 + 白卡」，跟班级点评功能页一个色 —— 可这一页是**价目页**，
 *   一进门就该知道「这里要花钱」。改成金铜系，与 pages/wallet（v4.86.481）、
 *   components/pay-pop（v4.86.402）、components/gold-modal（v4.86.494）同一套：
 *     主金 #a8792c / 亮金 #d8b25c / 边金 #c9a15c / 底金 #fdf8ec / 深棕 #6b4d14 / 金灰 #b0a488
 *   底色、页头、价格、按钮全走公共金皮 styles/gold.wxss，这一页只留档位特有的排法。 */

/* v4.86.499：这里原来写着 
   —— 子包的 wxss 用 ../../../ 越不过子包根，微信编译器报 not found（上传才暴露）。
   金皮改由根 app.wxss 全局 @import 一次，这一页直接写 gd-* 类名即可。 */

.page {
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/tclass/plan"] .hero {
  position: relative;
}
[data-route="pkgOps/pages/tclass/plan"] .card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 2) solid #f0e6d2;
  background: linear-gradient(180deg, #fffdf6, #ffffff calc(var(--rpx) * 200));
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(107, 77, 20, 0.06);
}
[data-route="pkgOps/pages/tclass/plan"] .card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #6b4d14;
}
[data-route="pkgOps/pages/tclass/plan"] .card-s {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #8a7d66;
}
[data-route="pkgOps/pages/tclass/plan"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #8a7d66;
}
[data-route="pkgOps/pages/tclass/plan"] .err {
  font-size: calc(var(--rpx) * 24);
  color: #c0392b;
}
[data-route="pkgOps/pages/tclass/plan"] /* 金按钮：与公共 .gd-cta 同一条渐变 */
.btn-primary {
  margin-top: calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(135deg, #d8b25c, #a8792c);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/plan"] .btn-primary::after {
  border: none;
}
[data-route="pkgOps/pages/tclass/plan"] /* 试用进度：一行浅金底的字，不喧哗 —— 这一页才允许出现「还剩几次」 */
.trial-note {
  margin-top: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 1) solid #ecdcb8;
  background: #fdf8ec;
  font-size: calc(var(--rpx) * 24);
  color: #a8792c;
}
[data-route="pkgOps/pages/tclass/plan"] /* ---- 档位卡：奶金底 + 金细边，价格是整张卡最亮的东西
   v4.86.542（木哥截图令）：竖排堆叠 → 横排滑动 swiper，一屏一档、
   左右露边 calc(var(--rpx) * 36)，非当前那张压暗；当前那张最亮，圆点导航在下面 ---- */
.tier-swiper {
  height: calc(var(--rpx) * 620);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/tclass/plan"] .tier {
  height: 100%;
  box-sizing: border-box;
  padding: calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 16);
  border: calc(var(--rpx) * 1) solid #ecdcb8;
  background: #fdf8ec;
  opacity: 0.5;
  transition: opacity 0.2s ease;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-on {
  opacity: 1;
  border-color: #c9a15c;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 18) rgba(168, 121, 44, 0.12);
}
[data-route="pkgOps/pages/tclass/plan"] .tier-dots {
  display: flex;
  justify-content: center;
  gap: calc(var(--rpx) * 12);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/tclass/plan"] .tier-dot {
  width: calc(var(--rpx) * 12);
  height: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #ecdcb8;
  transition: all 0.2s ease;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-dot-on {
  width: calc(var(--rpx) * 32);
  background: #a8792c;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-h {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/tclass/plan"] .tier-n {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #6b4d14;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-tag {
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  border: calc(var(--rpx) * 1) solid #c9a15c;
  background: #fffdf6;
  font-size: calc(var(--rpx) * 20);
  color: #a8792c;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-p {
  display: flex;
  align-items: baseline;
  margin-top: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/plan"] .tier-cur {
  font-size: calc(var(--rpx) * 24);
  color: #a8792c;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-v {
  margin-left: calc(var(--rpx) * 2);
  font-size: calc(var(--rpx) * 46);
  font-weight: 700;
  line-height: 1.1;
  color: #a8792c;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-per {
  flex: 1;
  margin-left: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 20);
  color: #b0a488;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-lim {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #5c5142;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-perks {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #a8792c;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-pitch {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  line-height: 1.5;
  color: #b0a488;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-buy {
  margin-top: calc(var(--rpx) * 18);
  height: calc(var(--rpx) * 76);
  line-height: calc(var(--rpx) * 76);
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(135deg, #d8b25c, #a8792c);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-buy::after {
  border: none;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-buy[disabled] {
  background: #e6dcc4;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/plan"] /* 当前在用的那一档：白底金边，不跟「去开通」抢眼 */
.tier-buy-cur {
  background: #fffdf6;
  color: #a8792c;
  border: calc(var(--rpx) * 2) solid #c9a15c;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-seat {
  margin-top: calc(var(--rpx) * 20);
  padding-top: calc(var(--rpx) * 20);
  border-top: calc(var(--rpx) * 2) solid #f0e6d2;
}
[data-route="pkgOps/pages/tclass/plan"] .tier-seat-s {
  font-size: calc(var(--rpx) * 24);
  color: #5c5142;
}



/* ---- pkgOps/pages/org/new.wxss ---- */
[data-route="pkgOps/pages/org/new"] /* 创建机构（木哥 2026-10-23 14:4x）
   视觉与班级点评同源（深绿头 + 浅绿底 + 白卡）。
   刻意不给这一页加任何"卖"的元素：没有价目、没有"升级"，只有一道手机号门槛。 */

.page {
  min-height: calc(var(--vh) * 100);
  background: #f2f7f4;
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/org/new"] .hero {
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(var(--rpx) * 40);
  background: linear-gradient(160deg, #0a7a3d 0%, #0e9450 100%);
}
[data-route="pkgOps/pages/org/new"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pkgOps/pages/org/new"] .hero-s {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.86);
}
[data-route="pkgOps/pages/org/new"] .hero-tags {
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/org/new"] .hero-tag {
  margin: 0 calc(var(--rpx) * 12) calc(var(--rpx) * 12) 0;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(255, 255, 255, 0.16);
  font-size: calc(var(--rpx) * 20);
  color: #ffffff;
}
[data-route="pkgOps/pages/org/new"] .card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/org/new"] .card.ok {
  border: calc(var(--rpx) * 2) solid #0a7a3d;
}
[data-route="pkgOps/pages/org/new"] .card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/org/new"] .card-s {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #4c6357;
}
[data-route="pkgOps/pages/org/new"] .card-s.tip {
  margin-top: calc(var(--rpx) * 18);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/new"] .ipt {
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 8);
  padding: 0 calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 84);
  line-height: calc(var(--rpx) * 84);
  border-radius: calc(var(--rpx) * 12);
  background: #f4f8f5;
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
}
[data-route="pkgOps/pages/org/new"] .row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding: calc(var(--rpx) * 10) 0;
}
[data-route="pkgOps/pages/org/new"] .row .muted {
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/new"] .row .v {
  font-size: calc(var(--rpx) * 24);
  color: #16301f;
}
[data-route="pkgOps/pages/org/new"] .err {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #c0392b;
}
[data-route="pkgOps/pages/org/new"] .org {
  padding: calc(var(--rpx) * 18) 0;
  border-bottom: calc(var(--rpx) * 2) solid #eef4f0;
}
[data-route="pkgOps/pages/org/new"] .org:last-child {
  border-bottom: 0;
}
[data-route="pkgOps/pages/org/new"] .org-n {
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
}
[data-route="pkgOps/pages/org/new"] .org-meta {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/new"] .btn-primary {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/org/new"] /* ---------------- v4.86.451：机构管理态 ---------------- */

.org-head {
  display: flex;
  align-items: flex-start;
}
[data-route="pkgOps/pages/org/new"] .org-ava {
  position: relative;
  width: calc(var(--rpx) * 132);
  height: calc(var(--rpx) * 132);
  border-radius: calc(var(--rpx) * 10);
  overflow: hidden;
  background: rgba(255, 255, 255, 0.18);
  flex-shrink: 0;
}
[data-route="pkgOps/pages/org/new"] .org-ava-img {
  width: calc(var(--rpx) * 132);
  height: calc(var(--rpx) * 132);
}
[data-route="pkgOps/pages/org/new"] /* 默认头像 = 主 logo 的灰色版（没有机构图时就用它，不额外塞一张素材占主包） */
.org-ava-gray {
  opacity: 0.55;
  filter: grayscale(100%);
}
[data-route="pkgOps/pages/org/new"] .org-ava-tag {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: calc(var(--rpx) * 32);
  line-height: calc(var(--rpx) * 32);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  color: #ffffff;
  background: rgba(0, 0, 0, 0.36);
}
[data-route="pkgOps/pages/org/new"] .org-head-main {
  flex: 1;
  min-width: 0;
  margin-left: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/org/new"] .org-name {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
  line-height: 1.3;
}
[data-route="pkgOps/pages/org/new"] .org-name-edit {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(255, 255, 255, 0.22);
  color: #ffffff;
}
[data-route="pkgOps/pages/org/new"] .org-sub {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.82);
}
[data-route="pkgOps/pages/org/new"] /* 数据概览：四个数字一行 */
.ov {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/org/new"] .ov-i {
  flex: 1;
  text-align: center;
}
[data-route="pkgOps/pages/org/new"] .ov-n {
  font-size: calc(var(--rpx) * 46);
  font-weight: 700;
  color: #0a7a3d;
  line-height: 1.2;
}
[data-route="pkgOps/pages/org/new"] .ov-l {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/new"] .ov-err {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 20);
  color: #c0392b;
}
[data-route="pkgOps/pages/org/new"] /* 管理项：一行一项，右边一个 › */
.cell {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 22) 0;
  border-bottom: calc(var(--rpx) * 2) solid #eef4f0;
}
[data-route="pkgOps/pages/org/new"] .cell:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}
[data-route="pkgOps/pages/org/new"] .cell-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/org/new"] .cell-t {
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
}
[data-route="pkgOps/pages/org/new"] .cell-s {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  line-height: 1.6;
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/new"] .cell-go {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 32);
  color: #b7c7bd;
}
[data-route="pkgOps/pages/org/new"] /* v7.0.142：邀请码样式随「一键分享」退役（分享键复用 .btn-primary） */

/* 读数据时的占位（与 tclass 列表同一句） */
.empty {
  padding: calc(var(--rpx) * 36) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}



/* ---- pkgOps/pages/org/teachers.wxss ---- */
[data-route="pkgOps/pages/org/teachers"] /* 机构 · 老师管理（v4.86.451）：与机构页同一套视觉（深绿头 + 浅绿底 + 白卡） */

.page {
  min-height: calc(var(--vh) * 100);
  background: #f2f7f4;
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/org/teachers"] .hero {
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(var(--rpx) * 40);
  background: linear-gradient(160deg, #0a7a3d 0%, #0e9450 100%);
}
[data-route="pkgOps/pages/org/teachers"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pkgOps/pages/org/teachers"] .hero-s {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.86);
}
[data-route="pkgOps/pages/org/teachers"] .card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/org/teachers"] .card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/org/teachers"] .card-s {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #4c6357;
}
[data-route="pkgOps/pages/org/teachers"] .card-s.tip {
  margin-top: calc(var(--rpx) * 18);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/teachers"] .row-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/org/teachers"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/teachers"] .err {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #c0392b;
}
[data-route="pkgOps/pages/org/teachers"] .empty {
  padding: calc(var(--rpx) * 28) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/teachers"] /* v7.0.142：邀请码样式随「一键分享」退役（分享键复用 .btn-primary） */
.btn-primary {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/org/teachers"] /* 成员行 */
.mem {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 22) 0;
  border-bottom: calc(var(--rpx) * 2) solid #eef4f0;
}
[data-route="pkgOps/pages/org/teachers"] .mem:last-child {
  border-bottom: 0;
}
[data-route="pkgOps/pages/org/teachers"] .mem-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/org/teachers"] .mem-n {
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
}
[data-route="pkgOps/pages/org/teachers"] .mem-role {
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #f0f2f1;
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/teachers"] .mem-role-on {
  background: #eaf5ee;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/org/teachers"] .mem-meta {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/teachers"] .mem-meta .dot {
  margin: 0 calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/org/teachers"] .mem-last {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #b0bfb6;
}
[data-route="pkgOps/pages/org/teachers"] .mem-ops {
  display: flex;
  align-items: center;
  margin-left: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/org/teachers"] .mem-op {
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 999);
  background: #eaf5ee;
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/org/teachers"] .mem-op-quiet {
  background: #f4f6f5;
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/teachers"] /* 交接选人弹层（v4.86.451）：页内列表，不受 showActionSheet 6 项限制 */
.pick-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  z-index: 30;
  background: rgba(0, 0, 0, 0.42);
  display: flex;
  align-items: flex-end;
}
[data-route="pkgOps/pages/org/teachers"] .pick-box {
  width: 100%;
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 28) calc(var(--rpx) * 40);
  border-top-left-radius: calc(var(--rpx) * 10);
  border-top-right-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  box-sizing: border-box;
}
[data-route="pkgOps/pages/org/teachers"] .pick-t {
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
  line-height: 1.6;
}
[data-route="pkgOps/pages/org/teachers"] .pick-list {
  max-height: calc(var(--rpx) * 620);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/org/teachers"] .pick-i {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 22) 0;
  border-bottom: calc(var(--rpx) * 2) solid #eef4f0;
}
[data-route="pkgOps/pages/org/teachers"] .pick-n {
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
}
[data-route="pkgOps/pages/org/teachers"] .pick-m {
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/teachers"] .pick-x {
  margin-top: calc(var(--rpx) * 24);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}



/* ---- pkgOps/pages/org/stats.wxss ---- */
[data-route="pkgOps/pages/org/stats"] /* 机构 · 老师管理（v4.86.451）：与机构页同一套视觉（深绿头 + 浅绿底 + 白卡） */

.page {
  min-height: calc(var(--vh) * 100);
  background: #f2f7f4;
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/org/stats"] .hero {
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(var(--rpx) * 40);
  background: linear-gradient(160deg, #0a7a3d 0%, #0e9450 100%);
}
[data-route="pkgOps/pages/org/stats"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pkgOps/pages/org/stats"] .hero-s {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.86);
}
[data-route="pkgOps/pages/org/stats"] .card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/org/stats"] .card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/org/stats"] .card-s {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #4c6357;
}
[data-route="pkgOps/pages/org/stats"] .card-s.tip {
  margin-top: calc(var(--rpx) * 18);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/stats"] .row-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/org/stats"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/stats"] .err {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #c0392b;
}
[data-route="pkgOps/pages/org/stats"] .empty {
  padding: calc(var(--rpx) * 28) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/stats"] .code-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/org/stats"] .code {
  flex: 1;
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  letter-spacing: calc(var(--rpx) * 8);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/org/stats"] .copy {
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 999);
  background: #eaf5ee;
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/org/stats"] /* 成员行 */
.mem {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 22) 0;
  border-bottom: calc(var(--rpx) * 2) solid #eef4f0;
}
[data-route="pkgOps/pages/org/stats"] .mem:last-child {
  border-bottom: 0;
}
[data-route="pkgOps/pages/org/stats"] .mem-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/org/stats"] .mem-n {
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
}
[data-route="pkgOps/pages/org/stats"] .mem-role {
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #f0f2f1;
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/stats"] .mem-role-on {
  background: #eaf5ee;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/org/stats"] .mem-meta {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/stats"] .mem-meta .dot {
  margin: 0 calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/org/stats"] .mem-last {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #b0bfb6;
}
[data-route="pkgOps/pages/org/stats"] .mem-ops {
  display: flex;
  align-items: center;
  margin-left: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/org/stats"] .mem-op {
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 999);
  background: #eaf5ee;
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/org/stats"] .mem-op-quiet {
  background: #f4f6f5;
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/stats"] /* 概览四格（与机构页同一套） */
.ov {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/org/stats"] .ov-i {
  flex: 1;
  text-align: center;
}
[data-route="pkgOps/pages/org/stats"] .ov-n {
  font-size: calc(var(--rpx) * 46);
  font-weight: 700;
  color: #0a7a3d;
  line-height: 1.2;
}
[data-route="pkgOps/pages/org/stats"] .ov-l {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/stats"] /* 每位老师一块 */
.tk {
  margin-top: calc(var(--rpx) * 20);
  padding-top: calc(var(--rpx) * 20);
  border-top: calc(var(--rpx) * 2) solid #eef4f0;
}
[data-route="pkgOps/pages/org/stats"] .tk-head {
  display: flex;
  align-items: center;
}
[data-route="pkgOps/pages/org/stats"] .tk-n {
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
}
[data-route="pkgOps/pages/org/stats"] .tk-role {
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #eaf5ee;
  font-size: calc(var(--rpx) * 20);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/org/stats"] .tk-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/org/stats"] .tk-i {
  flex: 1;
  text-align: center;
}
[data-route="pkgOps/pages/org/stats"] .tk-v {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/org/stats"] .tk-l {
  margin-top: calc(var(--rpx) * 2);
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/org/stats"] .tk-last {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #b0bfb6;
}



/* ---- pkgOps/pages/tclass/detail.wxss ---- */
[data-route="pkgOps/pages/tclass/detail"] /* 班级点评 · 班级详情（v4.86.267） */

.page {
  min-height: calc(var(--vh) * 100);
  background: #f2f7f4;
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/tclass/detail"] .hero {
  padding: calc(var(--rpx) * 34) calc(var(--rpx) * 32) calc(var(--rpx) * 36);
  background: linear-gradient(160deg, #0a7a3d 0%, #0e9450 100%);
}
[data-route="pkgOps/pages/tclass/detail"] .hero-line {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
}
[data-route="pkgOps/pages/tclass/detail"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/detail"] .hero-sub {
  margin-left: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: rgba(255, 255, 255, 0.18);
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/detail"] .hero-meta {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.82);
}
[data-route="pkgOps/pages/tclass/detail"] .hero-meta .dot {
  margin: 0 calc(var(--rpx) * 10);
  color: rgba(255, 255, 255, 0.45);
}
[data-route="pkgOps/pages/tclass/detail"] .code-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 22);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: rgba(255, 255, 255, 0.14);
}
[data-route="pkgOps/pages/tclass/detail"] .code-k {
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.8);
}
[data-route="pkgOps/pages/tclass/detail"] .code-v {
  flex: 1;
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  letter-spacing: calc(var(--rpx) * 4);
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/detail"] .code-copy {
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  background: #ffffff;
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/detail"] .card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/tclass/detail"] .card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/detail"] .card-s {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/detail"] .row-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/tclass/detail"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/detail"] .empty {
  padding: calc(var(--rpx) * 36) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/detail"] .err {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #c0392b;
}
[data-route="pkgOps/pages/tclass/detail"] .btn-sm {
  flex-shrink: 0;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 30);
  border-radius: calc(var(--rpx) * 999);
  background: #0a7a3d;
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/detail"] .btn-sm:active {
  opacity: 0.85;
}
[data-route="pkgOps/pages/tclass/detail"] /* 名单 */
.mem {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: #f4f8f5;
}
[data-route="pkgOps/pages/tclass/detail"] .mem-ava {
  flex-shrink: 0;
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  margin-right: calc(var(--rpx) * 18);
  border-radius: 50%;
  background: #dcefe2;
  font-size: calc(var(--rpx) * 28);
  line-height: calc(var(--rpx) * 64);
  text-align: center;
  color: #0a7a3d;
  font-weight: 600;
}
[data-route="pkgOps/pages/tclass/detail"] /* v7.0.107（木哥令「学员头像要同步出来」）：真头像同一格 —— 圆形裁切不变形 */
.mem-ava-img {
  padding: 0;
  border: none;
}
[data-route="pkgOps/pages/tclass/detail"] /* v7.0.107（木哥令「加进班改弱化按键」）：绿圈绿字 ghost —— 同 .btn-sm 尺寸，
   底色退透明、描一圈绿边绿字，不再和「拍作业」抢主次。 */
.btn-sm-ghost {
  background: #ffffff;
  color: #0a7a3d;
  border: calc(var(--rpx) * 2) solid #0a7a3d;
  font-weight: 500;
}
[data-route="pkgOps/pages/tclass/detail"] .btn-sm-ghost:active {
  background: #eef7f0;
  opacity: 1;
}
[data-route="pkgOps/pages/tclass/detail"] .mem-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/tclass/detail"] .mem-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/detail"] .mem-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/detail"] .mem-del {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  font-size: calc(var(--rpx) * 24);
  color: #a0aea6;
}
[data-route="pkgOps/pages/tclass/detail"] /* v7.0.075（木哥令）：名单行上的「拍作业」—— 经典小绿键（.btn-sm 同款缩一档），
 * 与右侧灰字「移除」拉开主次：认领学员拍作业是正事，移除是边角操作。 */
.mem-hw {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 999);
  background: #0a7a3d;
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/detail"] .mem-hw:active {
  opacity: 0.85;
}
[data-route="pkgOps/pages/tclass/detail"] .add-box {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/tclass/detail"] .ipt {
  flex: 1;
  min-width: 0;
  height: calc(var(--rpx) * 76);
  padding: 0 calc(var(--rpx) * 18);
  margin-right: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 10);
  background: #f4f8f5;
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/detail"] .ipt-no {
  flex: 0 0 calc(var(--rpx) * 210);
}
[data-route="pkgOps/pages/tclass/detail"] /* 作业批次 */
.hw {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: #f4f8f5;
}
[data-route="pkgOps/pages/tclass/detail"] .hw-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/tclass/detail"] .hw-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/detail"] .hw-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/detail"] .hw-go {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/detail"] .hw-items {
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/tclass/detail"] .hw-item {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  margin-bottom: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 12);
  background: #fbfdfb;
  border: calc(var(--rpx) * 1) solid #e6f0e9;
}
[data-route="pkgOps/pages/tclass/detail"] .hi-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/tclass/detail"] .hi-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/detail"] .hi-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
  color: #6b7d72;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
[data-route="pkgOps/pages/tclass/detail"] .hi-tags {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 10);
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/tclass/detail"] .hi-tag {
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #e2f2e7;
  font-size: calc(var(--rpx) * 20);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/detail"] .hi-tag-off {
  background: #f0f2f1;
  color: #8b9a91;
}
[data-route="pkgOps/pages/tclass/detail"] .hi-tag-score {
  background: #fbf3dd;
  color: #a8791b;
}
[data-route="pkgOps/pages/tclass/detail"] .hi-acts {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 14);
  display: flex;
  flex-direction: column;
  align-items: flex-end;
}
[data-route="pkgOps/pages/tclass/detail"] .share-btn {
  margin: 0;
  padding: 0 calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 56);
  line-height: calc(var(--rpx) * 56);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/detail"] .share-btn::after {
  border: none;
}
[data-route="pkgOps/pages/tclass/detail"] .hi-preview {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/detail"] .hw-empty {
  padding: calc(var(--rpx) * 20) 0;
  font-size: calc(var(--rpx) * 24);
  color: #9aa8a0;
  text-align: center;
}
[data-route="pkgOps/pages/tclass/detail"] .li {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #6b7d72;
}
[data-route="pkgOps/pages/tclass/detail"] /* v4.86.269 新增 */
/* v4.86.270（木哥令）：点评报告入口升成整宽经典大绿键
 * 底色用全局主绿 #07c160（btn-system 规范色；#0a7a3d 已列废弃底色） */
.rep-big-btn {
  margin-top: calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  border-radius: calc(var(--rpx) * 10);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  letter-spacing: calc(var(--rpx) * 4);
}
[data-route="pkgOps/pages/tclass/detail"] .rep-big-btn:active {
  opacity: 0.85;
}



/* ---- pkgOps/pages/tclass/new.wxss ---- */
[data-route="pkgOps/pages/tclass/new"] /* 班级点评 · 拍作业（v4.86.275）—— 版式与学员交作业页 pages/checkin 同一套 */

/* A4 竖幅比例（1:1.414）的占位框，居中、约占三分之一屏 */
.shot {
  width: calc(var(--rpx) * 340);
  height: calc(var(--rpx) * 480);
  margin: 0 auto;
  border-radius: calc(var(--rpx) * 16);
  background: #f7f7f7;
  border: calc(var(--rpx) * 1) solid #f2f2f2;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
[data-route="pkgOps/pages/tclass/new"] .shot-img {
  width: 100%;
  height: 100%;
}
[data-route="pkgOps/pages/tclass/new"] .shot-empty {
  text-align: center;
}
[data-route="pkgOps/pages/tclass/new"] .shot-plus {
  font-size: calc(var(--rpx) * 40);
  color: #b2b2b2;
  line-height: 1;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/tclass/new"] .tips {
  margin-top: calc(var(--rpx) * 16);
  text-align: center;
}
[data-route="pkgOps/pages/tclass/new"] .card-title-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
}
[data-route="pkgOps/pages/tclass/new"] .field {
  display: flex;
  align-items: center;
  /* v4.86.570：与打卡页 .field 同病同治 —— 左右补 calc(var(--rpx) * 24)，输入文字不再贴左缘 */
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 24);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/tclass/new"] .field-col {
  display: block;
}
[data-route="pkgOps/pages/tclass/new"] .field-label {
  /* v4.86.382（378 号令）：与 pages/checkin 同口径 —— 标签一行不折
     （min-width 保底 + nowrap 兜死），长标签「学生姓名（选填）」不再折两行 */
  width: auto;
  min-width: calc(var(--rpx) * 160);
  flex-shrink: 0;
  white-space: nowrap;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/tclass/new"] .field-value {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/tclass/new"] .field-input {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/tclass/new"] .field-area {
  width: 100%;
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 28);
  min-height: calc(var(--rpx) * 120);
}
[data-route="pkgOps/pages/tclass/new"] .ph {
  color: #b2b2b2;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/tclass/new"] .err {
  margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 24);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/tclass/new"] /* ===== v4.86.298：首用「先学习三招 → 小测验」弹层（与 pages/checkin 同款样式） ===== */
.quiz-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 70;
  display: flex;
  align-items: flex-end;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-sheet {
  width: 100%;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 28) calc(var(--rpx) * 28) 0 0;
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32) calc(calc(var(--rpx) * 28) + env(safe-area-inset-bottom));
  box-sizing: border-box;
  /* v4.86.162：固定高度 —— swiper 靠 flex 撑高在没有确定高度的容器里会拿 0（弹窗空白的真凶） */
  height: 84vh;
  display: flex;
  flex-direction: column;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #1f2937;
  text-align: center;
  margin-bottom: calc(var(--rpx) * 18);
}
[data-route="pkgOps/pages/tclass/new"] .quiz-scroll {
  flex: 1;
  min-height: 0;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-hint {
  font-size: calc(var(--rpx) * 24);
  color: #8a6d1f;
  background: #fdf8e8;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  line-height: 1.5;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/tclass/new"] .quiz-q {
  margin-bottom: calc(var(--rpx) * 26);
}
[data-route="pkgOps/pages/tclass/new"] .quiz-qt {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #1f2937;
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pkgOps/pages/tclass/new"] .quiz-opt {
  display: flex;
  align-items: center;
  background: #f5f6f8;
  border: calc(var(--rpx) * 2) solid #e5e7eb;
  border-radius: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pkgOps/pages/tclass/new"] .quiz-opt.picked {
  background: #e8f7ee;
  border-color: #07c160;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-box {
  flex: none;
  width: calc(var(--rpx) * 36);
  height: calc(var(--rpx) * 36);
  border-radius: 50%;
  border: calc(var(--rpx) * 2) solid #c0c4cc;
  color: #07c160;
  font-size: calc(var(--rpx) * 24);
  text-align: center;
  line-height: calc(var(--rpx) * 36);
  margin-right: calc(var(--rpx) * 16);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-opt.picked .quiz-box {
  border-color: #07c160;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-ot {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #374151;
  line-height: 1.5;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-btn {
  margin-top: calc(var(--rpx) * 26);
  background: #07c160;
  color: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  text-align: center;
  padding: calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgOps/pages/tclass/new"] .quiz-retry {
  background: #e0a038;
  border-radius: calc(var(--rpx) * 10);
  text-align: center;
  padding: calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 32);
  color: #ffffff;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/tclass/new"] /* v7.0.135（木哥令「测试部分加一个按键：跳过」）：白底描边二级键，不抢主键的眼 */
.quiz-skip {
  margin-top: calc(var(--rpx) * 16);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #d9dde3;
  border-radius: calc(var(--rpx) * 10);
  text-align: center;
  padding: calc(var(--rpx) * 20) 0;
  font-size: calc(var(--rpx) * 28);
  color: #6b7280;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-score {
  margin-top: calc(var(--rpx) * 26);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-score.pass {
  color: #07c160;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-score.fail {
  color: #c43c32;
}
[data-route="pkgOps/pages/tclass/new"] /* 一题一屏 */
.quiz-emoji {
  text-align: center;
  font-size: calc(var(--rpx) * 40);
  margin-top: calc(var(--rpx) * 40);
}
[data-route="pkgOps/pages/tclass/new"] .quiz-swiper {
  flex: 1;
  min-height: 0;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-swiper swiper-item {
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  padding-bottom: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/tclass/new"] .quiz-swiper .quiz-scroll {
  flex: 1;
  min-height: 0;
  height: 100%;
}
[data-route="pkgOps/pages/tclass/new"] .quiz-swiper .quiz-btn {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/tclass/new"] /* ===== v4.86.161：三步轻卡片「先学习」 ===== */
.learn-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 80;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(var(--rpx) * 48);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/tclass/new"] .learn-sheet {
  width: 100%;
  background: #fffdf6;
  border-radius: calc(var(--rpx) * 32);
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 36) calc(var(--rpx) * 32);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
}
[data-route="pkgOps/pages/tclass/new"] .learn-cat {
  text-align: center;
  font-size: calc(var(--rpx) * 40);
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/tclass/new"] .learn-lead {
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #1f2937;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/tclass/new"] /* v4.86.162：图示要大到真能看明白 —— 侧面示意图占满卡片宽，比例 900:640 */
.learn-swiper {
  height: calc(var(--rpx) * 700);
}
[data-route="pkgOps/pages/tclass/new"] .learn-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  box-sizing: border-box;
  height: 100%;
}
[data-route="pkgOps/pages/tclass/new"] .learn-img {
  width: 100%;
  height: calc(var(--rpx) * 420);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
}
[data-route="pkgOps/pages/tclass/new"] .learn-h {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #8a6d1f;
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/tclass/new"] .learn-p {
  font-size: calc(var(--rpx) * 28);
  color: #374151;
  line-height: 1.8;
}
[data-route="pkgOps/pages/tclass/new"] .learn-dots {
  display: flex;
  justify-content: center;
  margin: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 4);
}
[data-route="pkgOps/pages/tclass/new"] .learn-dot {
  width: calc(var(--rpx) * 14);
  height: calc(var(--rpx) * 14);
  border-radius: 50%;
  background: #d8d2c0;
  margin: 0 calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/tclass/new"] .learn-dot.on {
  background: #07c160;
}
[data-route="pkgOps/pages/tclass/new"] .learn-btn {
  margin-top: calc(var(--rpx) * 24);
  background: #07c160;
  color: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  text-align: center;
  padding: calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgOps/pages/tclass/new"] .learn-skip {
  margin-top: calc(var(--rpx) * 18);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #9aa0a6;
  padding: calc(var(--rpx) * 8) 0;
}



/* ---- pkgOps/pages/tclass/review.wxss ---- */
[data-route="pkgOps/pages/tclass/review"] /* 班级点评 · 点评页（v4.86.275）—— 版式与老师点评作业组件 pkgMentor/mentor/task 同一套 */

.shot {
  width: 100%;
  height: calc(var(--rpx) * 520);
  border-radius: calc(var(--rpx) * 16);
  background: #f7f7f7;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
[data-route="pkgOps/pages/tclass/review"] .shot-img {
  width: 100%;
  height: 100%;
}
[data-route="pkgOps/pages/tclass/review"] .note {
  margin-top: calc(var(--rpx) * 26);
  padding-top: calc(var(--rpx) * 22);
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pkgOps/pages/tclass/review"] .note-label {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgOps/pages/tclass/review"] .note-text {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/tclass/review"] .review-area {
  min-height: calc(var(--rpx) * 220);
}
[data-route="pkgOps/pages/tclass/review"] .char-count {
  margin-top: calc(var(--rpx) * 10);
  text-align: right;
}
[data-route="pkgOps/pages/tclass/review"] .submit-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/tclass/review"] .sent-ok {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgOps/pages/tclass/review"] .mini-row {
  margin-top: calc(var(--rpx) * 16);
  text-align: center;
}
[data-route="pkgOps/pages/tclass/review"] .mini-link {
  display: inline-block;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgOps/pages/tclass/review"] .err {
  margin-top: calc(var(--rpx) * 16);
  text-align: center;
  color: #fa5151;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/tclass/review"] .err.left {
  text-align: left;
}
[data-route="pkgOps/pages/tclass/review"] /* 放大圈画单颗键（与 mentor/task 的 row-btns 同一版式） */
.row-btns {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/tclass/review"] .chat-btn {
  margin-top: calc(var(--rpx) * 18);
}
[data-route="pkgOps/pages/tclass/review"] .row-btns .chat-btn {
  flex: 1;
  margin: 0;
}
[data-route="pkgOps/pages/tclass/review"] /* 点评输入框上方一行（删除录音） */
.area-head {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/tclass/review"] /* 圈画批注胶囊（与 mentor/task 同一微信口径） */
.attach-row {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/tclass/review"] .attach-item {
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 26);
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 999);
  background: #f7f7f7;
  transition: background 0.12s ease;
}
[data-route="pkgOps/pages/tclass/review"] .attach-item.button-hover {
  background: #ececec;
}
[data-route="pkgOps/pages/tclass/review"] .attach-on {
  border-color: #07c160;
  background: #ffffff;
}
[data-route="pkgOps/pages/tclass/review"] .attach-on .attach-t {
  color: #07c160;
}
[data-route="pkgOps/pages/tclass/review"] .attach-t {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgOps/pages/tclass/review"] .attach-del {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/tclass/review"] /* 「说话/重录」按键单独一行、四字下限（与 mentor/task 同一口径） */
.vb-row {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/tclass/review"] .vb-4ch {
  min-width: calc(var(--rpx) * 216);
  width: auto;
}
[data-route="pkgOps/pages/tclass/review"] /* 评级四档（与云库 CHECK 同口径） */
.score-row {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 14);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/tclass/review"] .score {
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 30);
  border-radius: calc(var(--rpx) * 999);
  background: #f7f7f7;
  font-size: calc(var(--rpx) * 24);
  color: #666666;
}
[data-route="pkgOps/pages/tclass/review"] .score-on {
  background: #fbf3dd;
  color: #a8791b;
  font-weight: 600;
}



/* ---- pkgOps/pages/tclass/member.wxss ---- */
[data-route="pkgOps/pages/tclass/member"] /* 班级点评 · 学员名片（v4.86.269） */

.page {
  min-height: calc(var(--vh) * 100);
  background: #f2f7f4;
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/tclass/member"] .hero {
  padding: calc(var(--rpx) * 32);
  background: linear-gradient(160deg, #0a7a3d 0%, #0e9450 100%);
}
[data-route="pkgOps/pages/tclass/member"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/member"] .hero-s {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.85);
}
[data-route="pkgOps/pages/tclass/member"] .card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 26);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/tclass/member"] .card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/member"] .card-s {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/member"] .row-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/tclass/member"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/member"] .empty {
  padding: calc(var(--rpx) * 36) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/member"] .err {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #c0392b;
}
[data-route="pkgOps/pages/tclass/member"] /* 数值卡 */
.grid {
  display: flex;
  flex-wrap: wrap;
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
  overflow: hidden;
}
[data-route="pkgOps/pages/tclass/member"] .g-cell {
  width: 50%;
  padding: calc(var(--rpx) * 26) 0;
  text-align: center;
  box-sizing: border-box;
  border-bottom: calc(var(--rpx) * 2) solid #f0f5f1;
}
[data-route="pkgOps/pages/tclass/member"] .g-cell:nth-child(odd) {
  border-right: calc(var(--rpx) * 2) solid #f0f5f1;
}
[data-route="pkgOps/pages/tclass/member"] .g-cell:nth-child(3), [data-route="pkgOps/pages/tclass/member"] .g-cell:nth-child(4) {
  border-bottom: none;
}
[data-route="pkgOps/pages/tclass/member"] .g-n {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/member"] .g-t {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/member"] .last-img {
  width: 100%;
  height: calc(var(--rpx) * 380);
  margin-top: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 14);
  background: #f4f8f5;
  display: block;
}
[data-route="pkgOps/pages/tclass/member"] /* 分析 */
.ana {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #2c4636;
}
[data-route="pkgOps/pages/tclass/member"] .dot {
  margin-right: calc(var(--rpx) * 10);
  color: #0a7a3d;
  font-weight: 700;
}
[data-route="pkgOps/pages/tclass/member"] .vision {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 14);
  background: #fbf7ea;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #7a5b12;
}
[data-route="pkgOps/pages/tclass/member"] /* 报告列表 */
.r-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 14);
  background: #f7fbf8;
}
[data-route="pkgOps/pages/tclass/member"] .r-name {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pkgOps/pages/tclass/member"] .r-score {
  flex-shrink: 0;
  margin: 0 calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: #fbf3dd;
  font-size: calc(var(--rpx) * 24);
  color: #a8791b;
}
[data-route="pkgOps/pages/tclass/member"] .r-go {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/member"] /* 改名 / 删除 */
.op-row {
  display: flex;
  gap: calc(var(--rpx) * 20);
  margin: calc(var(--rpx) * 28) calc(var(--rpx) * 24) 0;
}
[data-route="pkgOps/pages/tclass/member"] .op {
  flex: 1;
  padding: calc(var(--rpx) * 22) 0;
  border-radius: calc(var(--rpx) * 999);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
}
[data-route="pkgOps/pages/tclass/member"] .op-edit {
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #cfe0d6;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/member"] .op-del {
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #f0cfc9;
  color: #c0392b;
}



/* ---- pkgOps/pages/tclass/report.wxss ---- */
[data-route="pkgOps/pages/tclass/report"] /* 班级点评 · 报告 / 打印（v4.86.269） */

.page {
  min-height: calc(var(--vh) * 100);
  background: #f2f7f4;
  padding: 0 0 calc(var(--rpx) * 180);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/tclass/report"] .hero {
  padding: calc(var(--rpx) * 32);
  background: linear-gradient(160deg, #0a7a3d 0%, #0e9450 100%);
}
[data-route="pkgOps/pages/tclass/report"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/report"] .hero-s {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.85);
}
[data-route="pkgOps/pages/tclass/report"] .card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 26);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/tclass/report"] .empty {
  padding: calc(var(--rpx) * 36) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/report"] .err {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #c0392b;
}
[data-route="pkgOps/pages/tclass/report"] /* 报告纸面 */
.rep {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 30) calc(var(--rpx) * 26);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/tclass/report"] .rep-head {
  display: flex;
  align-items: center;
}
[data-route="pkgOps/pages/tclass/report"] .rep-name {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/report"] .rep-score {
  flex-shrink: 0;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 999);
  background: #fbf3dd;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #a8791b;
}
[data-route="pkgOps/pages/tclass/report"] .rep-sub {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/report"] .sec-t {
  margin-top: calc(var(--rpx) * 30);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/report"] .sec-s {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  color: #4f665a;
}
[data-route="pkgOps/pages/tclass/report"] .rep-img {
  width: 100%;
  height: calc(var(--rpx) * 420);
  margin-top: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 14);
  background: #f4f8f5;
  display: block;
}
[data-route="pkgOps/pages/tclass/report"] .rep-cmt {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 14);
  background: #f7fbf8;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #2c4636;
}
[data-route="pkgOps/pages/tclass/report"] .rep-cmp {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #2c4636;
}
[data-route="pkgOps/pages/tclass/report"] .rep-prev {
  margin-top: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 14);
  background: #f4f8f5;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/report"] .ana {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #2c4636;
}
[data-route="pkgOps/pages/tclass/report"] .dot {
  margin-right: calc(var(--rpx) * 10);
  color: #0a7a3d;
  font-weight: 700;
}
[data-route="pkgOps/pages/tclass/report"] .vision {
  margin-top: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 14);
  background: #fbf7ea;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #7a5b12;
}
[data-route="pkgOps/pages/tclass/report"] .sign {
  margin-top: calc(var(--rpx) * 26);
  text-align: right;
  font-size: calc(var(--rpx) * 24);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/report"] /* 底部操作条 */
.bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 24) calc(calc(var(--rpx) * 18) + env(safe-area-inset-bottom));
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * -6) calc(var(--rpx) * 20) rgba(10, 122, 61, 0.08);
}
[data-route="pkgOps/pages/tclass/report"] .bar-info {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/report"] .bar-act {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/tclass/report"] .bar-copy {
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 26);
  border-radius: calc(var(--rpx) * 999);
  background: #f4f8f5;
  font-size: calc(var(--rpx) * 28);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/report"] .bar-btn {
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 30);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/report"] .bar-btn-off {
  opacity: 0.55;
}
[data-route="pkgOps/pages/tclass/report"] .foot {
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 32) 0;
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/report"] /* 长图画布：离屏用，摆在屏幕外 */
.print-canvas {
  position: fixed;
  left: calc(var(--rpx) * -9999);
  top: 0;
  width: 750px;
  height: 1000px;
}
[data-route="pkgOps/pages/tclass/report"] /* ===== v4.86.271 报告改版：A4 纸幅两页 · 图文并茂 · 有提醒有鼓励 ===== */

.rep-name-line {
  margin: calc(var(--rpx) * 30) calc(var(--rpx) * 24) calc(var(--rpx) * 10);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/report"] /* 一张 A4 纸：宽随卡片、高按 A4 比例（210:297 ≈ 1:1.414），内容不满也保持纸面 */
.a4 {
  position: relative;
  margin: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 30);
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 40) calc(var(--rpx) * 70);
  box-sizing: border-box;
  min-height: calc(var(--rpx) * 1000);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  box-shadow: 0 calc(var(--rpx) * 10) calc(var(--rpx) * 30) rgba(10, 122, 61, 0.10);
}
[data-route="pkgOps/pages/tclass/report"] .a4-eyebrow {
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  letter-spacing: calc(var(--rpx) * 6);
  color: #0a7a3d;
  font-weight: 600;
}
[data-route="pkgOps/pages/tclass/report"] .a4-t {
  margin-top: calc(var(--rpx) * 16);
  text-align: center;
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/report"] .a4-meta {
  margin-top: calc(var(--rpx) * 10);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/report"] .a4-rule {
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 26);
  height: calc(var(--rpx) * 4);
  background: linear-gradient(90deg, #0a7a3d, #d8b65c);
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/report"] /* 摘要行：进步徽章 + 星级 */
.a4-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #f6faf7;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/report"] .a4-badge {
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
  color: #ffffff;
  background: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/report"] .a4-badge-up { background: #0a7a3d; }
[data-route="pkgOps/pages/tclass/report"] .a4-badge-flat { background: #2c7a8f; }
[data-route="pkgOps/pages/tclass/report"] .a4-badge-down { background: #b7791b; }
[data-route="pkgOps/pages/tclass/report"] .a4-badge-first { background: #7a5b12; }
[data-route="pkgOps/pages/tclass/report"] .a4-grade {
  display: flex;
  align-items: center;
}
[data-route="pkgOps/pages/tclass/report"] .a4-stars {
  font-size: calc(var(--rpx) * 28);
  color: #d8b65c;
  letter-spacing: calc(var(--rpx) * 4);
}
[data-route="pkgOps/pages/tclass/report"] .a4-grade-l {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  color: #7a5b12;
}
[data-route="pkgOps/pages/tclass/report"] .a4-sec {
  margin: calc(var(--rpx) * 34) 0 calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/report"] .a4-kv, [data-route="pkgOps/pages/tclass/report"] .a4-p {
  font-size: calc(var(--rpx) * 28);
  line-height: 1.8;
  color: #2c4636;
}
[data-route="pkgOps/pages/tclass/report"] .a4-img {
  display: block;
  width: 100%;
  height: calc(var(--rpx) * 520);
  margin-top: calc(var(--rpx) * 16);
  background: #f4f8f5;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/report"] .a4-img-tip {
  margin-top: calc(var(--rpx) * 8);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/report"] .a4-quote {
  margin-top: calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 26);
  border-left: calc(var(--rpx) * 6) solid #d8b65c;
  background: #fbf7ec;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.8;
  color: #4a3a12;
}
[data-route="pkgOps/pages/tclass/report"] .a4-prev {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/report"] /* 数据四格 + 进度条 */
.a4-grid {
  display: flex;
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pkgOps/pages/tclass/report"] .a4-cell {
  flex: 1;
  padding: calc(var(--rpx) * 18) 0;
  text-align: center;
  background: #f6faf7;
  border-radius: calc(var(--rpx) * 10);
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/tclass/report"] .a4-cell:last-child {
  margin-right: 0;
}
[data-route="pkgOps/pages/tclass/report"] .a4-num {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/report"] .a4-num-s {
  font-size: calc(var(--rpx) * 20);
  font-weight: 500;
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/report"] .a4-numl {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/report"] .a4-prog {
  margin-top: calc(var(--rpx) * 22);
  height: calc(var(--rpx) * 14);
  background: #edf3ef;
  border-radius: calc(var(--rpx) * 10);
  overflow: hidden;
}
[data-route="pkgOps/pages/tclass/report"] .a4-prog-in {
  height: 100%;
  background: linear-gradient(90deg, #0a7a3d, #d8b65c);
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/report"] .a4-prog-l {
  margin-top: calc(var(--rpx) * 8);
  text-align: right;
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/report"] /* 提醒（浅黄警示）与鼓励（金底寄语） */
.a4-warn {
  margin-top: calc(var(--rpx) * 26);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #fdf6e7;
  border: calc(var(--rpx) * 2) solid #ecd9a8;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/report"] .a4-warn-t {
  display: block;
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
  color: #a8791b;
}
[data-route="pkgOps/pages/tclass/report"] .a4-warn-s {
  display: block;
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #7a5b12;
}
[data-route="pkgOps/pages/tclass/report"] .a4-cheer {
  margin-top: calc(var(--rpx) * 22);
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28);
  background: #f6faf7;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.8;
  color: #0a7a3d;
  font-weight: 600;
  text-align: center;
}
[data-route="pkgOps/pages/tclass/report"] .a4-sign {
  margin-top: calc(var(--rpx) * 30);
  text-align: right;
  font-size: calc(var(--rpx) * 24);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/report"] .a4-pagefoot {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(var(--rpx) * 22);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  letter-spacing: calc(var(--rpx) * 2);
  color: #b8c4bd;
}
[data-route="pkgOps/pages/tclass/report"] /* 顶栏出口：分享（原生 button 转发）+ 打印下载主键 */
.bar-share {
  margin: 0 calc(var(--rpx) * 16) 0 0;
  padding: 0 calc(var(--rpx) * 28);
  height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 62);
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #0a7a3d;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/report"] .bar-doc {
  margin: calc(var(--rpx) * -6) calc(var(--rpx) * 24) calc(var(--rpx) * 10);
  text-align: right;
  font-size: calc(var(--rpx) * 20);
  color: #9aa8a0;
  text-decoration: underline;
}



/* ---- pkgOps/pages/tclass/reports.wxss ---- */
[data-route="pkgOps/pages/tclass/reports"] /* 班级点评 · 报告管理（v4.86.269） */

.page {
  min-height: calc(var(--vh) * 100);
  background: #f2f7f4;
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/tclass/reports"] .hero {
  padding: calc(var(--rpx) * 32);
  background: linear-gradient(160deg, #0a7a3d 0%, #0e9450 100%);
}
[data-route="pkgOps/pages/tclass/reports"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/reports"] .hero-s {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.85);
}
[data-route="pkgOps/pages/tclass/reports"] .card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 26);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/tclass/reports"] .card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/reports"] .row-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/tclass/reports"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/reports"] .empty {
  padding: calc(var(--rpx) * 36) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/reports"] .err {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #c0392b;
}
[data-route="pkgOps/pages/tclass/reports"] /* 模式切换 */
.tabs {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
}
[data-route="pkgOps/pages/tclass/reports"] .tab {
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 34);
  border-radius: calc(var(--rpx) * 999);
  background: #ffffff;
  font-size: calc(var(--rpx) * 28);
  color: #4f665a;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 16) rgba(10, 122, 61, 0.05);
}
[data-route="pkgOps/pages/tclass/reports"] .tab-on {
  background: #0a7a3d;
  color: #ffffff;
  font-weight: 600;
}
[data-route="pkgOps/pages/tclass/reports"] /* 批次 / 成员行 */
.hw-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 14);
  border: calc(var(--rpx) * 2) solid #eef4f0;
  background: #fbfdfb;
}
[data-route="pkgOps/pages/tclass/reports"] .hw-on {
  border-color: #07c160;
  background: #f0faf4;
}
[data-route="pkgOps/pages/tclass/reports"] .hw-n {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 28);
  color: #16301f;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pkgOps/pages/tclass/reports"] .hw-c {
  flex-shrink: 0;
  margin: 0 calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/reports"] .ck2 {
  flex-shrink: 0;
  width: calc(var(--rpx) * 40);
  height: calc(var(--rpx) * 40);
  border-radius: calc(var(--rpx) * 999);
  border: calc(var(--rpx) * 2) solid #cfe0d6;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 40);
  text-align: center;
  color: #07c160;
}
[data-route="pkgOps/pages/tclass/reports"] .hw-on .ck2 {
  border-color: #07c160;
  background: #07c160;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/reports"] /* 成员多选 chips */
.m-chips {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 14);
  margin-top: calc(var(--rpx) * 18);
}
[data-route="pkgOps/pages/tclass/reports"] .chip {
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 999);
  background: #f4f8f5;
  font-size: calc(var(--rpx) * 28);
  color: #4f665a;
}
[data-route="pkgOps/pages/tclass/reports"] .chip-on {
  background: #0a7a3d;
  color: #ffffff;
  font-weight: 600;
}
[data-route="pkgOps/pages/tclass/reports"] /* 去打印 */
.go-btn {
  margin: calc(var(--rpx) * 32) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 24) 0;
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #ffffff;
}
[data-route="pkgOps/pages/tclass/reports"] .go-btn-busy {
  opacity: 0.6;
}
[data-route="pkgOps/pages/tclass/reports"] /* ---------- v4.86.277：选作业行里的认领学员（头像 + 名字 + 几点几分） ---------- */
.hw-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/tclass/reports"] .hw-line1 {
  display: flex;
  align-items: center;
}
[data-route="pkgOps/pages/tclass/reports"] .hw-claimed {
  margin-top: calc(var(--rpx) * 12);
  display: flex;
  flex-direction: column;
  gap: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/tclass/reports"] .hw-std {
  display: flex;
  align-items: center;
  min-width: 0;
}
[data-route="pkgOps/pages/tclass/reports"] .hw-std-ava {
  flex-shrink: 0;
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  border-radius: 50%;
  background: #e2f2e7;
}
[data-route="pkgOps/pages/tclass/reports"] .hw-std-ava-txt {
  text-align: center;
  line-height: calc(var(--rpx) * 44);
  font-size: calc(var(--rpx) * 20);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/reports"] .hw-std-name {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #16301f;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pkgOps/pages/tclass/reports"] .hw-std-time {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/reports"] /* ---------- v4.86.277：合并生成的 A4 预览（标准 A4 纸格式） ---------- */
/* A4 = 210×297；纸宽撑满卡内（calc(var(--rpx) * 642)），min-height 按 A4 比例 ≈ calc(var(--rpx) * 907)，
   内容超了自然往下长（打印时 Word/纸张里就是一整页）。 */
.a4-head {
  margin: calc(var(--rpx) * 28) calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 24);
  color: #4f665a;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-sheet {
  margin: calc(var(--rpx) * 20) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 48) calc(var(--rpx) * 44);
  box-sizing: border-box;
  min-height: calc(var(--rpx) * 907); /* 642 × 297 / 210 */
  background: #ffffff;
  border-radius: calc(var(--rpx) * 8);
  border: calc(var(--rpx) * 1) solid #e3e8e4;
  box-shadow: 0 calc(var(--rpx) * 10) calc(var(--rpx) * 30) rgba(22, 48, 31, 0.10);
}
[data-route="pkgOps/pages/tclass/reports"] .a4-doc-t {
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #16301f;
  letter-spacing: calc(var(--rpx) * 2);
}
[data-route="pkgOps/pages/tclass/reports"] .a4-meta {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #4f665a;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-rule {
  margin-top: calc(var(--rpx) * 24);
  border-top: calc(var(--rpx) * 2) solid #16301f;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-img {
  display: block;
  width: 100%;
  height: calc(var(--rpx) * 460);
  margin-top: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 4);
  background: #f4f8f5;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-sec {
  margin-top: calc(var(--rpx) * 34);
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-p {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #22352a;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-sign {
  margin-top: calc(var(--rpx) * 40);
  text-align: right;
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-ops {
  display: flex;
  gap: calc(var(--rpx) * 28);
  margin: calc(var(--rpx) * 20) calc(var(--rpx) * 24) 0;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-op {
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
  padding: calc(var(--rpx) * 8) 0;
}
[data-route="pkgOps/pages/tclass/reports"] .gen-err {
  margin: calc(var(--rpx) * 20) calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 24);
  color: #c0392b;
}
[data-route="pkgOps/pages/tclass/reports"] /* ===== v4.86.271 报告改版：A4 纸幅两页 · 图文并茂 · 有提醒有鼓励 ===== */

.rep-name-line {
  margin: calc(var(--rpx) * 30) calc(var(--rpx) * 24) calc(var(--rpx) * 10);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/reports"] /* 一张 A4 纸：宽随卡片、高按 A4 比例（210:297 ≈ 1:1.414），内容不满也保持纸面 */
.a4 {
  position: relative;
  margin: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 30);
  padding: calc(var(--rpx) * 40) calc(var(--rpx) * 40) calc(var(--rpx) * 70);
  box-sizing: border-box;
  min-height: calc(var(--rpx) * 1000);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  box-shadow: 0 calc(var(--rpx) * 10) calc(var(--rpx) * 30) rgba(10, 122, 61, 0.10);
}
[data-route="pkgOps/pages/tclass/reports"] .a4-eyebrow {
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  letter-spacing: calc(var(--rpx) * 6);
  color: #0a7a3d;
  font-weight: 600;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-t {
  margin-top: calc(var(--rpx) * 16);
  text-align: center;
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #16301f;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-meta {
  margin-top: calc(var(--rpx) * 10);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-rule {
  margin: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 26);
  height: calc(var(--rpx) * 4);
  background: linear-gradient(90deg, #0a7a3d, #d8b65c);
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/reports"] /* 摘要行：进步徽章 + 星级 */
.a4-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #f6faf7;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/reports"] .a4-badge {
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
  color: #ffffff;
  background: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-badge-up { background: #0a7a3d; }
[data-route="pkgOps/pages/tclass/reports"] .a4-badge-flat { background: #2c7a8f; }
[data-route="pkgOps/pages/tclass/reports"] .a4-badge-down { background: #b7791b; }
[data-route="pkgOps/pages/tclass/reports"] .a4-badge-first { background: #7a5b12; }
[data-route="pkgOps/pages/tclass/reports"] .a4-grade {
  display: flex;
  align-items: center;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-stars {
  font-size: calc(var(--rpx) * 28);
  color: #d8b65c;
  letter-spacing: calc(var(--rpx) * 4);
}
[data-route="pkgOps/pages/tclass/reports"] .a4-grade-l {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  color: #7a5b12;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-sec {
  margin: calc(var(--rpx) * 34) 0 calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-kv, [data-route="pkgOps/pages/tclass/reports"] .a4-p {
  font-size: calc(var(--rpx) * 28);
  line-height: 1.8;
  color: #2c4636;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-img {
  display: block;
  width: 100%;
  height: calc(var(--rpx) * 520);
  margin-top: calc(var(--rpx) * 16);
  background: #f4f8f5;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/reports"] .a4-img-tip {
  margin-top: calc(var(--rpx) * 8);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-quote {
  margin-top: calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 26);
  border-left: calc(var(--rpx) * 6) solid #d8b65c;
  background: #fbf7ec;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.8;
  color: #4a3a12;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-prev {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/reports"] /* 数据四格 + 进度条 */
.a4-grid {
  display: flex;
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pkgOps/pages/tclass/reports"] .a4-cell {
  flex: 1;
  padding: calc(var(--rpx) * 18) 0;
  text-align: center;
  background: #f6faf7;
  border-radius: calc(var(--rpx) * 10);
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/tclass/reports"] .a4-cell:last-child {
  margin-right: 0;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-num {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-num-s {
  font-size: calc(var(--rpx) * 20);
  font-weight: 500;
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-numl {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-prog {
  margin-top: calc(var(--rpx) * 22);
  height: calc(var(--rpx) * 14);
  background: #edf3ef;
  border-radius: calc(var(--rpx) * 10);
  overflow: hidden;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-prog-in {
  height: 100%;
  background: linear-gradient(90deg, #0a7a3d, #d8b65c);
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/reports"] .a4-prog-l {
  margin-top: calc(var(--rpx) * 8);
  text-align: right;
  font-size: calc(var(--rpx) * 20);
  color: #7d8f85;
}
[data-route="pkgOps/pages/tclass/reports"] /* 提醒（浅黄警示）与鼓励（金底寄语） */
.a4-warn {
  margin-top: calc(var(--rpx) * 26);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #fdf6e7;
  border: calc(var(--rpx) * 2) solid #ecd9a8;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/tclass/reports"] .a4-warn-t {
  display: block;
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
  color: #a8791b;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-warn-s {
  display: block;
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #7a5b12;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-cheer {
  margin-top: calc(var(--rpx) * 22);
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28);
  background: #f6faf7;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.8;
  color: #0a7a3d;
  font-weight: 600;
  text-align: center;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-sign {
  margin-top: calc(var(--rpx) * 30);
  text-align: right;
  font-size: calc(var(--rpx) * 24);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-pagefoot {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(var(--rpx) * 22);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  letter-spacing: calc(var(--rpx) * 2);
  color: #b8c4bd;
}
[data-route="pkgOps/pages/tclass/reports"] /* v4.86.271 出口三键：打印下载（主）/ 分享（原生转发）/ 发站内消息 */
.a4-op-main {
  background: #07c160;
  color: #ffffff;
  font-weight: 700;
  border: none;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-op-share {
  background: #ffffff;
  color: #0a7a3d;
  border: calc(var(--rpx) * 2) solid #0a7a3d;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-op-inbox {
  background: #f6faf7;
  color: #0a7a3d;
  border: none;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-op-off {
  opacity: 0.6;
}
[data-route="pkgOps/pages/tclass/reports"] .a4-op-doc {
  margin-top: calc(var(--rpx) * 14);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #9aa8a0;
  text-decoration: underline;
}



/* ---- pkgOps/pages/hwshare/share.wxss ---- */
[data-route="pkgOps/pages/hwshare/share"] /* 班级点评 · 学生分享落地页（v4.86.267） */

.page {
  min-height: calc(var(--vh) * 100);
  background: #f2f7f4;
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/hwshare/share"] .hero {
  padding: calc(var(--rpx) * 34) calc(var(--rpx) * 32) calc(var(--rpx) * 38);
  background: linear-gradient(160deg, #0a7a3d 0%, #0e9450 100%);
}
[data-route="pkgOps/pages/hwshare/share"] .hero-k {
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.8);
}
[data-route="pkgOps/pages/hwshare/share"] .hero-t {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
}
[data-route="pkgOps/pages/hwshare/share"] .hero-s {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.86);
}
[data-route="pkgOps/pages/hwshare/share"] .card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/hwshare/share"] .card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/hwshare/share"] .card-s {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #7d8f85;
}
[data-route="pkgOps/pages/hwshare/share"] .card-s.tip {
  margin-top: calc(var(--rpx) * 12);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/hwshare/share"] .row-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/hwshare/share"] .empty {
  padding: calc(var(--rpx) * 40) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/hwshare/share"] .err {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #c0392b;
}
[data-route="pkgOps/pages/hwshare/share"] /* v4.86.500：错误卡上的卡号行 —— 灰底、等宽感、可选中、右侧「复制」。
   它是排障用的，所以刻意比红字低一档（不抢「错在哪」那句），但比 tip 清楚。 */
.card-no {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: #f5f8f6;
}
[data-route="pkgOps/pages/hwshare/share"] .card-no-k {
  margin-right: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/hwshare/share"] .card-no-v {
  flex: 1;
  min-width: 0;
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
  color: #16301f;
  letter-spacing: calc(var(--rpx) * 1);
  word-break: break-all;
}
[data-route="pkgOps/pages/hwshare/share"] .card-no-copy {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 10);
  border: calc(var(--rpx) * 1) solid #cfe3d7;
  border-radius: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/hwshare/share"] .score {
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 999);
  background: #fbf3dd;
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  color: #a8791b;
}
[data-route="pkgOps/pages/hwshare/share"] .comment {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 12);
  background: #f4f8f5;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.75;
  color: #24402e;
  white-space: pre-wrap;
}
[data-route="pkgOps/pages/hwshare/share"] .comment-wait {
  color: #8b9a91;
}
[data-route="pkgOps/pages/hwshare/share"] /* v7.0.027：老师原音 —— 与正文同一块底色，做成一条能点的横条 */
.voice {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 1) solid #cfe3d6;
  background: #eef7f1;
  font-size: calc(var(--rpx) * 28);
  color: #2f6b48;
}
[data-route="pkgOps/pages/hwshare/share"] .voice-on {
  background: #dcefe3;
  color: #1f5537;
}
[data-route="pkgOps/pages/hwshare/share"] /* v7.0.027：页脚版本行 —— 学员端自证跑的是哪一版 */
.ver-line {
  margin: calc(var(--rpx) * 28) 0 calc(var(--rpx) * 12);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  color: #b3c0b8;
}
[data-route="pkgOps/pages/hwshare/share"] .shot {
  margin-top: calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 10);
  overflow: hidden;
  background: #f4f8f5;
}
[data-route="pkgOps/pages/hwshare/share"] .shot-img {
  width: 100%;
  display: block;
}
[data-route="pkgOps/pages/hwshare/share"] .btn-primary {
  margin-top: calc(var(--rpx) * 22);
}
[data-route="pkgOps/pages/hwshare/share"] /* 三件套 */
.tools {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/hwshare/share"] .tool {
  flex: 1;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 10);
  background: #f4f8f5;
  text-align: center;
}
[data-route="pkgOps/pages/hwshare/share"] .tool:active {
  background: #e9f3ec;
}
[data-route="pkgOps/pages/hwshare/share"] .tool-i {
  width: calc(var(--rpx) * 60);
  height: calc(var(--rpx) * 60);
  margin: 0 auto;
  border-radius: 50%;
  background: #e2f2e7;
  font-size: calc(var(--rpx) * 28);
  line-height: calc(var(--rpx) * 60);
  color: #0a7a3d;
  font-weight: 600;
}
[data-route="pkgOps/pages/hwshare/share"] .tool-t {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #16301f;
}
[data-route="pkgOps/pages/hwshare/share"] .tool-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/hwshare/share"] .row-btns {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/hwshare/share"] .btn-ghost {
  flex: 1;
  margin: 0;
  padding: 0;
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  border-radius: calc(var(--rpx) * 999);
  background: #e2f2e7;
  font-size: calc(var(--rpx) * 28);
  color: #0a7a3d;
}
[data-route="pkgOps/pages/hwshare/share"] .btn-ghost::after {
  border: none;
}
[data-route="pkgOps/pages/hwshare/share"] /* v4.86.286（木哥令⑤）：批注图 + 逐处点评 */
.mk-note {
  display: flex;
  align-items: flex-start;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/hwshare/share"] .mk-note-no {
  flex-shrink: 0;
  width: calc(var(--rpx) * 36);
  height: calc(var(--rpx) * 36);
  border-radius: 50%;
  background: #0a7a3d;
  color: #fff;
  font-size: calc(var(--rpx) * 20);
  text-align: center;
  line-height: calc(var(--rpx) * 36);
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/hwshare/share"] .mk-note-t {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  line-height: calc(var(--rpx) * 36);
  color: #333;
}
[data-route="pkgOps/pages/hwshare/share"] .shot-loading {
  padding: calc(var(--rpx) * 40) 0;
}
[data-route="pkgOps/pages/hwshare/share"] .mark-offscreen {
  position: fixed;
  left: calc(var(--rpx) * -9999);
  top: calc(var(--rpx) * -9999);
  width: 8px;
  height: 8px;
}
[data-route="pkgOps/pages/hwshare/share"] /* v4.86.319：加载中纯文字 / 错误卡重试键 / 页脚诊断行 */
.wait-text {
  text-align: center;
  color: #7a8f85;
  font-size: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 60) 0;
}
[data-route="pkgOps/pages/hwshare/share"] .retry-btn {
  margin-top: calc(var(--rpx) * 24);
  text-align: center;
  padding: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10);
  background: #eaf6ef;
  color: #0a7a3d;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/hwshare/share"] .wait-text-sm { padding: calc(var(--rpx) * 20) 0; font-size: calc(var(--rpx) * 24); }
[data-route="pkgOps/pages/hwshare/share"] /* v4.86.479：错误卡上的第二条路（打开练字猫咪）—— 弱一档，
   别跟「再试一次」抢注意力 */
.retry-btn-ghost {
  margin-top: calc(var(--rpx) * 12);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #d9e6df;
  color: #4a6a58;
}
[data-route="pkgOps/pages/hwshare/share"] /* v4.86.368（木哥 365 号令）：启动进度条 —— 页首通栏 calc(var(--rpx) * 6)，纯动画不依赖组件。
   颜色口径与全站加载条一致：轨道 #ececec、进度 #07c160；循环走，加载多久走多久。 */
.boot-bar {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  z-index: 9999;
  height: calc(var(--rpx) * 6);
  background: #ececec;
  overflow: hidden;
  pointer-events: none;
}
[data-route="pkgOps/pages/hwshare/share"] .boot-bar-fill {
  height: 100%;
  border-radius: 0;
  background: #07c160;
  animation: boot-walk 1.6s linear infinite;
}


@keyframes boot-walk {
  0% {
    width: 0;
  }
  100% {
    width: 100%;
  }
}
[data-route="pkgOps/pages/hwshare/share"] /* ================= v7.0.028（木哥五问①）：点评版式对齐站内点评页 =================
   圈点与它的文字在同一处：批注图上叠编号图标（♪ 有原音 / 💬 只有文字 / 🔊 总原音，
   按圈点坐标百分比定位），点图标图下浮出那一句；逐处列表收成一行点了才展开。
   样式与 pages/detail 同源，抄成本页同款类名（落地页不上自定义组件）。 */
.shot-wrap {
  position: relative;
}
[data-route="pkgOps/pages/hwshare/share"] .sdot {
  position: absolute;
  transform: translate(-50%, -50%);
  width: calc(var(--rpx) * 76);
  height: calc(var(--rpx) * 76);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 12) rgba(0, 0, 0, 0.28);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 40);
  z-index: 2;
  opacity: 0.55;
}
[data-route="pkgOps/pages/hwshare/share"] .sdot-on {
  background: #e8f5e9;
  box-shadow: 0 0 0 calc(var(--rpx) * 6) rgba(76, 175, 80, 0.25);
  opacity: 1;
}
[data-route="pkgOps/pages/hwshare/share"] .note-dot {
  width: calc(var(--rpx) * 60);
  height: calc(var(--rpx) * 60);
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgOps/pages/hwshare/share"] .note-dot-audio {
  color: #07c160;
}
[data-route="pkgOps/pages/hwshare/share"] .note-dot-text {
  color: #4a6fa5;
}
[data-route="pkgOps/pages/hwshare/share"] .note-bubble {
  display: flex;
  align-items: flex-start;
  margin-top: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10);
  background: #eef7ef;
  border: calc(var(--rpx) * 2) solid #cde8d0;
}
[data-route="pkgOps/pages/hwshare/share"] .nb-no {
  flex: none;
  margin-right: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #35733a;
}
[data-route="pkgOps/pages/hwshare/share"] .nb-txt {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #191919;
}
[data-route="pkgOps/pages/hwshare/share"] .note-list {
  margin-top: calc(var(--rpx) * 18);
  padding-top: calc(var(--rpx) * 14);
  border-top: calc(var(--rpx) * 2) solid #eef1ee;
}
[data-route="pkgOps/pages/hwshare/share"] .note-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/hwshare/share"] .nh-t {
  font-size: calc(var(--rpx) * 28);
  color: #b07b28;
}
[data-route="pkgOps/pages/hwshare/share"] .nh-x {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
}
[data-route="pkgOps/pages/hwshare/share"] .note-item {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 12) 0;
}
[data-route="pkgOps/pages/hwshare/share"] .note-no {
  flex: none;
  margin-right: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #35733a;
}
[data-route="pkgOps/pages/hwshare/share"] .note-txt {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #191919;
}
[data-route="pkgOps/pages/hwshare/share"] .note-play {
  flex: none;
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgOps/pages/hwshare/share"] /* v7.0.056（木哥 03:1x「如生效直接显示已确认」）：认领成功要看得出 ——
   卡头换浅绿、前置一枚「已确认」角标、主按钮变完成态（仍可点，点=再去点评页）。 */
.card-ok {
  background: #f2fbf5;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.12);
}
[data-route="pkgOps/pages/hwshare/share"] .ok-badge {
  display: inline-block;
  margin-right: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 8);
  background: #0a7a3d;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  font-weight: 600;
  vertical-align: calc(var(--rpx) * 2);
}
[data-route="pkgOps/pages/hwshare/share"] .btn-done {
  background: #0a7a3d !important;
  color: #ffffff !important;
}



/* ---- pkgOps/pages/rv/invite.wxss ---- */
[data-route="pkgOps/pages/rv/invite"] /* 邀约点评 · 被邀老师落地页（v4.86.267） */

.page {
  min-height: calc(var(--vh) * 100);
  background: #f2f7f4;
  padding: 0 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/rv/invite"] .hero {
  padding: calc(var(--rpx) * 34) calc(var(--rpx) * 32) calc(var(--rpx) * 38);
  background: linear-gradient(160deg, #0a7a3d 0%, #0e9450 100%);
}
[data-route="pkgOps/pages/rv/invite"] .hero-k {
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.8);
}
[data-route="pkgOps/pages/rv/invite"] .hero-t {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #ffffff;
}
[data-route="pkgOps/pages/rv/invite"] .hero-s {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.86);
}
[data-route="pkgOps/pages/rv/invite"] .card {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 20);
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 22) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/rv/invite"] .card-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #16301f;
}
[data-route="pkgOps/pages/rv/invite"] .card-s {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #7d8f85;
}
[data-route="pkgOps/pages/rv/invite"] .row-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/rv/invite"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #7d8f85;
}
[data-route="pkgOps/pages/rv/invite"] .empty {
  padding: calc(var(--rpx) * 36) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #9aa8a0;
}
[data-route="pkgOps/pages/rv/invite"] .err {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #c0392b;
}
[data-route="pkgOps/pages/rv/invite"] .shot {
  margin-top: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 14);
  overflow: hidden;
  background: #f4f8f5;
}
[data-route="pkgOps/pages/rv/invite"] .shot-img {
  width: 100%;
  display: block;
}
[data-route="pkgOps/pages/rv/invite"] .btn-primary {
  margin-top: calc(var(--rpx) * 22);
}
[data-route="pkgOps/pages/rv/invite"] .btn-ghost {
  margin-top: calc(var(--rpx) * 16);
  padding: 0;
  height: calc(var(--rpx) * 84);
  line-height: calc(var(--rpx) * 84);
  border-radius: calc(var(--rpx) * 999);
  background: #eef5f0;
  font-size: calc(var(--rpx) * 28);
  color: #4f665a;
}
[data-route="pkgOps/pages/rv/invite"] .btn-ghost::after {
  border: none;
}
[data-route="pkgOps/pages/rv/invite"] .temp-tag {
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  background: #fdf1e3;
  font-size: calc(var(--rpx) * 24);
  color: #a8641a;
}
[data-route="pkgOps/pages/rv/invite"] .area {
  width: 100%;
  box-sizing: border-box;
  min-height: calc(var(--rpx) * 220);
  margin-top: calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: #f4f8f5;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.7;
  color: #16301f;
}
[data-route="pkgOps/pages/rv/invite"] .li {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
  color: #6b7d72;
}
[data-route="pkgOps/pages/rv/invite"] /* 申请弹层 */
.mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  z-index: 900;
  display: flex;
  align-items: flex-end;
  background: rgba(0, 0, 0, 0.45);
}
[data-route="pkgOps/pages/rv/invite"] .sheet {
  width: 100%;
  box-sizing: border-box;
  padding: calc(var(--rpx) * 34) calc(var(--rpx) * 32) calc(calc(var(--rpx) * 32) + env(safe-area-inset-bottom));
  border-radius: calc(var(--rpx) * 26) calc(var(--rpx) * 26) 0 0;
  background: #ffffff;
  max-height: 86vh;
  overflow-y: auto;
}
[data-route="pkgOps/pages/rv/invite"] .sheet-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #16301f;
}
[data-route="pkgOps/pages/rv/invite"] .sheet-d {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.75;
  color: #5c7065;
}
[data-route="pkgOps/pages/rv/invite"] .sheet-gain {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/rv/invite"] .gain-i {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  margin-bottom: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 12);
  background: #f4f8f5;
}
[data-route="pkgOps/pages/rv/invite"] .gain-n {
  flex-shrink: 0;
  width: calc(var(--rpx) * 130);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/rv/invite"] .gain-d {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
  color: #6b7d72;
}



/* ---- pkgOps/pages/demoshare/demoshare.wxss ---- */
[data-route="pkgOps/pages/demoshare/demoshare"] /* 视频示范 · 领取落地页（v4.86.310）—— 样式与 hwshare 落地页同一套色系 */
.page {
  min-height: calc(var(--vh) * 100);
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 28) calc(var(--rpx) * 60);
  box-sizing: border-box;
  background: #f2f7f4;
}
[data-route="pkgOps/pages/demoshare/demoshare"] .loading {
  text-align: center;
  color: #7a8f85;
  padding: calc(var(--rpx) * 120) 0;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/demoshare/demoshare"] .card {
  background: #fff;
  border-radius: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 36) calc(var(--rpx) * 32);
  margin-bottom: calc(var(--rpx) * 28);
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 16) rgba(10, 122, 61, 0.06);
}
[data-route="pkgOps/pages/demoshare/demoshare"] .hero {
  text-align: center;
  padding-top: calc(var(--rpx) * 48);
  padding-bottom: calc(var(--rpx) * 44);
}
[data-route="pkgOps/pages/demoshare/demoshare"] .hero-cat {
  font-size: calc(var(--rpx) * 76);
  line-height: 1.2;
}
[data-route="pkgOps/pages/demoshare/demoshare"] .hero-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #1f2d26;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/demoshare/demoshare"] .hero-sub {
  font-size: calc(var(--rpx) * 24);
  color: #7a8f85;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/demoshare/demoshare"] .hero-price {
  display: inline-block;
  margin-top: calc(var(--rpx) * 22);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 26);
  border-radius: calc(var(--rpx) * 999);
  background: #e8f6ee;
  color: #0a7a3d;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgOps/pages/demoshare/demoshare"] .btn-primary {
  background: #0a7a3d;
  color: #fff;
  border-radius: calc(var(--rpx) * 16);
  text-align: center;
  padding: calc(var(--rpx) * 26) 0;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
}
[data-route="pkgOps/pages/demoshare/demoshare"] .btn-ghost {
  border: calc(var(--rpx) * 2) solid #0a7a3d;
  color: #0a7a3d;
  border-radius: calc(var(--rpx) * 16);
  text-align: center;
  padding: calc(var(--rpx) * 22) 0;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  background: #fff;
}
[data-route="pkgOps/pages/demoshare/demoshare"] .claim-btn {
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/demoshare/demoshare"] .go-btn {
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/demoshare/demoshare"] .tip {
  font-size: calc(var(--rpx) * 24);
  color: #7a8f85;
  line-height: 1.6;
  text-align: center;
  padding: 0 calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/demoshare/demoshare"] .err-inline {
  margin-top: calc(var(--rpx) * 18);
  text-align: center;
  color: #c04a3a;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/demoshare/demoshare"] .err-card .err-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #1f2d26;
}
[data-route="pkgOps/pages/demoshare/demoshare"] .err-card .err-text {
  margin-top: calc(var(--rpx) * 14);
  color: #7a8f85;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
}
[data-route="pkgOps/pages/demoshare/demoshare"] .ok-card {
  text-align: center;
}
[data-route="pkgOps/pages/demoshare/demoshare"] .ok-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgOps/pages/demoshare/demoshare"] .ok-text {
  margin-top: calc(var(--rpx) * 14);
  color: #44554c;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
}
[data-route="pkgOps/pages/demoshare/demoshare"] .video {
  width: 100%;
  height: calc(var(--rpx) * 420);
  border-radius: calc(var(--rpx) * 20);
  background: #000;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/demoshare/demoshare"] /* v4.86.319：加载中纯文字 / 重试键 / 页脚诊断行 */
.wait-text {
  text-align: center;
  color: #7a8f85;
  font-size: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 80) 0;
}
[data-route="pkgOps/pages/demoshare/demoshare"] .retry-btn {
  margin-top: calc(var(--rpx) * 24);
  text-align: center;
  padding: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10);
  background: #eaf6ef;
  color: #0a7a3d;
  font-size: calc(var(--rpx) * 28);
}



/* ---- pkgOps/pages/feedback/feedback.wxss ---- */
[data-route="pkgOps/pages/feedback/feedback"] .fb { padding: calc(var(--rpx) * 24); }
[data-route="pkgOps/pages/feedback/feedback"] .fb-lead { background: #f0f7ee; border-radius: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24); font-size: calc(var(--rpx) * 24); color: #3f4c40; line-height: 1.6; }
[data-route="pkgOps/pages/feedback/feedback"] .fb-kinds { margin-top: calc(var(--rpx) * 24); }
[data-route="pkgOps/pages/feedback/feedback"] .k { border: calc(var(--rpx) * 2) solid #e2e8e0; border-radius: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24); margin-bottom: calc(var(--rpx) * 16); }
[data-route="pkgOps/pages/feedback/feedback"] .k-on { border-color: #2f9e57; background: #f2fbf5; }
[data-route="pkgOps/pages/feedback/feedback"] .k-t { display: block; font-size: calc(var(--rpx) * 32); font-weight: 600; color: #2f3b30; }
[data-route="pkgOps/pages/feedback/feedback"] .k-d { display: block; margin-top: calc(var(--rpx) * 6); font-size: calc(var(--rpx) * 24); color: #8a938a; }
[data-route="pkgOps/pages/feedback/feedback"] .fb-box { margin-top: calc(var(--rpx) * 8); background: #fff; border-radius: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 20); }
[data-route="pkgOps/pages/feedback/feedback"] .fb-ta { width: 100%; height: calc(var(--rpx) * 260); font-size: calc(var(--rpx) * 28); line-height: 1.6; }
[data-route="pkgOps/pages/feedback/feedback"] .fb-count { text-align: right; font-size: calc(var(--rpx) * 20); color: #b0b8b0; }
[data-route="pkgOps/pages/feedback/feedback"] .fb-go { margin-top: calc(var(--rpx) * 28); background: #2f9e57; color: #fff; font-size: calc(var(--rpx) * 32); border-radius: calc(var(--rpx) * 44); }
[data-route="pkgOps/pages/feedback/feedback"] .fb-go-off { opacity: .6; }
[data-route="pkgOps/pages/feedback/feedback"] .fb-done { margin-top: calc(var(--rpx) * 40); text-align: center; padding: 0 calc(var(--rpx) * 20); }
[data-route="pkgOps/pages/feedback/feedback"] .fb-done-t { display: block; font-size: calc(var(--rpx) * 40); font-weight: 600; color: #2f3b30; }
[data-route="pkgOps/pages/feedback/feedback"] .fb-reply { margin-top: calc(var(--rpx) * 24); background: #fff; border-radius: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 28) calc(var(--rpx) * 24); text-align: left; font-size: calc(var(--rpx) * 28); color: #444; line-height: 1.7; }
[data-route="pkgOps/pages/feedback/feedback"] .fb-human { margin-top: calc(var(--rpx) * 32); background: #2f9e57; color: #fff; font-size: calc(var(--rpx) * 32); border-radius: calc(var(--rpx) * 44); }
[data-route="pkgOps/pages/feedback/feedback"] .fb-again { margin-top: calc(var(--rpx) * 24); font-size: calc(var(--rpx) * 24); color: #8a938a; padding: calc(var(--rpx) * 12); }



/* ---- pkgOps/pages/refund/refund.wxss ---- */
[data-route="pkgOps/pages/refund/refund"] /* 会员单退款 / 未付单（2026-10-30）—— 与发货台同一套观感：一屏一件事，不做花活 */
.page {
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
}
[data-route="pkgOps/pages/refund/refund"] .card {
  background: #fff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 20);
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 12) rgba(0, 0, 0, 0.04);
}
[data-route="pkgOps/pages/refund/refund"] .bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: calc(var(--rpx) * 8) 0 calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/refund/refund"] .bar-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #2b2b2b;
}
[data-route="pkgOps/pages/refund/refund"] .bar-btn {
  font-size: calc(var(--rpx) * 28);
  color: #3f7f6f;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 18);
  border: calc(var(--rpx) * 1) solid #cfe3dc;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/refund/refund"] .tab-row {
  display: flex;
  gap: calc(var(--rpx) * 12);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/refund/refund"] .tab {
  flex: 1;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #6b6b6b;
  padding: calc(var(--rpx) * 12) 0;
  background: #f4f6f5;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/refund/refund"] .tab-on {
  background: #3f7f6f;
  color: #fff;
  font-weight: 600;
}
[data-route="pkgOps/pages/refund/refund"] /* v7.0.109：会员单 / 云库订单 两段（分段条，不是页签 —— 两条流水线各管各的单） */
.seg-row {
  display: flex;
  gap: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 6);
  background: #eef2f0;
  border-radius: calc(var(--rpx) * 14);
  margin-bottom: calc(var(--rpx) * 18);
}
[data-route="pkgOps/pages/refund/refund"] .seg-i {
  flex: 1;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #5d6b64;
  padding: calc(var(--rpx) * 14) 0;
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgOps/pages/refund/refund"] .seg-on {
  background: #fff;
  color: #2b2b2b;
  font-weight: 600;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(0, 0, 0, 0.06);
}
[data-route="pkgOps/pages/refund/refund"] .fine {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/refund/refund"] .err {
  color: #c45656;
  font-size: calc(var(--rpx) * 28);
  margin: calc(var(--rpx) * 12) 0;
}
[data-route="pkgOps/pages/refund/refund"] .center {
  text-align: center;
  margin: calc(var(--rpx) * 40) 0;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/refund/refund"] .muted {
  color: #8a8a8a;
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
}
[data-route="pkgOps/pages/refund/refund"] .mono {
  font-family: Menlo, monospace;
}
[data-route="pkgOps/pages/refund/refund"] .row-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgOps/pages/refund/refund"] .no {
  font-size: calc(var(--rpx) * 24);
  color: #6b6b6b;
  font-family: Menlo, monospace;
}
[data-route="pkgOps/pages/refund/refund"] .st {
  font-size: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/refund/refund"] .st-created {
  background: #fff3e0;
  color: #b26a00;
}
[data-route="pkgOps/pages/refund/refund"] .st-paid {
  background: #e6f4ee;
  color: #2f6b5b;
}
[data-route="pkgOps/pages/refund/refund"] .st-closed, [data-route="pkgOps/pages/refund/refund"] .st-refunded {
  background: #eeeeee;
  color: #7a7a7a;
}
[data-route="pkgOps/pages/refund/refund"] .row-t {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #2b2b2b;
  margin: calc(var(--rpx) * 10) 0 calc(var(--rpx) * 6);
}
[data-route="pkgOps/pages/refund/refund"] .btn-row {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 18);
}
[data-route="pkgOps/pages/refund/refund"] .btn {
  flex: 1;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 16) 0;
  border-radius: calc(var(--rpx) * 10);
  background: #3f7f6f;
  color: #fff;
}
[data-route="pkgOps/pages/refund/refund"] .btn.mini {
  font-size: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 12) 0;
}
[data-route="pkgOps/pages/refund/refund"] .btn.ghost {
  background: #f0f0f0;
  color: #4a4a4a;
}
[data-route="pkgOps/pages/refund/refund"] .btn.danger {
  background: #c45656;
}
[data-route="pkgOps/pages/refund/refund"] .btn.dis {
  opacity: 0.5;
}
[data-route="pkgOps/pages/refund/refund"] .mask {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.35);
  z-index: 20;
}
[data-route="pkgOps/pages/refund/refund"] .sheet {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 21;
  background: #fff;
  border-radius: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0 0;
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 28) calc(calc(var(--rpx) * 32) + env(safe-area-inset-bottom));
}
[data-route="pkgOps/pages/refund/refund"] .sheet-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/refund/refund"] .sheet-l {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 14) 0;
  border-bottom: calc(var(--rpx) * 1) solid #f2f2f2;
}
[data-route="pkgOps/pages/refund/refund"] .sheet-l .k {
  width: calc(var(--rpx) * 110);
  color: #8a8a8a;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/refund/refund"] .sheet-l .v {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #2b2b2b;
}
[data-route="pkgOps/pages/refund/refund"] .pick {
  font-size: calc(var(--rpx) * 28);
  color: #2b2b2b;
}
[data-route="pkgOps/pages/refund/refund"] .input {
  border: calc(var(--rpx) * 1) solid #e8e8e8;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/refund/refund"] .check {
  margin: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #c45656;
}
[data-route="pkgOps/pages/refund/refund"] .check-ok {
  color: #2f6b5b;
}



/* ---- pkgOps/pages/hwassign/hwassign.wxss ---- */
[data-route="pkgOps/pages/hwassign/hwassign"] /**
 * 布置班级作业（老师端）· v2 皮（2026-10-31 木哥令「UI 和主站统一」）
 * ---------------------------------------------------------------------
 * 颜色只用色板、字号只走 5 档（20/24/28/32/40）、按钮只认全局两颗；
 * 与出卷页 exampaper 同一套行样式（.z-card / .z-k / .z-v / .z-hit）。
 * 旧皮（墨绿自造色 + calc(var(--rpx) * 40) 大字）整份退役 —— lint-style 早就该拦住它。
 */

.page-wrap {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* 列表型分组块：上下内边距交给行，左右 calc(var(--rpx) * 32) 对齐文字 */
.z-card {
  padding: 0 calc(var(--rpx) * 32);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-k {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 32);
  color: #191919;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-v {
  font-size: calc(var(--rpx) * 32);
  color: #888888;
  max-width: calc(var(--rpx) * 400);
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-ph {
  color: #b2b2b2;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-hit {
  background: #f2f2f2;
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* 发丝线：cell 的 :last-child 在「picker 行」上会失效（父节点是 picker），
   这里补回来；块内一行一条线、最后一行不留线。 */
.z-card .cell {
  border-bottom: calc(var(--rpx) * 1) solid #e5e5e5;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-card > picker:last-child .cell, [data-route="pkgOps/pages/hwassign/hwassign"] .z-card > .cell:last-child {
  border-bottom: none;
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* 同步课程 / 自定义生字 的两档选择（微信的分段控件样式：浅灰轨道 + 白块选中） */
.seg {
  display: flex;
  background: #f2f2f2;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 4);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .seg-it {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .seg-it.on {
  background: #ffffff;
  color: #191919;
  font-weight: 500;
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* 这一课印在纸上的例字（同步课程） */
.z-chars {
  padding: calc(var(--rpx) * 20) 0;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-chars-k {
  display: block;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-chars-v {
  display: block;
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 32);
  color: #191919;
  letter-spacing: calc(var(--rpx) * 6);
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* 纵向排的输入行 */
.z-col {
  display: block;
  padding: calc(var(--rpx) * 24) 0;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-ipt {
  margin-top: calc(var(--rpx) * 14);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-ta {
  margin-top: calc(var(--rpx) * 14);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 28);
  width: 100%;
  min-height: calc(var(--rpx) * 140);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* 红线说明（生字必须在范字库里） */
.z-note-line {
  padding: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* 动作区 */
.z-act {
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-mt {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-status {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 8) 0;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #07c160;
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* v7.0.211（木哥令）：绿圈绿字次键 —— 与作业页 hwhome 的 .btn.ghost 同款，
   预览是次动作，不再抡大绿键 */
.btn-green-ghost {
  background: #ffffff;
  color: #07c160;
  border: calc(var(--rpx) * 1) solid #07c160;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .btn-green-ghost::after {
  border: none;
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* 本班作业列表 —— v7.0.211（木哥令「把下方的作业卡，也统一成作业页面的作业卡的风格」）：
   每份作业一张独立白卡（hwhome 口径：白卡 calc(var(--rpx) * 16) 圆角、calc(var(--rpx) * 28) 内边距、标题 calc(var(--rpx) * 32)/600、
   日期 calc(var(--rpx) * 24) #b2b2b2、操作键白底描边），不再是大卡里发丝线分隔的行 */
.hw {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 28);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .hw-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: rgba(0, 0, 0, 0.9);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .hw-d {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .hw-b {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .mini {
  display: inline-block;
  font-size: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
  color: rgba(0, 0, 0, 0.9);
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .mini.warn {
  color: #fa5151;
  border-color: #ffd9d9;
  background: #fff5f5;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .rc {
  margin-bottom: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 16);
  background: #ffffff;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .rc-t {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  margin-bottom: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .rc-r {
  display: flex;
  justify-content: space-between;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  padding: calc(var(--rpx) * 6) 0;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .rc-s.g {
  color: #07c160;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .rc-s.s {
  color: #191919;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .rc-s.n {
  color: #b2b2b2;
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* ---- 预览弹窗（真纸先看，点头再布置） ---- */
.mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.55);
  z-index: 900;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .sheet-pop {
  width: calc(var(--rpx) * 640);
  max-height: 84vh;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 32);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .pop-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .pop-status {
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  padding: calc(var(--rpx) * 40) 0;
  text-align: center;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .pop-img {
  width: 100%;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .pop-acts {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .pop-mt {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* 画纸用的 canvas：屏外挂载，绝不能 display:none */
.hw-canvas {
  position: fixed;
  left: -9999px;
  top: 0;
  width: 794px;
  height: 1123px;
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* ---- v7.0.175 自定义生字双键 + 课时生字表弹窗（微信生态色板） ---- */

.z-keys {
  padding: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 8);
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* v7.0.179（木哥令）：按住说话搬到生字输入框后边，一行放完 */
.z-chars-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-ipt-grow {
  flex: 1;
  min-width: 0;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-voice-inline {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-tb-btn {
  width: 100%;
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  font-size: calc(var(--rpx) * 28);
  color: #07c160;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 10);
  padding: 0;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .z-tb-hit {
  background: #f0fbf4;
}
[data-route="pkgOps/pages/hwassign/hwassign"] /* 弹窗：复用 .mask / .pop-t / .pop-acts / .pop-mt，只补生字表专属行 */
.tb-pop {
  width: calc(var(--rpx) * 640);
  max-width: 92vw;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 32) calc(var(--rpx) * 28);
  box-sizing: border-box;
  max-height: 84vh;
  overflow-y: auto;
}
[data-route="pkgOps/pages/hwassign/hwassign"] .tb-law {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  margin: calc(var(--rpx) * -8) 0 calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .tb-law-sub {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .tb-stat {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  padding: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 4);
}
[data-route="pkgOps/pages/hwassign/hwassign"] .tb-hint {
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  padding: calc(var(--rpx) * 4) 0;
}



/* ---- pkgOps/pages/hwhome/hwhome.wxss ---- */
[data-route="pkgOps/pages/hwhome/hwhome"] /* 班级作业（家长端）v7.0.172 —— 页面 ui 严格按微信生态设计风格与色调（木哥令）：
 * 底 #ededed / 卡白 / 主色 #07c160 / 链接蓝 #576b95 / 警示 #fa5151·#fa9d3b /
 * 文字 rgba(0, [data-route="pkgOps/pages/hwhome/hwhome"] 0, [data-route="pkgOps/pages/hwhome/hwhome"] 0, [data-route="pkgOps/pages/hwhome/hwhome"] 0.9)·#888·#b2b2b2 / 分隔线 #f0f0f0；不再用橄榄绿+米黄旧色板。 */
page { background: #ededed; }
[data-route="pkgOps/pages/hwhome/hwhome"] .wrap { padding: calc(var(--rpx) * 24); padding-bottom: calc(var(--rpx) * 60); }
[data-route="pkgOps/pages/hwhome/hwhome"] /* v7.0.202（木哥令「发现页未读 4，点开作业找不到未读提示落在哪里」）：
   页头待交提示条 —— 微信「红点 + 一句话」形态，数与发现页「作业」行同一个 */
.todo-bar { display: flex; align-items: flex-start; background: #fff5f5; border: calc(var(--rpx) * 1) solid #ffd9d9;
  border-radius: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28); margin-bottom: calc(var(--rpx) * 20); }
[data-route="pkgOps/pages/hwhome/hwhome"] .tb-dot { flex-shrink: 0; width: calc(var(--rpx) * 16); height: calc(var(--rpx) * 16); border-radius: 50%; background: #fa5151;
  margin: calc(var(--rpx) * 10) calc(var(--rpx) * 16) 0 0; box-shadow: 0 0 0 calc(var(--rpx) * 6) rgba(250, 81, 81, 0.12); }
[data-route="pkgOps/pages/hwhome/hwhome"] .tb-body { flex: 1; min-width: 0; }
[data-route="pkgOps/pages/hwhome/hwhome"] .tb-t { font-size: calc(var(--rpx) * 32); font-weight: 600; color: #fa5151; line-height: 1.4; }
[data-route="pkgOps/pages/hwhome/hwhome"] .tb-s { font-size: calc(var(--rpx) * 24); color: #a8544f; line-height: 1.5; margin-top: calc(var(--rpx) * 6); }
[data-route="pkgOps/pages/hwhome/hwhome"] /* 待交卡：左侧红竖条 + 卡头一枚「N 这份还没交」 */
.card-todo { border-left: calc(var(--rpx) * 8) solid #fa5151; }
[data-route="pkgOps/pages/hwhome/hwhome"] .todo-flag { display: flex; align-items: center; margin-bottom: calc(var(--rpx) * 16); }
[data-route="pkgOps/pages/hwhome/hwhome"] .tf-no { width: calc(var(--rpx) * 40); height: calc(var(--rpx) * 40); line-height: calc(var(--rpx) * 40); text-align: center; border-radius: 50%;
  background: #fa5151; color: #ffffff; font-size: calc(var(--rpx) * 24); font-weight: 600; margin-right: calc(var(--rpx) * 12); }
[data-route="pkgOps/pages/hwhome/hwhome"] .tf-t { font-size: calc(var(--rpx) * 24); color: #fa5151; font-weight: 500; }
[data-route="pkgOps/pages/hwhome/hwhome"] .subbar { display: flex; align-items: center; justify-content: space-between;
  background: #ffffff; border-radius: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28); margin-bottom: calc(var(--rpx) * 20); }
[data-route="pkgOps/pages/hwhome/hwhome"] .subt { font-size: calc(var(--rpx) * 28); color: rgba(0, 0, 0, 0.9); }
[data-route="pkgOps/pages/hwhome/hwhome"] .subbtn { margin: 0; padding: 0 calc(var(--rpx) * 32); height: calc(var(--rpx) * 60); line-height: calc(var(--rpx) * 60); font-size: calc(var(--rpx) * 28);
  background: #07c160; color: #ffffff; border-radius: calc(var(--rpx) * 10); font-weight: 500; }
[data-route="pkgOps/pages/hwhome/hwhome"] .subbtn::after { border: none; }
[data-route="pkgOps/pages/hwhome/hwhome"] .empty { padding: calc(var(--rpx) * 120) calc(var(--rpx) * 60); text-align: center; color: #b2b2b2; font-size: calc(var(--rpx) * 28); line-height: 1.6; }
[data-route="pkgOps/pages/hwhome/hwhome"] .card { background: #ffffff; border-radius: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 28); margin-bottom: calc(var(--rpx) * 20); }
[data-route="pkgOps/pages/hwhome/hwhome"] /* v7.0.188：卡片重排 —— 不再手风琴折叠，数据全在卡面一目了然 */
.head { display: flex; justify-content: space-between; align-items: flex-start; }
[data-route="pkgOps/pages/hwhome/hwhome"] .tt { flex: 1; min-width: 0; }
[data-route="pkgOps/pages/hwhome/hwhome"] .t1row { display: flex; align-items: center; }
[data-route="pkgOps/pages/hwhome/hwhome"] /* v7.0.172：点评单徽标（链接蓝，微信色板） */
.tag { flex-shrink: 0; margin-right: calc(var(--rpx) * 12); padding: calc(var(--rpx) * 2) calc(var(--rpx) * 14); border-radius: calc(var(--rpx) * 8);
  background: #eef3fb; color: #576b95; font-size: calc(var(--rpx) * 20); font-weight: 500; }
[data-route="pkgOps/pages/hwhome/hwhome"] .t1 { display: block; font-size: calc(var(--rpx) * 32); font-weight: 600; color: rgba(0, 0, 0, 0.9); line-height: 1.4; }
[data-route="pkgOps/pages/hwhome/hwhome"] .t2 { display: block; font-size: calc(var(--rpx) * 24); color: #b2b2b2; margin-top: calc(var(--rpx) * 8); }
[data-route="pkgOps/pages/hwhome/hwhome"] .st { font-size: calc(var(--rpx) * 24); padding: calc(var(--rpx) * 6) calc(var(--rpx) * 16); border-radius: calc(var(--rpx) * 8); flex-shrink: 0; margin-left: calc(var(--rpx) * 16); }
[data-route="pkgOps/pages/hwhome/hwhome"] .st.n { background: #fff7f0; color: #fa9d3b; }
[data-route="pkgOps/pages/hwhome/hwhome"] .st.s { background: #f0f9eb; color: #07c160; }
[data-route="pkgOps/pages/hwhome/hwhome"] .st.g { background: #f0f9eb; color: #07c160; }
[data-route="pkgOps/pages/hwhome/hwhome"] .st.gray { background: #f7f7f7; color: #b2b2b2; }
[data-route="pkgOps/pages/hwhome/hwhome"] /* v7.0.188：截止/提交时间常驻卡面（不用展开）—— 截止红、提交绿，微信色板 */
.meta { display: flex; flex-wrap: wrap; gap: calc(var(--rpx) * 8) calc(var(--rpx) * 24); margin-top: calc(var(--rpx) * 16); }
[data-route="pkgOps/pages/hwhome/hwhome"] .meta-dl { font-size: calc(var(--rpx) * 24); color: #fa5151; }
[data-route="pkgOps/pages/hwhome/hwhome"] .meta-sub { font-size: calc(var(--rpx) * 24); color: #07c160; }
[data-route="pkgOps/pages/hwhome/hwhome"] .meta-none { font-size: calc(var(--rpx) * 24); color: #b2b2b2; }
[data-route="pkgOps/pages/hwhome/hwhome"] .body { border-top: calc(var(--rpx) * 1) solid #f0f0f0; margin-top: calc(var(--rpx) * 20); padding-top: calc(var(--rpx) * 20); }
[data-route="pkgOps/pages/hwhome/hwhome"] .dl { font-size: calc(var(--rpx) * 24); color: #fa5151; margin-bottom: calc(var(--rpx) * 12); }
[data-route="pkgOps/pages/hwhome/hwhome"] .note { font-size: calc(var(--rpx) * 28); color: rgba(0, 0, 0, 0.9); margin-bottom: calc(var(--rpx) * 16); line-height: 1.6; word-break: break-all; }
[data-route="pkgOps/pages/hwhome/hwhome"] .sec { margin: calc(var(--rpx) * 16) 0; }
[data-route="pkgOps/pages/hwhome/hwhome"] .lb { display: block; font-size: calc(var(--rpx) * 24); color: #b2b2b2; margin-bottom: calc(var(--rpx) * 12); }
[data-route="pkgOps/pages/hwhome/hwhome"] .chars { display: flex; flex-wrap: wrap; gap: calc(var(--rpx) * 12); }
[data-route="pkgOps/pages/hwhome/hwhome"] .ch { width: calc(var(--rpx) * 64); height: calc(var(--rpx) * 64); line-height: calc(var(--rpx) * 64); text-align: center; font-size: calc(var(--rpx) * 28);
  border: calc(var(--rpx) * 1) solid #e5e5e5; border-radius: calc(var(--rpx) * 8); color: rgba(0, 0, 0, 0.9); background: #ffffff; }
[data-route="pkgOps/pages/hwhome/hwhome"] .btns { display: flex; gap: calc(var(--rpx) * 16); margin: calc(var(--rpx) * 24) 0 0; }
[data-route="pkgOps/pages/hwhome/hwhome"] .btn { font-size: calc(var(--rpx) * 28); border-radius: calc(var(--rpx) * 10); line-height: 1.4; }
[data-route="pkgOps/pages/hwhome/hwhome"] .btn::after { border: none; }
[data-route="pkgOps/pages/hwhome/hwhome"] .btn.main { background: #07c160; color: #ffffff; font-weight: 500; padding: calc(var(--rpx) * 22) 0; margin-top: calc(var(--rpx) * 16); }
[data-route="pkgOps/pages/hwhome/hwhome"] .btn.ghost { background: #ffffff; color: #07c160; border: calc(var(--rpx) * 1) solid #07c160; padding: calc(var(--rpx) * 20) 0; }
[data-route="pkgOps/pages/hwhome/hwhome"] .btn.half { flex: 1; }
[data-route="pkgOps/pages/hwhome/hwhome"] /* v7.0.188：提交键下的免费说明（不收费、不耗学员额度，额度扣在老师教研组侧） */
.free-hint { margin-top: calc(var(--rpx) * 12); font-size: calc(var(--rpx) * 20); color: #b2b2b2; text-align: center; }
[data-route="pkgOps/pages/hwhome/hwhome"] /* v7.0.199（木哥令「提交结束后，把原来按键的提交作业，改为：作业已经提交，
   等待老师点评中」）：提交后的确定态 —— 与主键同高同位，淡绿底不可点 */
.wait-tip { margin-top: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 22) 0; border-radius: calc(var(--rpx) * 10); background: #f0faf3; border: calc(var(--rpx) * 1) solid #bfe8cf; color: #07a35a; font-size: calc(var(--rpx) * 28); text-align: center; }
[data-route="pkgOps/pages/hwhome/hwhome"] .fb { background: #f7f7f7; border-radius: calc(var(--rpx) * 12); padding: calc(var(--rpx) * 20); margin-top: calc(var(--rpx) * 16); }
[data-route="pkgOps/pages/hwhome/hwhome"] /* v7.0.202：额度墙排队提示（橙底 = 提醒不是错，也不是「待批改」）——
   一眼看出两件事：存好了、明天早上 8 点自动交 */
.quota-tip { margin-top: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22); border-radius: calc(var(--rpx) * 10); background: #fff8ec; border: calc(var(--rpx) * 1) solid #f6d9a8; }
[data-route="pkgOps/pages/hwhome/hwhome"] .quota-tip .qt-t { font-size: calc(var(--rpx) * 28); font-weight: 600; color: #b26a00; line-height: 1.5; }
[data-route="pkgOps/pages/hwhome/hwhome"] .quota-tip .qt-s { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 24); color: #9a6a1e; line-height: 1.6; }
[data-route="pkgOps/pages/hwhome/hwhome"] .quota-btn { margin-top: calc(var(--rpx) * 16); }
[data-route="pkgOps/pages/hwhome/hwhome"] .cm { font-size: calc(var(--rpx) * 28); color: rgba(0, 0, 0, 0.9); white-space: pre-wrap; word-break: break-all; line-height: 1.6; }
[data-route="pkgOps/pages/hwhome/hwhome"] /* v7.0.188：点评弹窗（老数据没卡号时就地看全文） */
.pop-body { max-height: 46vh; margin-bottom: calc(var(--rpx) * 4); }
[data-route="pkgOps/pages/hwhome/hwhome"] /* ---- 训练纸弹窗（微信风：白卡 + 绿主键 + 灰描副键） ---- */
.mask { position: fixed; left: 0; right: 0; top: 0; bottom: 0; background: rgba(0, 0, 0, 0.55);
  z-index: 900; display: flex; align-items: center; justify-content: center; }
[data-route="pkgOps/pages/hwhome/hwhome"] .sheet-pop { width: calc(var(--rpx) * 640); max-height: 84vh; background: #ffffff; border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 32); box-sizing: border-box; display: flex; flex-direction: column; }
[data-route="pkgOps/pages/hwhome/hwhome"] .pop-t { font-size: calc(var(--rpx) * 32); font-weight: 500; color: rgba(0, 0, 0, 0.9); margin-bottom: calc(var(--rpx) * 16); }
[data-route="pkgOps/pages/hwhome/hwhome"] .pop-status { font-size: calc(var(--rpx) * 28); color: #888888; padding: calc(var(--rpx) * 40) 0; text-align: center; }
[data-route="pkgOps/pages/hwhome/hwhome"] .pop-img { width: 100%; border: calc(var(--rpx) * 1) solid #e5e5e5; border-radius: calc(var(--rpx) * 8); }
[data-route="pkgOps/pages/hwhome/hwhome"] .pop-acts { margin-top: calc(var(--rpx) * 20); }
[data-route="pkgOps/pages/hwhome/hwhome"] .pop-main { background: #07c160; color: #ffffff; border-radius: calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 28);
  font-weight: 500; padding: calc(var(--rpx) * 22) 0; text-align: center; border: none; line-height: 1.4; }
[data-route="pkgOps/pages/hwhome/hwhome"] .pop-main::after { border: none; }
[data-route="pkgOps/pages/hwhome/hwhome"] .pop-ghost { margin-top: calc(var(--rpx) * 16); background: #ffffff; color: rgba(0, 0, 0, 0.9); border: calc(var(--rpx) * 1) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 28); padding: calc(var(--rpx) * 22) 0; text-align: center; line-height: 1.4; }
[data-route="pkgOps/pages/hwhome/hwhome"] .pop-ghost::after { border: none; }
[data-route="pkgOps/pages/hwhome/hwhome"] .hw-canvas { position: fixed; left: -9999px; top: 0; width: 794px; height: 1123px; }
[data-route="pkgOps/pages/hwhome/hwhome"] /* ---- v7.0.189：逐字叠加图条（与 day/detail 同一套视觉，尺寸按卡内收一档） ---- */
.gal-head { display: flex; justify-content: space-between; align-items: baseline; margin-top: calc(var(--rpx) * 16); }
[data-route="pkgOps/pages/hwhome/hwhome"] .gal-title { font-size: calc(var(--rpx) * 24); font-weight: 500; color: rgba(0, 0, 0, 0.9); }
[data-route="pkgOps/pages/hwhome/hwhome"] .gal-count { font-size: calc(var(--rpx) * 20); color: #b2b2b2; }
[data-route="pkgOps/pages/hwhome/hwhome"] .gal-strip { white-space: nowrap; margin-top: calc(var(--rpx) * 12); width: 100%; }
[data-route="pkgOps/pages/hwhome/hwhome"] .gal-item { position: relative; display: inline-block; width: calc(var(--rpx) * 152); margin-right: calc(var(--rpx) * 16);
  vertical-align: top; }
[data-route="pkgOps/pages/hwhome/hwhome"] .gal-item-focus { box-shadow: 0 0 0 calc(var(--rpx) * 3) #fa5151; border-radius: calc(var(--rpx) * 10); }
[data-route="pkgOps/pages/hwhome/hwhome"] .gal-thumb { width: calc(var(--rpx) * 152); height: calc(var(--rpx) * 152); border-radius: calc(var(--rpx) * 10); background: #f7f7f7; }
[data-route="pkgOps/pages/hwhome/hwhome"] .gal-badge { position: absolute; left: calc(var(--rpx) * 8); top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 20); line-height: 1.3;
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10); border-radius: calc(var(--rpx) * 8); background: rgba(0, 0, 0, 0.55); color: #ffffff; }
[data-route="pkgOps/pages/hwhome/hwhome"] .gal-badge-focus { background: #fa5151; }
[data-route="pkgOps/pages/hwhome/hwhome"] .gal-cap { font-size: calc(var(--rpx) * 20); color: #888888; margin-top: calc(var(--rpx) * 6); white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; }



/* ---- pkgOps/pages/exampaper/exampaper.wxss ---- */
[data-route="pkgOps/pages/exampaper/exampaper"] /**
 * 个性化练字测评 · 出卷页（v7.0.102 木哥令「UI 和主站统一，
 * 用微信生态的 UI 设计理念和参数」）
 * ---------------------------------------------------------------------
 * 规矩（与 app.wxss 同一套，本页不另立门户）：
 *   · 底色 #ededed（page 级）、内容装在白色分组块 .card 里，块间 calc(var(--rpx) * 16) 灰缝；
 *   · 分割线 calc(var(--rpx) * 1) #e5e5e5，行高 calc(var(--rpx) * 28) 上下内边距（微信 cell 的呼吸）；
 *   · 字号只走 5 档 20 / 24 / 28 / 32 / 40（lint-style 锁）；
 *   · 颜色只用色板：#191919 一级字 / #888888 二级字 / #b2b2b2 三级字、
 *     #07c160 主绿、#f2f2f2 按压灰、#f7f7f7 填充灰、#fa5151 错误红；
 *   · 按钮不自造：主动作 .btn-primary、次动作 .btn-ghost（app.wxss 定义）。
 * 卷面模板（木哥 2026-10-31 定稿）不在本文件、也不在本页任何地方生成。
 */

.page-wrap {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* 列表型分组块：上下内边距交给每一行，左右保持 calc(var(--rpx) * 32)（与 .card 对齐文字） */
.z-card {
  padding: 0 calc(var(--rpx) * 32);
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* 行首标题（黑、正常字重 —— 微信设置项的样子） */
.z-k {
  flex-shrink: 0;
  font-size: calc(var(--rpx) * 32);
  color: #191919;
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* 发丝线：.cell 的 :last-child 在「select 行」上会失效（父节点是 picker，每行都是
   自己 picker 里的最后一个），这里补回来，块内一行一条线、最后一行不留线。 */
.z-card .cell {
  border-bottom: calc(var(--rpx) * 1) solid #e5e5e5;
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-card > picker:last-child .cell, [data-route="pkgOps/pages/exampaper/exampaper"] .z-card > .cell:last-child {
  border-bottom: none;
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* 行尾的值：灰字、右对齐、长了省略，不换行把行撑高 */
.z-v {
  font-size: calc(var(--rpx) * 32);
  color: #888888;
  max-width: calc(var(--rpx) * 440);
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* 还没选的时候更浅一档 */
.z-ph {
  color: #b2b2b2;
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* 按压反馈：整行浅灰（微信的列表按压就是这个灰） */
.z-hit {
  background: #f2f2f2;
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* ---- 说明块：一句话一条，绿点起头 ---- */
.z-note-t {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-li {
  display: flex;
  align-items: flex-start;
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-li + .z-li {
  margin-top: calc(var(--rpx) * 6);
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-dot {
  width: calc(var(--rpx) * 8);
  height: calc(var(--rpx) * 8);
  border-radius: 50%;
  background: #07c160;
  margin: calc(var(--rpx) * 16) calc(var(--rpx) * 14) 0 calc(var(--rpx) * 2);
  flex-shrink: 0;
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-li-t {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.7;
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* ---- 出卷按钮与结果提示 ---- */
.z-act {
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-status {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 8) 0;
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #888888;
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-status.ok {
  color: #07c160;
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-status.err {
  color: #fa5151;
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* ---- 结果块 ---- */
.z-res-h {
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* 「本段生字表」用中性灰标，不抢「按作业数据」那个绿标 */
.z-tag-gray {
  background: #f2f2f2;
  color: #888888;
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-paper {
  width: 100%;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 8);
  background: #f7f7f7;
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-chars {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-ch {
  display: flex;
  align-items: baseline;
  padding: calc(var(--rpx) * 18) 0;
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-ch + .z-ch {
  border-top: calc(var(--rpx) * 1) solid #e5e5e5;
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-ch-k {
  flex-shrink: 0;
  width: calc(var(--rpx) * 176);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-ch-v {
  flex: 1;
  font-size: calc(var(--rpx) * 32);
  color: #191919;
  letter-spacing: calc(var(--rpx) * 4);
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-acts {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* 两颗按钮同一尺寸，只换配色；上下 calc(var(--rpx) * 16) 缝，与 .card 的块间缝一致 */
.z-acts .btn-ghost {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgOps/pages/exampaper/exampaper"] .z-foot {
  margin-top: calc(var(--rpx) * 16);
  line-height: 1.6;
}
[data-route="pkgOps/pages/exampaper/exampaper"] /* 画布只用来出图，不显示在屏上；不能 display:none（那样节点拿不到尺寸） */
.exam-canvas {
  position: fixed;
  left: -9999px;
  top: 0;
  width: 794px;
  height: 1123px;
}



/* ---- pkgGrow/pages/hub/hub.wxss ---- */
[data-route="pkgGrow/pages/hub/hub"] /* 增长层总入口（B-9 / G-9）
 * v7.0.146（木哥令「微信内生态的风格，一项一个卡，竖排列，简约轻量级」）：
 * 底换主站灰 #ededed，项与项各自一张白卡（细边 #ececec、calc(var(--rpx) * 16) 圆角、右箭头），
 * 绿只留 #07c160 一处点缀 —— 与微信自己的列表页同一套语言。
 * 字号只用五档：20 / 24 / 28 / 32 / 40 rpx。 */

.hub {
  min-height: calc(var(--vh) * 100);
  background: #ededed;
  padding: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgGrow/pages/hub/hub"] /* ---------- 顶部（轻头，不装卡） ---------- */
.head {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/hub/hub"] .head-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #191919;
}
[data-route="pkgGrow/pages/hub/hub"] .head-x {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pkgGrow/pages/hub/hub"] .head-me {
  margin-top: calc(var(--rpx) * 12);
  display: flex;
  align-items: center;
}
[data-route="pkgGrow/pages/hub/hub"] .head-lv {
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
  color: #07c160;
}
[data-route="pkgGrow/pages/hub/hub"] .head-st {
  margin-left: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgGrow/pages/hub/hub"] /* ---------- 一项一卡，竖排 ---------- */
.list {
  margin: 0 calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/hub/hub"] .row {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 28);
  margin-bottom: calc(var(--rpx) * 20);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pkgGrow/pages/hub/hub"] .row-hover {
  background: #f7f7f7;
}
[data-route="pkgGrow/pages/hub/hub"] .row-ico {
  width: calc(var(--rpx) * 72);
  height: calc(var(--rpx) * 72);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 40);
  line-height: 1.2;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 16);
  flex: none;
}
[data-route="pkgGrow/pages/hub/hub"] .row-main {
  margin-left: calc(var(--rpx) * 24);
  flex: 1;
  min-width: 0;
}
[data-route="pkgGrow/pages/hub/hub"] .row-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #191919;
}
[data-route="pkgGrow/pages/hub/hub"] .row-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.4;
}
[data-route="pkgGrow/pages/hub/hub"] .row-arrow {
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 32);
  color: #c8c8cd;
  flex: none;
}
[data-route="pkgGrow/pages/hub/hub"] /* ---------- tab 切换（?to= 落地时才出现） ---------- */
.tabs {
  margin: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 20);
  display: flex;
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 16);
  overflow: hidden;
}
[data-route="pkgGrow/pages/hub/hub"] .tab {
  flex: 1;
  padding: calc(var(--rpx) * 22) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pkgGrow/pages/hub/hub"] .tab-on {
  background: #07c160;
  color: #ffffff;
  font-weight: 700;
}
[data-route="pkgGrow/pages/hub/hub"] /* ---------- 内嵌卡（作品墙 / PK / 墨榜） ---------- */
.card {
  margin: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pkgGrow/pages/hub/hub"] .card-title {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/hub/hub"] .card-sub {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
  color: #888888;
}
[data-route="pkgGrow/pages/hub/hub"] .empty {
  padding: calc(var(--rpx) * 24) 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.7;
}
[data-route="pkgGrow/pages/hub/hub"] .em {
  color: #07c160;
  font-weight: 700;
}
[data-route="pkgGrow/pages/hub/hub"] /* ---------- 作品墙 ---------- */
.art {
  display: flex;
  padding: calc(var(--rpx) * 20) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgGrow/pages/hub/hub"] .art-img {
  width: calc(var(--rpx) * 160);
  height: calc(var(--rpx) * 160);
  border-radius: calc(var(--rpx) * 16);
  background: #f7f7f7;
  flex: none;
}
[data-route="pkgGrow/pages/hub/hub"] .art-noimg {
  width: calc(var(--rpx) * 160);
  height: calc(var(--rpx) * 160);
  border-radius: calc(var(--rpx) * 16);
  background: #f7f7f7;
  color: #b2b2b2;
  font-size: calc(var(--rpx) * 24);
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none;
}
[data-route="pkgGrow/pages/hub/hub"] .art-body {
  margin-left: calc(var(--rpx) * 20);
  flex: 1;
  min-width: 0;
}
[data-route="pkgGrow/pages/hub/hub"] .art-day {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #191919;
}
[data-route="pkgGrow/pages/hub/hub"] /* 点评等级：小签，跟日期同一行靠右 */
.art-level {
  margin-left: calc(var(--rpx) * 12);
  padding: 0 calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
  color: #07c160;
  background: #e8f7ee;
  border: calc(var(--rpx) * 1) solid #a6e0be;
  border-radius: calc(var(--rpx) * 6);
}
[data-route="pkgGrow/pages/hub/hub"] .art-txt {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pkgGrow/pages/hub/hub"] .art-foot {
  margin-top: calc(var(--rpx) * 12);
  display: flex;
  align-items: center;
}
[data-route="pkgGrow/pages/hub/hub"] .art-star {
  font-size: calc(var(--rpx) * 24);
  color: #fa9d3b;
}
[data-route="pkgGrow/pages/hub/hub"] .art-like {
  margin-left: auto;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgGrow/pages/hub/hub"] .art-liked {
  background: #e8f7ee;
  color: #07c160;
  border-color: #a6e0be;
}
[data-route="pkgGrow/pages/hub/hub"] /* ---------- PK ---------- */
.vs {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;
}
[data-route="pkgGrow/pages/hub/hub"] .vs-side {
  flex: 1;
  text-align: center;
}
[data-route="pkgGrow/pages/hub/hub"] .vs-name {
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgGrow/pages/hub/hub"] .vs-score {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #07c160;
}
[data-route="pkgGrow/pages/hub/hub"] .vs-mid {
  width: calc(var(--rpx) * 100);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #b2b2b2;
}
[data-route="pkgGrow/pages/hub/hub"] .vs-tip {
  padding: calc(var(--rpx) * 16) 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
}
[data-route="pkgGrow/pages/hub/hub"] .rule {
  margin-top: calc(var(--rpx) * 16);
  padding-top: calc(var(--rpx) * 20);
  border-top: calc(var(--rpx) * 1) solid #e5e5e5;
}
[data-route="pkgGrow/pages/hub/hub"] .rule-li {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.8;
}
[data-route="pkgGrow/pages/hub/hub"] /* ---------- 墨榜 ---------- */
.kinds {
  display: flex;
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgGrow/pages/hub/hub"] .kind {
  flex: 1;
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 8);
  margin-right: calc(var(--rpx) * 16);
  background: #f7f7f7;
  border: calc(var(--rpx) * 1) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 16);
  text-align: center;
}
[data-route="pkgGrow/pages/hub/hub"] .kind:last-child {
  margin-right: 0;
}
[data-route="pkgGrow/pages/hub/hub"] .kind-on {
  background: #e8f7ee;
  border-color: #07c160;
}
[data-route="pkgGrow/pages/hub/hub"] .kind-n {
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
  color: #191919;
}
[data-route="pkgGrow/pages/hub/hub"] .kind-u {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pkgGrow/pages/hub/hub"] .kind-desc {
  padding: 0 0 calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.6;
}
[data-route="pkgGrow/pages/hub/hub"] .rank {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgGrow/pages/hub/hub"] .rank-me {
  background: #e8f7ee;
  border-radius: calc(var(--rpx) * 12);
  padding-left: calc(var(--rpx) * 12);
  padding-right: calc(var(--rpx) * 12);
}
[data-route="pkgGrow/pages/hub/hub"] .rank-no {
  width: calc(var(--rpx) * 60);
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #888888;
}
[data-route="pkgGrow/pages/hub/hub"] .rank-n {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgGrow/pages/hub/hub"] .rank-v {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #07c160;
}
[data-route="pkgGrow/pages/hub/hub"] /* ---------- 脚注 ---------- */
.foot {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 32) 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.7;
  text-align: center;
}



/* ---- pkgGrow/pages/sign/sign.wxss ---- */
[data-route="pkgGrow/pages/sign/sign"] /* 每日签到（B-9 / G-9）
 * 七格横排，当前那格高亮；字号只用五档。 */

.sign {
  min-height: calc(var(--vh) * 100);
  background: #ededed;
  padding: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgGrow/pages/sign/sign"] .hero {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/sign/sign"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #07c160;
}
[data-route="pkgGrow/pages/sign/sign"] .hero-x {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.8;
}
[data-route="pkgGrow/pages/sign/sign"] .em {
  color: #07c160;
  font-weight: 700;
}
[data-route="pkgGrow/pages/sign/sign"] .card {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/sign/sign"] .card-title {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/sign/sign"] .card-sub {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
  color: #888888;
}
[data-route="pkgGrow/pages/sign/sign"] /* ---------- 七日格子 ---------- */
.days {
  display: flex;
  flex-wrap: wrap;
}
[data-route="pkgGrow/pages/sign/sign"] .day {
  width: 25%;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 4);
  box-sizing: border-box;
  text-align: center;
}
[data-route="pkgGrow/pages/sign/sign"] .day-ico {
  width: calc(var(--rpx) * 76);
  height: calc(var(--rpx) * 76);
  margin: 0 auto;
  border-radius: 50%;
  background: #f7f7f7;
  border: calc(var(--rpx) * 2) solid #e5e5e5;
  font-size: calc(var(--rpx) * 32);
  line-height: calc(var(--rpx) * 72);
}
[data-route="pkgGrow/pages/sign/sign"] .day-done .day-ico {
  background: #07c160;
  border-color: #07c160;
}
[data-route="pkgGrow/pages/sign/sign"] .day-now .day-ico {
  background: #e8f7ee;
  border-color: #07c160;
}
[data-route="pkgGrow/pages/sign/sign"] .day-no {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pkgGrow/pages/sign/sign"] .day-r {
  font-size: calc(var(--rpx) * 20);
  color: #888888;
  line-height: 1.4;
}
[data-route="pkgGrow/pages/sign/sign"] /* ---------- 连续数 + 按钮 ---------- */
.streak {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #07c160;
}
[data-route="pkgGrow/pages/sign/sign"] .btn {
  margin-top: calc(var(--rpx) * 28);
  padding: calc(var(--rpx) * 24) 0;
  background: #07c160;
  border-radius: calc(var(--rpx) * 10);
  color: #ffffff;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  text-align: center;
}
[data-route="pkgGrow/pages/sign/sign"] .btn-off {
  background: #a6e0be;
}
[data-route="pkgGrow/pages/sign/sign"] .toast {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
  line-height: 1.6;
}
[data-route="pkgGrow/pages/sign/sign"] /* ---------- 说明条 ---------- */
.li {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.9;
}
[data-route="pkgGrow/pages/sign/sign"] .foot {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 32) 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
  line-height: 1.7;
}



/* ---- pkgGrow/pages/task/task.wxss ---- */
[data-route="pkgGrow/pages/task/task"] /* 今日任务（B-9 / G-9） */

.task {
  min-height: calc(var(--vh) * 100);
  background: #ededed;
  padding: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgGrow/pages/task/task"] .hero {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/task/task"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #07c160;
}
[data-route="pkgGrow/pages/task/task"] .hero-x {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.8;
}
[data-route="pkgGrow/pages/task/task"] .em {
  color: #07c160;
  font-weight: 700;
}
[data-route="pkgGrow/pages/task/task"] .card {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/task/task"] .card-title {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/task/task"] .card-sub {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
  color: #888888;
}
[data-route="pkgGrow/pages/task/task"] /* ---------- 任务行 ---------- */
.ti {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 22) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgGrow/pages/task/task"] .ti-ico {
  width: calc(var(--rpx) * 72);
  font-size: calc(var(--rpx) * 40);
  flex: none;
}
[data-route="pkgGrow/pages/task/task"] .ti-body {
  flex: 1;
  min-width: 0;
}
[data-route="pkgGrow/pages/task/task"] .ti-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #191919;
}
[data-route="pkgGrow/pages/task/task"] .ti-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgGrow/pages/task/task"] .bar {
  margin-top: calc(var(--rpx) * 12);
  height: calc(var(--rpx) * 12);
  background: #f2f2f2;
  border-radius: calc(var(--rpx) * 6);
  overflow: hidden;
}
[data-route="pkgGrow/pages/task/task"] .bar-in {
  height: calc(var(--rpx) * 12);
  background: #07c160;
  border-radius: calc(var(--rpx) * 6);
}
[data-route="pkgGrow/pages/task/task"] .ti-p {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pkgGrow/pages/task/task"] .ti-btn {
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  background: #07c160;
  border-radius: calc(var(--rpx) * 10);
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
  flex: none;
}
[data-route="pkgGrow/pages/task/task"] .ti-btn-off {
  background: #a6e0be;
}
[data-route="pkgGrow/pages/task/task"] /* 「去分享」是 <button open-type="share">，把微信默认的边框/行高/底色压回和别的按钮一致 */
.ti-btn-share {
  line-height: 1.6;
  border: none;
}
[data-route="pkgGrow/pages/task/task"] .ti-btn-share::after {
  border: none;
}
[data-route="pkgGrow/pages/task/task"] .ti-ok {
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 24);
  background: #e8f7ee;
  border-radius: calc(var(--rpx) * 32);
  color: #07c160;
  font-size: calc(var(--rpx) * 24);
  flex: none;
}
[data-route="pkgGrow/pages/task/task"] /* ---------- 说明 ---------- */
.li {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.9;
}
[data-route="pkgGrow/pages/task/task"] .toast {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
  line-height: 1.6;
}
[data-route="pkgGrow/pages/task/task"] .foot {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 32) 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
  line-height: 1.7;
}



/* ---- pkgGrow/pages/bank/bank.wxss ---- */
[data-route="pkgGrow/pages/bank/bank"] /* 练字银行（B-9 / G-9）
 * 这一页是「存折」的观感：数字大、留白多、不加任何金额符号。 */

.bank {
  min-height: calc(var(--vh) * 100);
  background: #ededed;
  padding: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgGrow/pages/bank/bank"] .hero {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/bank/bank"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #07c160;
}
[data-route="pkgGrow/pages/bank/bank"] .hero-x {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.8;
}
[data-route="pkgGrow/pages/bank/bank"] .em {
  color: #07c160;
  font-weight: 700;
}
[data-route="pkgGrow/pages/bank/bank"] .card {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/bank/bank"] .card-title {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/bank/bank"] /* ---------- 四个大数 ---------- */
.nums {
  display: flex;
  flex-wrap: wrap;
}
[data-route="pkgGrow/pages/bank/bank"] .num {
  width: 50%;
  padding: calc(var(--rpx) * 20) 0;
  text-align: center;
  box-sizing: border-box;
}
[data-route="pkgGrow/pages/bank/bank"] .num-v {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #07c160;
}
[data-route="pkgGrow/pages/bank/bank"] .num-k {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgGrow/pages/bank/bank"] .hint {
  margin-top: calc(var(--rpx) * 16);
  padding-top: calc(var(--rpx) * 20);
  border-top: calc(var(--rpx) * 2) solid #e5e5e5;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.7;
}
[data-route="pkgGrow/pages/bank/bank"] /* ---------- 月度 ---------- */
.mr {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgGrow/pages/bank/bank"] .mr-l {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #191919;
}
[data-route="pkgGrow/pages/bank/bank"] .mr-d {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgGrow/pages/bank/bank"] .mr-p {
  margin-left: calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgGrow/pages/bank/bank"] /* ---------- 说明 ---------- */
.li {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.9;
}
[data-route="pkgGrow/pages/bank/bank"] .foot {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 32) 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
  line-height: 1.7;
}



/* ---- pkgGrow/pages/term/term.wxss ---- */
[data-route="pkgGrow/pages/term/term"] /* 节气（B-9 / G-9）—— 一页就是「今天是个什么日子」 */

.term {
  min-height: calc(var(--vh) * 100);
  background: #ededed;
  padding: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgGrow/pages/term/term"] .hero {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 48) calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 24);
  text-align: center;
}
[data-route="pkgGrow/pages/term/term"] .hero-date {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgGrow/pages/term/term"] .hero-day {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #07c160;
}
[data-route="pkgGrow/pages/term/term"] .hero-lunar {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgGrow/pages/term/term"] .hero-word {
  margin-top: calc(var(--rpx) * 28);
  padding-top: calc(var(--rpx) * 24);
  border-top: calc(var(--rpx) * 2) solid #e5e5e5;
  font-size: calc(var(--rpx) * 28);
  color: #888888;
  line-height: 1.8;
}
[data-route="pkgGrow/pages/term/term"] .card {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/term/term"] .card-title {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/term/term"] .card-sub {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
  color: #888888;
}
[data-route="pkgGrow/pages/term/term"] /* ---------- 活动 ---------- */
.ev {
  padding: calc(var(--rpx) * 20) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgGrow/pages/term/term"] .ev-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #191919;
}
[data-route="pkgGrow/pages/term/term"] .ev-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pkgGrow/pages/term/term"] .ev-x {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.7;
}
[data-route="pkgGrow/pages/term/term"] /* ---------- 说明 ---------- */
.li {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.9;
}
[data-route="pkgGrow/pages/term/term"] .em {
  color: #07c160;
  font-weight: 700;
}
[data-route="pkgGrow/pages/term/term"] .foot {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 32) 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
  line-height: 1.7;
}



/* ---- pkgGrow/pages/exam/exam.wxss ---- */
[data-route="pkgGrow/pages/exam/exam"] /* 考试事件（B-9 / G-9）
 * 这一页语气要克制：不提分、不制造紧迫感，所以不用任何强调色。 */

.exam {
  min-height: calc(var(--vh) * 100);
  background: #ededed;
  padding: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgGrow/pages/exam/exam"] .hero {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/exam/exam"] .hero-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
  color: #07c160;
}
[data-route="pkgGrow/pages/exam/exam"] .hero-x {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.8;
}
[data-route="pkgGrow/pages/exam/exam"] .em {
  color: #07c160;
  font-weight: 700;
}
[data-route="pkgGrow/pages/exam/exam"] .card {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 1) solid #ececec;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/exam/exam"] .card-title {
  display: flex;
  align-items: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/exam/exam"] .card-sub {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  font-weight: 400;
  color: #888888;
}
[data-route="pkgGrow/pages/exam/exam"] /* ---------- 建议 ---------- */
.adv {
  display: flex;
  padding: calc(var(--rpx) * 20) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgGrow/pages/exam/exam"] .adv-ico {
  width: calc(var(--rpx) * 60);
  font-size: calc(var(--rpx) * 28);
  flex: none;
}
[data-route="pkgGrow/pages/exam/exam"] .adv-body {
  flex: 1;
  min-width: 0;
}
[data-route="pkgGrow/pages/exam/exam"] .adv-t {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #191919;
}
[data-route="pkgGrow/pages/exam/exam"] .adv-x {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.7;
}
[data-route="pkgGrow/pages/exam/exam"] /* ---------- 节点 ---------- */
.ev {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) 0;

  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgGrow/pages/exam/exam"] .ev-body {
  flex: 1;
  min-width: 0;
}
[data-route="pkgGrow/pages/exam/exam"] .ev-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #191919;
}
[data-route="pkgGrow/pages/exam/exam"] .ev-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pkgGrow/pages/exam/exam"] .ev-x {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.7;
}
[data-route="pkgGrow/pages/exam/exam"] .ev-s {
  font-size: calc(var(--rpx) * 24);
  color: #b2b2b2;
  flex: none;
}
[data-route="pkgGrow/pages/exam/exam"] .empty {
  padding: calc(var(--rpx) * 20) 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.8;
}
[data-route="pkgGrow/pages/exam/exam"] /* ---------- 红线 ---------- */
.no {
  padding: calc(var(--rpx) * 12) 0;
  font-size: calc(var(--rpx) * 28);
  color: #fa5151;
}
[data-route="pkgGrow/pages/exam/exam"] .why {
  margin-top: calc(var(--rpx) * 20);
  padding-top: calc(var(--rpx) * 20);
  border-top: calc(var(--rpx) * 2) solid #e5e5e5;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.8;
}
[data-route="pkgGrow/pages/exam/exam"] .foot {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 32) 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  text-align: center;
  line-height: 1.7;
}



/* ---- pkgGrow/pages/letter/letter.wxss ---- */
[data-route="pkgGrow/pages/letter/letter"] /* 一周一封信 · 信页（v4.86.441 B1）—— 与记录页同底色同卡片，读起来像一封纸信 */
.wrap {
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  background: #f7f7f7;
  min-height: calc(var(--vh) * 100);
  box-sizing: border-box;
}
[data-route="pkgGrow/pages/letter/letter"] .tip {
  padding: calc(var(--rpx) * 120) calc(var(--rpx) * 24);
  text-align: center;
}
[data-route="pkgGrow/pages/letter/letter"] .tip-text {
  font-size: calc(var(--rpx) * 28);
  color: #888;
  line-height: 1.7;
}
[data-route="pkgGrow/pages/letter/letter"] .head {
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 8) calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/letter/letter"] .head-week {
  display: block;
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #191919;
}
[data-route="pkgGrow/pages/letter/letter"] .head-sub {
  display: block;
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #888;
}
[data-route="pkgGrow/pages/letter/letter"] .card {
  background: #fff;
  border-radius: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 28) calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgGrow/pages/letter/letter"] .card-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #191919;
  margin-bottom: calc(var(--rpx) * 14);
}
[data-route="pkgGrow/pages/letter/letter"] .lead {
  font-size: calc(var(--rpx) * 32);
  line-height: 1.75;
  color: #191919;
}
[data-route="pkgGrow/pages/letter/letter"] .row {
  font-size: calc(var(--rpx) * 28);
  line-height: 1.8;
  color: #333;
}
[data-route="pkgGrow/pages/letter/letter"] .row.muted {
  color: #888;
}
[data-route="pkgGrow/pages/letter/letter"] .foot {
  margin-top: calc(var(--rpx) * 12);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #aaa;
}



/* ---- pkgGrow/pages/score/score.wxss ---- */
[data-route="pkgGrow/pages/score/score"] /* 我的积分（v4.86.266）
 * 沿用 pkgGrow 这套浅绿皮肤（与「练字银行」「练字之外」同族）；
 * 卡内分行仍是全站唯一模式：灰底圆角单元格 · 无细线分行（docs/UI工作规范-卡片内分行.md）。 */

.sc {
  min-height: calc(var(--vh) * 100);
  background: #e9f8ef;
  padding: calc(var(--rpx) * 24) 0 calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgGrow/pages/score/score"] /* ---------------- 余额与属性 ---------------- */

.hero {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 32);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/score/score"] .hero-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgGrow/pages/score/score"] .hero-num {
  display: flex;
  align-items: baseline;
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pkgGrow/pages/score/score"] .hero-v {
  font-size: calc(var(--rpx) * 88);
  font-weight: 700;
  line-height: 1.1;
  color: #0a7a3d;
}
[data-route="pkgGrow/pages/score/score"] .hero-u {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  color: #4c8f68;
}
[data-route="pkgGrow/pages/score/score"] .hero-x {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  line-height: 1.8;
}
[data-route="pkgGrow/pages/score/score"] .hero-rule {
  margin-top: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 10);
  background: #fbf3dd;
  font-size: calc(var(--rpx) * 24);
  color: #a8791b;
  line-height: 1.6;
}
[data-route="pkgGrow/pages/score/score"] /* ---------------- 身份标识（v4.86.270：系统判定，不切换） ---------------- */

.card-x-id {
  flex-shrink: 0;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  background: #e8f7ee;
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
}
[data-route="pkgGrow/pages/score/score"] /* ---------------- 卡片 ---------------- */

.card {
  margin: 0 calc(var(--rpx) * 32) calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 30) calc(var(--rpx) * 28);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #d5f0df;
  border-radius: calc(var(--rpx) * 24);
}
[data-route="pkgGrow/pages/score/score"] .card-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #0a7a3d;
}
[data-route="pkgGrow/pages/score/score"] .card-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgGrow/pages/score/score"] .card-link {
  font-size: calc(var(--rpx) * 24);
  color: #0a7a3d;
}
[data-route="pkgGrow/pages/score/score"] .card-x {
  margin: calc(var(--rpx) * 10) 0 calc(var(--rpx) * 18);
  font-size: calc(var(--rpx) * 24);
  color: #4c8f68;
  line-height: 1.7;
}
[data-route="pkgGrow/pages/score/score"] .em {
  color: #0a7a3d;
  font-weight: 700;
}
[data-route="pkgGrow/pages/score/score"] /* 一行路径：灰底圆角单元格（同全站规范） */
.it {
  display: flex;
  align-items: center;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 20);
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgGrow/pages/score/score"] .it:last-child {
  margin-bottom: 0;
}
[data-route="pkgGrow/pages/score/score"] .it-ico {
  flex-shrink: 0;
  width: calc(var(--rpx) * 40);
  margin-right: calc(var(--rpx) * 20);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  line-height: 1.2;
  color: #0a7a3d;
}
[data-route="pkgGrow/pages/score/score"] .it-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgGrow/pages/score/score"] .it-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 500;
  color: #1a1a1a;
}
[data-route="pkgGrow/pages/score/score"] .it-v {
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 999);
  background: #fbf3dd;
  font-size: calc(var(--rpx) * 20);
  font-weight: 400;
  color: #a8791b;
}
[data-route="pkgGrow/pages/score/score"] .it-d {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.5;
}
[data-route="pkgGrow/pages/score/score"] .it-act {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  border: calc(var(--rpx) * 1) solid rgba(10, 122, 61, 0.4);
  background: rgba(10, 122, 61, 0.06);
  font-size: calc(var(--rpx) * 20);
  color: #0a7a3d;
  white-space: nowrap;
}
[data-route="pkgGrow/pages/score/score"] /* ---------------- 充值两键 ---------------- */

.big-btn {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 24) 0;
  border-radius: calc(var(--rpx) * 10);
  /* v4.86.523：去充值墨宝统一微信小店风格（原规范绿） */
  background: #ff6146;
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
  color: #ffffff;
}
[data-route="pkgGrow/pages/score/score"] .big-btn-2 {
  margin-top: calc(var(--rpx) * 16);
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #07c160;
  color: #07c160;
}
[data-route="pkgGrow/pages/score/score"] /* ---------------- 明细 ---------------- */

.empty {
  margin-top: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 28) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #9aa8a0;
}
[data-route="pkgGrow/pages/score/score"] .row {
  display: flex;
  align-items: center;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pkgGrow/pages/score/score"] .row-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgGrow/pages/score/score"] .row-t {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
}
[data-route="pkgGrow/pages/score/score"] .row-s {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgGrow/pages/score/score"] .row-v {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
}
[data-route="pkgGrow/pages/score/score"] .row-plus {
  color: #0a7a3d;
}
[data-route="pkgGrow/pages/score/score"] .row-minus {
  color: #c25b4a;
}
[data-route="pkgGrow/pages/score/score"] /* ---------------- 页脚 ---------------- */

.foot {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 32) 0;
  font-size: calc(var(--rpx) * 24);
  color: #7b9788;
  line-height: 1.7;
}



/* ---- pkgGrow/pages/unread/unread.wxss ---- */
[data-route="pkgGrow/pages/unread/unread"] /**
 * 未读明细（v4.86.317）
 * 字号只认 20/24/28/32/calc(var(--rpx) * 40)（lint-style 锁）
 */
.page-wrap {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgGrow/pages/unread/unread"] .loading {
  padding: calc(var(--rpx) * 120) 0;
  text-align: center;
  color: #888888;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgGrow/pages/unread/unread"] .un-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 22) 0;
  border-top: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pkgGrow/pages/unread/unread"] .un-main {
  flex: 1;
  min-width: 0;
}
[data-route="pkgGrow/pages/unread/unread"] .un-title {
  font-size: calc(var(--rpx) * 32);
  color: #222222;
  line-height: calc(var(--rpx) * 44);
}
[data-route="pkgGrow/pages/unread/unread"] .un-name {
  font-size: calc(var(--rpx) * 28);
  color: #666666;
}
[data-route="pkgGrow/pages/unread/unread"] .un-sub {
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: calc(var(--rpx) * 36);
}
[data-route="pkgGrow/pages/unread/unread"] .un-go {
  margin-left: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  flex-shrink: 0;
}
[data-route="pkgGrow/pages/unread/unread"] /* v4.86.337（木哥令「要求显示未读的详情」）：点评摘要一行，超出省略 */
.un-excerpt {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: calc(var(--rpx) * 36);
  margin-top: calc(var(--rpx) * 6);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}



/* ---- pkgGrow/pages/report/report.wxss ---- */
[data-route="pkgGrow/pages/report/report"] /* 成长报告（pages/report）：米白底 + 墨字，图用「柱」不用折线 ——
   折线要 canvas，柱用 CSS 就够，且一眼能看出「哪一周断了」。 */
.page-wrap {
  min-height: calc(var(--vh) * 100);
  background: #faf8f3;
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 24) calc(var(--rpx) * 60);
  box-sizing: border-box;
}
[data-route="pkgGrow/pages/report/report"] .rp-head { padding: calc(var(--rpx) * 12) calc(var(--rpx) * 8) calc(var(--rpx) * 20); }
[data-route="pkgGrow/pages/report/report"] .rp-title { font-size: calc(var(--rpx) * 40); font-weight: 700; color: #2b2620; letter-spacing: calc(var(--rpx) * 2); }
[data-route="pkgGrow/pages/report/report"] .rp-date { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 24); color: #9a8f7e; }
[data-route="pkgGrow/pages/report/report"] .rp-sub { margin-top: calc(var(--rpx) * 10); font-size: calc(var(--rpx) * 24); line-height: 1.6; color: #6d655a; }
[data-route="pkgGrow/pages/report/report"] .rp-card {
  background: #fff;
  border-radius: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 26) calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 20);
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 12) rgba(43, 38, 32, .05);
}
[data-route="pkgGrow/pages/report/report"] .rp-card-t { font-size: calc(var(--rpx) * 28); font-weight: 600; color: #2b2620; margin-bottom: calc(var(--rpx) * 14); }
[data-route="pkgGrow/pages/report/report"] .rp-muted { font-size: calc(var(--rpx) * 20); line-height: 1.65; color: #8d8477; }
[data-route="pkgGrow/pages/report/report"] .rp-err { font-size: calc(var(--rpx) * 24); color: #b4483c; }
[data-route="pkgGrow/pages/report/report"] /* 三个数 */
.rp-nums {
  display: flex;
  gap: calc(var(--rpx) * 12);
  margin-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgGrow/pages/report/report"] .rp-num {
  flex: 1;
  background: #fff;
  border-radius: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 22) calc(var(--rpx) * 12);
  text-align: center;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 12) rgba(43, 38, 32, .05);
}
[data-route="pkgGrow/pages/report/report"] .rp-num-v { font-size: calc(var(--rpx) * 40); font-weight: 700; color: #2b2620; line-height: 1.1; }
[data-route="pkgGrow/pages/report/report"] .rp-num-k { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 20); color: #6d655a; }
[data-route="pkgGrow/pages/report/report"] .rp-num-d { margin-top: calc(var(--rpx) * 6); font-size: calc(var(--rpx) * 20); color: #a49a89; }
[data-route="pkgGrow/pages/report/report"] /* 12 周柱：容器固定高，柱子按百分比撑 —— 每周一格，最后一格加深 */
.rp-chart {
  display: flex;
  align-items: flex-end;
  gap: calc(var(--rpx) * 8);
  height: calc(var(--rpx) * 260);
  padding: calc(var(--rpx) * 10) 0 0;
}
[data-route="pkgGrow/pages/report/report"] .rp-bar-wrap {
  flex: 1;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
}
[data-route="pkgGrow/pages/report/report"] .rp-bar-n { font-size: calc(var(--rpx) * 20); color: #a49a89; height: calc(var(--rpx) * 24); line-height: calc(var(--rpx) * 24); }
[data-route="pkgGrow/pages/report/report"] .rp-bar {
  width: 100%;
  max-width: calc(var(--rpx) * 34);
  background: #dccfae;
  border-radius: calc(var(--rpx) * 6) calc(var(--rpx) * 6) 0 0;
  min-height: calc(var(--rpx) * 4);
}
[data-route="pkgGrow/pages/report/report"] .rp-bar-now { background: #c69a4e; }
[data-route="pkgGrow/pages/report/report"] .rp-bar-l { margin-top: calc(var(--rpx) * 8); font-size: calc(var(--rpx) * 20); color: #b3a897; }
[data-route="pkgGrow/pages/report/report"] /* 高频字 */
.rp-chips { display: flex; flex-wrap: wrap; gap: calc(var(--rpx) * 12); margin-bottom: calc(var(--rpx) * 10); }
[data-route="pkgGrow/pages/report/report"] .rp-chip {
  display: flex;
  align-items: baseline;
  gap: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 16);
  background: #fbf4e4;
  border-radius: calc(var(--rpx) * 12);
}
[data-route="pkgGrow/pages/report/report"] .rp-chip-c { font-size: calc(var(--rpx) * 28); color: #6b4f22; }
[data-route="pkgGrow/pages/report/report"] .rp-chip-n { font-size: calc(var(--rpx) * 20); color: #a08a5f; }
[data-route="pkgGrow/pages/report/report"] /* 陪伴一句话 */
.rp-keep {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 6) calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 22);
  border-left: calc(var(--rpx) * 6) solid #d8b26a;
  background: #fbf4e4;
  border-radius: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.7;
  color: #6b4f22;
}
[data-route="pkgGrow/pages/report/report"] .rp-btn {
  width: 100%;
  height: calc(var(--rpx) * 90);
  line-height: calc(var(--rpx) * 90);
  border-radius: calc(var(--rpx) * 10);
  background: #2b2620;
  color: #fdfbf6;
  font-size: calc(var(--rpx) * 28);
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pkgGrow/pages/report/report"] .rp-btn::after { border: none; }
[data-route="pkgGrow/pages/report/report"] /* 存图 / 打印版（B3）：主按钮还是「发给家人」，这两个是次一级的实心浅底 */
.rp-share-img { margin-top: calc(var(--rpx) * 20); }
[data-route="pkgGrow/pages/report/report"] .rp-save {
  display: flex;
  gap: calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgGrow/pages/report/report"] .rp-save-btn {
  flex: 1;
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  border-radius: calc(var(--rpx) * 10);
  background: #f1ece3;
  color: #2b2620;
  font-size: calc(var(--rpx) * 24);
  text-align: center;
}
[data-route="pkgGrow/pages/report/report"] .rp-save-btn::after { border: none; }
[data-route="pkgGrow/pages/report/report"] /* 离屏画布：只用来导出，不占版面 */
.rp-canvas {
  position: fixed;
  left: calc(var(--rpx) * -9999);
  top: 0;
  width: calc(var(--rpx) * 750);
  height: calc(var(--rpx) * 1200);
}



/* ---- pkgGrow/pages/rx/rx.wxss ---- */
[data-route="pkgGrow/pages/rx/rx"] .rx { padding: calc(var(--rpx) * 24) calc(var(--rpx) * 24) calc(var(--rpx) * 60); }
[data-route="pkgGrow/pages/rx/rx"] .rx-loading { padding: calc(var(--rpx) * 120) 0; text-align: center; color: #6b7a6d; font-size: calc(var(--rpx) * 28); }
[data-route="pkgGrow/pages/rx/rx"] /* 不出纸 */
.rx-empty { margin-top: calc(var(--rpx) * 80); text-align: center; padding: 0 calc(var(--rpx) * 40); }
[data-route="pkgGrow/pages/rx/rx"] .rx-empty-t { display: block; font-size: calc(var(--rpx) * 40); font-weight: 600; color: #2f3b30; }
[data-route="pkgGrow/pages/rx/rx"] .rx-empty-r { display: block; margin-top: calc(var(--rpx) * 24); font-size: calc(var(--rpx) * 32); color: #444; line-height: 1.6; }
[data-route="pkgGrow/pages/rx/rx"] .rx-empty-s { display: block; margin-top: calc(var(--rpx) * 24); font-size: calc(var(--rpx) * 24); color: #8a938a; line-height: 1.6; }
[data-route="pkgGrow/pages/rx/rx"] /* 处方简述 */
.rx-brief { background: #f0f7ee; border-radius: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24); font-size: calc(var(--rpx) * 24); color: #3f4c40; line-height: 1.6; }
[data-route="pkgGrow/pages/rx/rx"] /* 训练纸 */
.rx-paper { margin-top: calc(var(--rpx) * 24); background: #fff; border-radius: calc(var(--rpx) * 20); overflow: hidden; box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 24) rgba(47,59,48,.08); }
[data-route="pkgGrow/pages/rx/rx"] .rx-paper image { width: 100%; display: block; }
[data-route="pkgGrow/pages/rx/rx"] .rx-paper-tip { padding: calc(var(--rpx) * 14) 0 calc(var(--rpx) * 18); text-align: center; font-size: calc(var(--rpx) * 20); color: #9aa39a; }
[data-route="pkgGrow/pages/rx/rx"] /* 视频框 */
.rx-video { margin-top: calc(var(--rpx) * 24); border-radius: calc(var(--rpx) * 20); overflow: hidden; background: #101410; }
[data-route="pkgGrow/pages/rx/rx"] .rx-v { width: 100%; height: calc(var(--rpx) * 420); }
[data-route="pkgGrow/pages/rx/rx"] .rx-vph { height: calc(var(--rpx) * 420); display: flex; align-items: center; justify-content: center; color: #b9c4ba; font-size: calc(var(--rpx) * 28); }
[data-route="pkgGrow/pages/rx/rx"] /* 笔画·什么笔 横滑键 */
.rx-chips { margin-top: calc(var(--rpx) * 24); white-space: nowrap; }
[data-route="pkgGrow/pages/rx/rx"] .chip { display: inline-block; margin-right: calc(var(--rpx) * 16); padding: calc(var(--rpx) * 14) calc(var(--rpx) * 28); border-radius: calc(var(--rpx) * 32); background: #f0f3ef; color: #4a554b; font-size: calc(var(--rpx) * 24); }
[data-route="pkgGrow/pages/rx/rx"] .chip-on { background: #2f9e57; color: #fff; }



/* ---- pkgShop/pages/mall/mall.wxss ---- */
[data-route="pkgShop/pages/mall/mall"] /* 商城首页（v4.86.405 京东式）· 字号只走 20/24/28/32/40 五档 · 价格红 #e1251b */

.mll {
  padding-bottom: calc(var(--rpx) * 140);
}
[data-route="pkgShop/pages/mall/mall"] /* 顶栏：搜索 + 订单 */
.mll-top {
  display: flex;
  align-items: center;
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 8) calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/mall/mall"] .mll-search {
  flex: 1;
  display: flex;
  align-items: center;
  height: calc(var(--rpx) * 72);
  padding: 0 calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 36);
  background: #f2f2f2;
  border: calc(var(--rpx) * 2) solid #e6e6e6;
}
[data-route="pkgShop/pages/mall/mall"] .mll-search-ico {
  font-size: calc(var(--rpx) * 32);
  color: #999;
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/mall/mall"] .mll-search-t {
  font-size: calc(var(--rpx) * 24);
  color: #999;
}
[data-route="pkgShop/pages/mall/mall"] /* 顶栏右侧两键（订单 / 我的服务）—— 字号走 24 档，圆角只用 calc(var(--rpx) * 10)（站规） */
.mll-link {
  margin-left: calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #333;
}
[data-route="pkgShop/pages/mall/mall"] /* 地址条 */
.mll-addr {
  display: flex;
  align-items: center;
  margin: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10);
  background: #fffdf7;
  border: calc(var(--rpx) * 2) solid #f3e6c8;
}
[data-route="pkgShop/pages/mall/mall"] .mll-addr-pin {
  font-size: calc(var(--rpx) * 28);
  color: #a8792c;
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/mall/mall"] .mll-addr-t {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  color: #6b5a33;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pkgShop/pages/mall/mall"] .mll-addr-x {
  font-size: calc(var(--rpx) * 24);
  color: #a8792c;
  margin-left: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/mall/mall"] /* 类目宫格 */
.mll-cats {
  display: flex;
  justify-content: space-between;
  margin: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 8);
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cat {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  position: relative;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cat-ico {
  width: calc(var(--rpx) * 88);
  height: calc(var(--rpx) * 88);
  border-radius: calc(var(--rpx) * 44);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  color: #ffffff;
  background: #9aa0a6;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cat-ico-all {
  background: #576b95;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cat-ico-goods {
  background: #07c160;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cat-ico-bean {
  background: #a8792c;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cat-ico-point {
  background: #c9342c;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cat-ico-course {
  background: #3f6fb5;
}
[data-route="pkgShop/pages/mall/mall"] /* v7.0.176：好物档「上新」角标（右上方小红牌，不档字） */
.mll-cat-new {
  position: absolute;
  top: calc(var(--rpx) * -10);
  right: calc(50% - calc(var(--rpx) * 56));
  background: #fa5151;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  line-height: 1;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 10) calc(var(--rpx) * 10) calc(var(--rpx) * 10) calc(var(--rpx) * 2);
  font-weight: 600;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cat-name {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #333;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cat.on .mll-cat-name {
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cat.on .mll-cat-ico {
  box-shadow: 0 0 0 calc(var(--rpx) * 4) #cdeed9;
}
[data-route="pkgShop/pages/mall/mall"] /* 双列货架 */
.mll-shelf {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  margin: 0 calc(var(--rpx) * 8);
}
[data-route="pkgShop/pages/mall/mall"] .mll-card {
  width: 48.5%;
  margin-bottom: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  overflow: hidden;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cover {
  position: relative;
  /* v4.86.517：按封面原图 750:457 等比 —— 卡宽 calc(var(--rpx) * 356) → 高 calc(var(--rpx) * 217)，满幅不裁切 */
  height: calc(var(--rpx) * 217);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(var(--rpx) * 20);
  overflow: hidden;
}
[data-route="pkgShop/pages/mall/mall"] /* v4.86.515：云库铺了封面就整幅铺真图（色块只在没图时兜底） */
.mll-cover-img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cover-goods {
  background: #eaf7ee;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cover-bean {
  background: #faf3e4;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cover-point {
  background: #fbeeee;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cover-course {
  background: #eef3fb;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cover-t {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #2b2b2b;
  text-align: center;
  line-height: 1.5;
}
[data-route="pkgShop/pages/mall/mall"] .mll-cover-tag {
  position: absolute;
  top: calc(var(--rpx) * 12);
  left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 10);
  border-radius: calc(var(--rpx) * 10);
  background: #e1251b;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/mall/mall"] .mll-body {
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16) 0;
}
[data-route="pkgShop/pages/mall/mall"] .mll-title {
  font-size: calc(var(--rpx) * 28);
  color: #222;
  font-weight: 600;
  line-height: 1.4;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
[data-route="pkgShop/pages/mall/mall"] .mll-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #999;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pkgShop/pages/mall/mall"] .mll-sold {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #999;
}
[data-route="pkgShop/pages/mall/mall"] .mll-stock {
  color: #e1251b;
}
[data-route="pkgShop/pages/mall/mall"] .mll-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16) calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/mall/mall"] .mll-price {
  display: flex;
  align-items: baseline;
  /* v4.86.494：收费面统一金皮 —— 价格从电商红改成主金（与档位页/开通弹窗同一套） */
  color: #a8792c;
}
[data-route="pkgShop/pages/mall/mall"] .mll-yen {
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/mall/mall"] .mll-num {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
}
[data-route="pkgShop/pages/mall/mall"] .mll-unit {
  margin-left: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #a8792c;
}
[data-route="pkgShop/pages/mall/mall"] .mll-add {
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 28);
  /* v4.86.523：商品卡加购键统一微信小店风格（原金渐变） */
  background: #ff6146;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/mall/mall"] .mll-add.off {
  background: #ededed;
  color: #999;
}
[data-route="pkgShop/pages/mall/mall"] .mll-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/mall/mall"] .mll-fine {
  margin: calc(var(--rpx) * 16) calc(var(--rpx) * 16) calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 20);
  color: #999;
  line-height: 1.6;
}
[data-route="pkgShop/pages/mall/mall"] /* 底部购物车悬浮条 */
.mll-bar {
  position: fixed;
  left: calc(var(--rpx) * 24);
  right: calc(var(--rpx) * 24);
  bottom: calc(var(--rpx) * 24);
  height: calc(var(--rpx) * 88);
  display: flex;
  align-items: center;
  padding: 0 calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 44);
  background: #1f1f1f;
  box-shadow: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 24) rgba(0, 0, 0, 0.2);
}
[data-route="pkgShop/pages/mall/mall"] .mll-bar-ico {
  width: calc(var(--rpx) * 48);
  height: calc(var(--rpx) * 48);
  border-radius: calc(var(--rpx) * 24);
  background: #e1251b;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgShop/pages/mall/mall"] .mll-bar-t {
  flex: 1;
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #f5f5f5;
}
[data-route="pkgShop/pages/mall/mall"] .mll-bar-go {
  /* v4.86.523：去结算入口统一微信小店橙 */
  font-size: calc(var(--rpx) * 28);
  color: #ff6146;
  font-weight: 600;
}
[data-route="pkgShop/pages/mall/mall"] /* v4.86.450：消息入口的未读数（与购物车那枚同色，位置贴在「消息」二字右上角） */
.mll-msg {
  position: relative;
}
[data-route="pkgShop/pages/mall/mall"] .mll-msg-n {
  position: absolute;
  top: calc(var(--rpx) * -16);
  right: calc(var(--rpx) * -16);
  min-width: calc(var(--rpx) * 28);
  height: calc(var(--rpx) * 28);
  line-height: calc(var(--rpx) * 28);
  padding: 0 calc(var(--rpx) * 6);
  border-radius: calc(var(--rpx) * 999);
  background: #e1251b;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  text-align: center;
}
[data-route="pkgShop/pages/mall/mall"] /* ---- v7.0.156 二级分类条（学习卡：硬笔/软笔/书体/中国画/篆刻/大家讲堂）----
 * 一行横滑、选中绿底绿字；字号走 24 档，圆角 calc(var(--rpx) * 999)（胶囊），不抢类目宫格的风头 */
.mll-chips {
  margin: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 14);
  white-space: nowrap;
}
[data-route="pkgShop/pages/mall/mall"] .mll-chiprow {
  display: flex;
  align-items: center;
}
[data-route="pkgShop/pages/mall/mall"] .mll-chip {
  flex-shrink: 0;
  margin-right: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 22);
  border-radius: calc(var(--rpx) * 999);
  background: #fff;
  border: calc(var(--rpx) * 2) solid #ececec;
  font-size: calc(var(--rpx) * 24);
  color: #555555;
}
[data-route="pkgShop/pages/mall/mall"] .mll-chip.on {
  background: #e8f8ef;
  border-color: #07c160;
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgShop/pages/mall/mall"] /* v7.0.157：学习卡兑换单浮动入口（压在购物车条上方） */
.mll-queue {
  position: fixed;
  right: calc(var(--rpx) * 24);
  bottom: calc(var(--rpx) * 136);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 24);
  background: #fff4e8;
  color: #b26a00;
  border: calc(var(--rpx) * 1) solid #ffd9b0;
  border-radius: calc(var(--rpx) * 999);
  font-size: calc(var(--rpx) * 24);
  z-index: 20;
}



/* ---- pkgShop/pages/search/search.wxss ---- */
[data-route="pkgShop/pages/search/search"] /* 商城搜索（v4.86.405）· 字号只走 20/24/28/32/40 */
.sch-top {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 8) calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/search/search"] .sch-input {
  height: calc(var(--rpx) * 76);
  padding: 0 calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 38);
  background: #f2f2f2;
  border: calc(var(--rpx) * 2) solid #e6e6e6;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/search/search"] .sch-hist-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgShop/pages/search/search"] .sch-clear {
  font-size: calc(var(--rpx) * 24);
  color: #999;
}
[data-route="pkgShop/pages/search/search"] .sch-hist {
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/search/search"] .sch-chip {
  margin: 0 calc(var(--rpx) * 16) calc(var(--rpx) * 16) 0;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 28);
  background: #f4f4f4;
  font-size: calc(var(--rpx) * 24);
  color: #444;
}
[data-route="pkgShop/pages/search/search"] .sch-shelf {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  margin: 0 calc(var(--rpx) * 8);
}
[data-route="pkgShop/pages/search/search"] .sch-card {
  width: 48.5%;
  margin-bottom: calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 10);
  background: #ffffff;
  overflow: hidden;
}
[data-route="pkgShop/pages/search/search"] .sch-cover {
  position: relative;
  /* v4.86.517：与货架卡一致，按封面原图 750:457 等比 → 高 calc(var(--rpx) * 217)，满幅不裁切 */
  height: calc(var(--rpx) * 217);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(var(--rpx) * 20);
  overflow: hidden;
}
[data-route="pkgShop/pages/search/search"] /* v4.86.515：搜索货架同款真图封面 */
.sch-cover-img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
[data-route="pkgShop/pages/search/search"] .sch-cover-goods { background: #eaf7ee; }
[data-route="pkgShop/pages/search/search"] .sch-cover-bean { background: #faf3e4; }
[data-route="pkgShop/pages/search/search"] .sch-cover-point { background: #fbeeee; }
[data-route="pkgShop/pages/search/search"] .sch-cover-course { background: #eef3fb; }
[data-route="pkgShop/pages/search/search"] .sch-cover-t {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #2b2b2b;
  text-align: center;
  line-height: 1.5;
}
[data-route="pkgShop/pages/search/search"] .sch-body {
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16) 0;
}
[data-route="pkgShop/pages/search/search"] .sch-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222;
  line-height: 1.4;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
[data-route="pkgShop/pages/search/search"] .sch-sub {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #999;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pkgShop/pages/search/search"] .sch-sold {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #999;
}
[data-route="pkgShop/pages/search/search"] .sch-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16) calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/search/search"] .sch-price {
  display: flex;
  align-items: baseline;
  color: #e1251b;
}
[data-route="pkgShop/pages/search/search"] .sch-yen { font-size: calc(var(--rpx) * 20); }
[data-route="pkgShop/pages/search/search"] .sch-num { font-size: calc(var(--rpx) * 32); font-weight: 600; }
[data-route="pkgShop/pages/search/search"] .sch-unit { margin-left: calc(var(--rpx) * 4); font-size: calc(var(--rpx) * 20); }
[data-route="pkgShop/pages/search/search"] .sch-add {
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 28);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/search/search"] .sch-add.off { background: #ededed; color: #999; }
[data-route="pkgShop/pages/search/search"] .sch-bar {
  position: fixed;
  left: calc(var(--rpx) * 24);
  right: calc(var(--rpx) * 24);
  bottom: calc(var(--rpx) * 24);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  border-radius: calc(var(--rpx) * 44);
  /* v4.86.523：购物车·去结算 浮条统一微信小店橙胶囊 */
  background: #ff6146;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
}



/* ---- pkgShop/pages/goods/goods.wxss ---- */
[data-route="pkgShop/pages/goods/goods"] /* 商品详情（v4.86.405）· 字号只走 20/24/28/32/40 */
.gds {
  padding-bottom: calc(var(--rpx) * 160);
}
[data-route="pkgShop/pages/goods/goods"] /* v4.86.518：顶部轮播回场——主封面+四封面全是 1:1 方图，框高=宽（calc(var(--rpx) * 734)）满幅不裁 */
.gds-swiper {
  height: calc(var(--rpx) * 734);
  margin: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 10);
  overflow: hidden;
  background: #f2f2f2;
}
[data-route="pkgShop/pages/goods/goods"] .gds-swiper-img {
  width: 100%;
  height: 100%;
}
[data-route="pkgShop/pages/goods/goods"] /* v4.86.517：商品说明区的详情长图组（竖排、按原图比例、圆角统一） */
.gds-details {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/goods/goods"] .gds-detail-img {
  width: 100%;
  display: block;
  border-radius: calc(var(--rpx) * 8);
  margin-bottom: calc(var(--rpx) * 12);
  background: #f2f2f2;
}
[data-route="pkgShop/pages/goods/goods"] .gds-cover {
  position: relative;
  height: calc(var(--rpx) * 420);
  margin: 0 calc(var(--rpx) * 8) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 10);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(var(--rpx) * 32);
}
[data-route="pkgShop/pages/goods/goods"] .gds-cover-goods { background: #eaf7ee; }
[data-route="pkgShop/pages/goods/goods"] .gds-cover-bean { background: #faf3e4; }
[data-route="pkgShop/pages/goods/goods"] .gds-cover-point { background: #fbeeee; }
[data-route="pkgShop/pages/goods/goods"] .gds-cover-course { background: #eef3fb; }
[data-route="pkgShop/pages/goods/goods"] .gds-cover-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #2b2b2b;
  text-align: center;
  line-height: 1.5;
}
[data-route="pkgShop/pages/goods/goods"] .gds-cover-tag {
  position: absolute;
  top: calc(var(--rpx) * 20);
  left: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 10);
  background: #e1251b;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/goods/goods"] .gds-price-card {
  padding-bottom: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/goods/goods"] .gds-price {
  display: flex;
  align-items: baseline;
  /* v4.86.494：收费面统一金皮（价格主金 + 按钮金渐变） */
  color: #a8792c;
}
[data-route="pkgShop/pages/goods/goods"] .gds-yen { font-size: calc(var(--rpx) * 24); }
[data-route="pkgShop/pages/goods/goods"] .gds-num { font-size: calc(var(--rpx) * 40); font-weight: 600; }
[data-route="pkgShop/pages/goods/goods"] .gds-unit { margin-left: calc(var(--rpx) * 6); font-size: calc(var(--rpx) * 24); }
[data-route="pkgShop/pages/goods/goods"] .gds-mode {
  margin-left: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 10);
  background: #faf3e4;
  color: #a8792c;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/goods/goods"] .gds-sold {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #999;
}
[data-route="pkgShop/pages/goods/goods"] .gds-stock { color: #e1251b; }
[data-route="pkgShop/pages/goods/goods"] .gds-title {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #1a1a1a;
  line-height: 1.4;
}
[data-route="pkgShop/pages/goods/goods"] .gds-sub {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #777;
  line-height: 1.5;
}
[data-route="pkgShop/pages/goods/goods"] .gds-chips {
  margin-top: calc(var(--rpx) * 12);
  display: flex;
  flex-wrap: wrap;
}
[data-route="pkgShop/pages/goods/goods"] .gds-chip {
  margin: 0 calc(var(--rpx) * 12) calc(var(--rpx) * 8) 0;
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 10);
  background: #f4f4f4;
  font-size: calc(var(--rpx) * 20);
  color: #666;
}
[data-route="pkgShop/pages/goods/goods"] .gds-qty {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgShop/pages/goods/goods"] .gds-qty-t {
  font-size: calc(var(--rpx) * 28);
  color: #333;
}
[data-route="pkgShop/pages/goods/goods"] .gds-step {
  display: flex;
  align-items: center;
}
[data-route="pkgShop/pages/goods/goods"] .gds-step-b {
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  line-height: calc(var(--rpx) * 52);
  text-align: center;
  border: calc(var(--rpx) * 2) solid #dddddd;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 32);
  color: #333;
}
[data-route="pkgShop/pages/goods/goods"] .gds-step-n {
  min-width: calc(var(--rpx) * 72);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #222;
}
[data-route="pkgShop/pages/goods/goods"] .gds-note {
  line-height: 1.6;
}
[data-route="pkgShop/pages/goods/goods"] .gds-fine {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  color: #999;
  line-height: 1.6;
}
[data-route="pkgShop/pages/goods/goods"] .gds-err {
  margin: 0 calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #c9342c;
}
[data-route="pkgShop/pages/goods/goods"] .gds-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/goods/goods"] .gds-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24) calc(calc(var(--rpx) * 16) + env(safe-area-inset-bottom));
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * -4) calc(var(--rpx) * 16) rgba(0, 0, 0, 0.06);
}
[data-route="pkgShop/pages/goods/goods"] .gds-cart {
  position: relative;
  width: calc(var(--rpx) * 96);
  text-align: center;
}
[data-route="pkgShop/pages/goods/goods"] .gds-cart-t {
  font-size: calc(var(--rpx) * 20);
  color: #666;
}
[data-route="pkgShop/pages/goods/goods"] .gds-cart-n {
  position: absolute;
  top: calc(var(--rpx) * -12);
  right: calc(var(--rpx) * 4);
  min-width: calc(var(--rpx) * 32);
  height: calc(var(--rpx) * 32);
  line-height: calc(var(--rpx) * 32);
  padding: 0 calc(var(--rpx) * 6);
  border-radius: calc(var(--rpx) * 16);
  background: #e1251b;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  text-align: center;
}
[data-route="pkgShop/pages/goods/goods"] .gds-sub-btn {
  flex: 1;
  margin-left: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  text-align: center;
  border-radius: calc(var(--rpx) * 10);
  /* v4.86.523：收费按键统一微信小店风格——次键=浅橙底+小店橙描边/主字（主键见 .gds-main） */
  background: #fff1ec;
  border: calc(var(--rpx) * 2) solid #ff6146;
  color: #ff6146;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/goods/goods"] .gds-main {
  flex: 1;
  margin-left: calc(var(--rpx) * 16);
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  text-align: center;
  border-radius: calc(var(--rpx) * 40);
  /* v4.86.523：收费主键统一微信小店风格——纯色小店橙胶囊（原金渐变） */
  background: #ff6146;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/goods/goods"] .gds-sub-btn.off, [data-route="pkgShop/pages/goods/goods"] .gds-main.off {
  background: #ededed;
  color: #999;
}
[data-route="pkgShop/pages/goods/goods"] /* ============================================================
 * v4.86.521 付费弹窗（仿京东 UI：tab 自己买/送朋友 + 地址栏 + 价格 + 支付钮）
 * ============================================================ */
.gds-gift-banner {
  margin: calc(var(--rpx) * 16) calc(var(--rpx) * 16) 0;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: #fdf8ec;
  border: calc(var(--rpx) * 2) solid #c9a15c;
  color: #a8792c;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/goods/goods"] .ps-mask {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 90;
  background: rgba(0, 0, 0, 0.45);
  display: flex;
  align-items: flex-end;
}
[data-route="pkgShop/pages/goods/goods"] .ps-sheet {
  width: 100%;
  box-sizing: border-box;
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 24) calc(calc(var(--rpx) * 24) + env(safe-area-inset-bottom));
  background: #ffffff;
  border-radius: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0 0;
}
[data-route="pkgShop/pages/goods/goods"] .ps-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgShop/pages/goods/goods"] .ps-title {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #111;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pkgShop/pages/goods/goods"] .ps-x {
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  line-height: calc(var(--rpx) * 56);
  text-align: center;
  color: #999;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgShop/pages/goods/goods"] .ps-tabs {
  display: flex;
  margin-top: calc(var(--rpx) * 20);
  background: #f5f5f5;
  border-radius: calc(var(--rpx) * 16) calc(var(--rpx) * 16) 0 0;
  overflow: hidden;
}
[data-route="pkgShop/pages/goods/goods"] .ps-tab {
  flex: 1;
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #666;
}
[data-route="pkgShop/pages/goods/goods"] .ps-tab.on {
  background: #ffffff;
  color: #111;
  font-weight: 700;
  border-radius: calc(var(--rpx) * 16) calc(var(--rpx) * 16) 0 0;
  box-shadow: inset 0 calc(var(--rpx) * -6) 0 #e1251b;
}
[data-route="pkgShop/pages/goods/goods"] .ps-addr {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20) 0;
  border-bottom: calc(var(--rpx) * 2) solid #f2f2f2;
}
[data-route="pkgShop/pages/goods/goods"] .ps-addr-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
[data-route="pkgShop/pages/goods/goods"] .ps-addr-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #111;
}
[data-route="pkgShop/pages/goods/goods"] .ps-addr-line {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #666;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-route="pkgShop/pages/goods/goods"] .ps-addr-empty {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #a8792c;
}
[data-route="pkgShop/pages/goods/goods"] .ps-arrow {
  margin-left: calc(var(--rpx) * 12);
  color: #bbb;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgShop/pages/goods/goods"] .ps-muted-row {
  padding: calc(var(--rpx) * 16) 0 calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 24);
  color: #999;
}
[data-route="pkgShop/pages/goods/goods"] .ps-steps {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: #fdf3ee;
}
[data-route="pkgShop/pages/goods/goods"] .ps-step {
  font-size: calc(var(--rpx) * 24);
  color: #a8562c;
}
[data-route="pkgShop/pages/goods/goods"] .ps-step-n {
  display: inline-block;
  width: calc(var(--rpx) * 32);
  height: calc(var(--rpx) * 32);
  line-height: calc(var(--rpx) * 32);
  margin-right: calc(var(--rpx) * 6);
  border-radius: 50%;
  background: #e1251b;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
  text-align: center;
}
[data-route="pkgShop/pages/goods/goods"] .ps-step-arrow {
  margin: 0 calc(var(--rpx) * 14);
  color: #d8a08c;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/goods/goods"] .ps-wish {
  margin-top: calc(var(--rpx) * 20);
  height: calc(var(--rpx) * 76);
  padding: 0 calc(var(--rpx) * 20);
  box-sizing: border-box;
  border-radius: calc(var(--rpx) * 12);
  background: #f7f7f7;
  font-size: calc(var(--rpx) * 24);
  color: #111;
}
[data-route="pkgShop/pages/goods/goods"] .ps-goods {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/goods/goods"] .ps-img {
  width: calc(var(--rpx) * 140);
  height: calc(var(--rpx) * 140);
  border-radius: calc(var(--rpx) * 12);
  background: #f7f7f7;
  flex-shrink: 0;
}
[data-route="pkgShop/pages/goods/goods"] .ps-goods-r {
  flex: 1;
  margin-left: calc(var(--rpx) * 20);
  overflow: hidden;
}
[data-route="pkgShop/pages/goods/goods"] .ps-price {
  display: flex;
  align-items: baseline;
}
[data-route="pkgShop/pages/goods/goods"] .ps-yen {
  color: #e1251b;
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
}
[data-route="pkgShop/pages/goods/goods"] .ps-num {
  color: #e1251b;
  font-size: calc(var(--rpx) * 40);
  font-weight: 700;
}
[data-route="pkgShop/pages/goods/goods"] .ps-to {
  margin-left: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #666;
}
[data-route="pkgShop/pages/goods/goods"] .ps-sub {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #666;
}
[data-route="pkgShop/pages/goods/goods"] .ps-gift-done {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 16) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #1a7f37;
}
[data-route="pkgShop/pages/goods/goods"] .ps-err {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #c9342c;
}
[data-route="pkgShop/pages/goods/goods"] .ps-pay {
  margin-top: calc(var(--rpx) * 28);
  height: calc(var(--rpx) * 88);
  line-height: calc(var(--rpx) * 88);
  text-align: center;
  border-radius: calc(var(--rpx) * 44);
  /* v4.86.523：支付键统一微信小店风格——纯色小店橙胶囊（原京东红渐变） */
  background: #ff6146;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
}
[data-route="pkgShop/pages/goods/goods"] .ps-pay-btn {
  margin: calc(var(--rpx) * 12) 0 0;
}
[data-route="pkgShop/pages/goods/goods"] .ps-pay.off {
  background: #ededed;
  color: #999;
}
[data-route="pkgShop/pages/goods/goods"] .ps-fine {
  margin-top: calc(var(--rpx) * 16);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  color: #bbb;
}
[data-route="pkgShop/pages/goods/goods"] /* v4.86.522：规格选择（电子版/实物版）+ 朋友认领钮 */
.ps-specs {
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/goods/goods"] .ps-spec {
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 24);
  margin: 0 calc(var(--rpx) * 16) calc(var(--rpx) * 16) 0;
  border-radius: calc(var(--rpx) * 12);
  background: #f7f7f7;
  border: calc(var(--rpx) * 2) solid #f7f7f7;
  color: #333;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/goods/goods"] .ps-spec.on {
  background: #fdefee;
  border-color: #e1251b;
  color: #e1251b;
  font-weight: 600;
}
[data-route="pkgShop/pages/goods/goods"] .gds-gift-line {
  font-size: calc(var(--rpx) * 24);
  color: #a8792c;
}
[data-route="pkgShop/pages/goods/goods"] .gds-gift-claim {
  margin-top: calc(var(--rpx) * 14);
  height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  text-align: center;
  border-radius: calc(var(--rpx) * 36);
  /* v4.86.523：认领键随支付键统一微信小店橙 */
  background: #ff6146;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgShop/pages/goods/goods"] .gds-gift-claim.off {
  background: #ededed;
  color: #999;
}



/* ---- pkgShop/pages/cart/cart.wxss ---- */
[data-route="pkgShop/pages/cart/cart"] /* 购物车（v4.86.405）· 字号只走 20/24/28/32/40 */
.crt {
  padding-bottom: calc(var(--rpx) * 160);
}
[data-route="pkgShop/pages/cart/cart"] .crt-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 16) calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/cart/cart"] .crt-head-t {
  font-size: calc(var(--rpx) * 24);
  color: #666;
}
[data-route="pkgShop/pages/cart/cart"] .crt-clear {
  font-size: calc(var(--rpx) * 24);
  color: #999;
}
[data-route="pkgShop/pages/cart/cart"] .crt-row {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/cart/cart"] .crt-check {
  width: calc(var(--rpx) * 44);
  height: calc(var(--rpx) * 44);
  margin-top: calc(var(--rpx) * 8);
  border: calc(var(--rpx) * 2) solid #cccccc;
  border-radius: calc(var(--rpx) * 22);
  text-align: center;
  line-height: calc(var(--rpx) * 40);
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
}
[data-route="pkgShop/pages/cart/cart"] .crt-check.on {
  background: #07c160;
  border-color: #07c160;
}
[data-route="pkgShop/pages/cart/cart"] .crt-check.off {
  background: #f0f0f0;
  border-color: #e0e0e0;
}
[data-route="pkgShop/pages/cart/cart"] .crt-cover {
  width: calc(var(--rpx) * 128);
  height: calc(var(--rpx) * 128);
  margin: 0 calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 10);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #444;
  text-align: center;
  overflow: hidden;
}
[data-route="pkgShop/pages/cart/cart"] .crt-cover-goods { background: #eaf7ee; }
[data-route="pkgShop/pages/cart/cart"] .crt-cover-bean { background: #faf3e4; }
[data-route="pkgShop/pages/cart/cart"] .crt-cover-point { background: #fbeeee; }
[data-route="pkgShop/pages/cart/cart"] .crt-cover-course { background: #eef3fb; }
[data-route="pkgShop/pages/cart/cart"] .crt-mid {
  flex: 1;
}
[data-route="pkgShop/pages/cart/cart"] .crt-title {
  font-size: calc(var(--rpx) * 28);
  color: #222;
  font-weight: 600;
  line-height: 1.4;
}
[data-route="pkgShop/pages/cart/cart"] .crt-warn {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #c9342c;
}
[data-route="pkgShop/pages/cart/cart"] .crt-price {
  margin-top: calc(var(--rpx) * 8);
  /* v4.86.494：收费面统一金皮 */
  color: #a8792c;
}
[data-route="pkgShop/pages/cart/cart"] .crt-yen { font-size: calc(var(--rpx) * 20); }
[data-route="pkgShop/pages/cart/cart"] .crt-num { font-size: calc(var(--rpx) * 32); font-weight: 600; }
[data-route="pkgShop/pages/cart/cart"] .crt-step {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/cart/cart"] .crt-b {
  width: calc(var(--rpx) * 48);
  height: calc(var(--rpx) * 48);
  line-height: calc(var(--rpx) * 44);
  text-align: center;
  border: calc(var(--rpx) * 2) solid #dddddd;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  color: #333;
}
[data-route="pkgShop/pages/cart/cart"] .crt-n {
  min-width: calc(var(--rpx) * 64);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/cart/cart"] .crt-del {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  color: #999;
}
[data-route="pkgShop/pages/cart/cart"] .crt-err {
  margin: 0 calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #c9342c;
}
[data-route="pkgShop/pages/cart/cart"] .crt-fine {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 16) calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 20);
  color: #999;
}
[data-route="pkgShop/pages/cart/cart"] .crt-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/cart/cart"] .crt-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24) calc(calc(var(--rpx) * 16) + env(safe-area-inset-bottom));
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * -4) calc(var(--rpx) * 16) rgba(0, 0, 0, 0.06);
}
[data-route="pkgShop/pages/cart/cart"] .crt-all {
  font-size: calc(var(--rpx) * 24);
  color: #666;
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 12) calc(var(--rpx) * 8) 0;
}
[data-route="pkgShop/pages/cart/cart"] .crt-all.on {
  color: #07c160;
}
[data-route="pkgShop/pages/cart/cart"] .crt-sum {
  flex: 1;
  display: flex;
  align-items: baseline;
  justify-content: flex-end;
}
[data-route="pkgShop/pages/cart/cart"] .crt-sum-t {
  font-size: calc(var(--rpx) * 24);
  color: #666;
}
[data-route="pkgShop/pages/cart/cart"] .crt-sum-v {
  margin-left: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #a8792c;
}
[data-route="pkgShop/pages/cart/cart"] .crt-sum-n {
  margin-left: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 20);
  color: #999;
}
[data-route="pkgShop/pages/cart/cart"] .crt-go {
  margin-left: calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 40);
  height: calc(var(--rpx) * 76);
  line-height: calc(var(--rpx) * 76);
  border-radius: calc(var(--rpx) * 38);
  /* v4.86.523：收费按键统一微信小店风格——纯色小店橙胶囊（原金渐变） */
  background: #ff6146;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/cart/cart"] .crt-go.off {
  background: #ededed;
  color: #999;
}



/* ---- pkgShop/pages/settle/settle.wxss ---- */
[data-route="pkgShop/pages/settle/settle"] /* 结算（多品 · v4.86.405）· 字号只走 20/24/28/32/40 */
.stl {
  padding-bottom: calc(var(--rpx) * 160);
}
[data-route="pkgShop/pages/settle/settle"] .stl-addr {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgShop/pages/settle/settle"] .stl-addr-name {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222;
}
[data-route="pkgShop/pages/settle/settle"] .stl-addr-line {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #666;
}
[data-route="pkgShop/pages/settle/settle"] .stl-addr-empty {
  font-size: calc(var(--rpx) * 28);
  color: #c9342c;
}
[data-route="pkgShop/pages/settle/settle"] .stl-addr-x {
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #576b95;
}
[data-route="pkgShop/pages/settle/settle"] .stl-line {
  display: flex;
  align-items: baseline;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/settle/settle"] .stl-line-t {
  flex: 1;
  font-size: calc(var(--rpx) * 24);
  color: #333;
}
[data-route="pkgShop/pages/settle/settle"] .stl-line-n {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #999;
}
[data-route="pkgShop/pages/settle/settle"] .stl-line-p {
  margin-left: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #222;
}
[data-route="pkgShop/pages/settle/settle"] .stl-fee {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: calc(var(--rpx) * 24);
  color: #555;
  margin-top: calc(var(--rpx) * 10);
}
[data-route="pkgShop/pages/settle/settle"] .stl-note {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #999;
  line-height: 1.5;
}
[data-route="pkgShop/pages/settle/settle"] .stl-total {
  margin-top: calc(var(--rpx) * 16);
  padding-top: calc(var(--rpx) * 12);
  border-top: calc(var(--rpx) * 2) solid #f0f0f0;
  font-size: calc(var(--rpx) * 28);
  color: #222;
}
[data-route="pkgShop/pages/settle/settle"] .stl-total-v {
  /* v4.86.494：合计金额走主金（收费面统一金皮） */
  color: #a8792c;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
}
[data-route="pkgShop/pages/settle/settle"] .stl-err {
  margin: 0 calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #c9342c;
}
[data-route="pkgShop/pages/settle/settle"] .stl-fine {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 16) calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 20);
  color: #999;
  line-height: 1.6;
}
[data-route="pkgShop/pages/settle/settle"] .stl-ok-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/settle/settle"] .stl-ok-btns {
  display: flex;
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/settle/settle"] .stl-ok-btns .btn {
  flex: 1;
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/settle/settle"] .stl-btn {
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/settle/settle"] .stl-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24) calc(calc(var(--rpx) * 16) + env(safe-area-inset-bottom));
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * -4) calc(var(--rpx) * 16) rgba(0, 0, 0, 0.06);
}
[data-route="pkgShop/pages/settle/settle"] .stl-sum {
  flex: 1;
  display: flex;
  align-items: baseline;
}
[data-route="pkgShop/pages/settle/settle"] .stl-sum-t {
  font-size: calc(var(--rpx) * 24);
  color: #666;
}
[data-route="pkgShop/pages/settle/settle"] .stl-sum-v {
  margin-left: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  /* v4.86.494：合计金额走主金 */
  color: #a8792c;
}
[data-route="pkgShop/pages/settle/settle"] .stl-go {
  margin-left: calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 48);
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  border-radius: calc(var(--rpx) * 40);
  /* v4.86.523：收费按键统一微信小店风格——纯色小店橙胶囊（原金渐变） */
  background: #ff6146;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/settle/settle"] .stl-go.off {
  background: #ededed;
  color: #999;
}



/* ---- pkgShop/pages/order/order.wxss ---- */
[data-route="pkgShop/pages/order/order"] /* 练字课程下单页（G-18 端上入口）· A 层字号只走 20/24/28/32/40 五档 */

.so-lead {
  display: block;
  margin: calc(var(--rpx) * 4) calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  line-height: 1.6;
}
[data-route="pkgShop/pages/order/order"] .so-card {
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 28) calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/order/order"] /* v4.86.16：去「我的课程」（已购 / 开通状态）——一行文字链，别做成第二个大按钮抢视线 */
.so-mylink {
  min-height: calc(var(--rpx) * 64);
  line-height: calc(var(--rpx) * 64);
  margin: calc(var(--rpx) * -8) calc(var(--rpx) * 8) calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #576b95;
}
[data-route="pkgShop/pages/order/order"] /* v4.86.398：商城两段式列表的段抬头（实物在前 / 课程在后） */
.so-group {
  margin: calc(var(--rpx) * 24) calc(var(--rpx) * 8) calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #1a1a1a;
}
[data-route="pkgShop/pages/order/order"] .so-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
}
[data-route="pkgShop/pages/order/order"] .so-title {
  font-size: calc(var(--rpx) * 32);
  color: #222;
  font-weight: 600;
  flex: 1;
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/order/order"] .so-price {
  font-size: calc(var(--rpx) * 40);
  color: #e24a3a;
  font-weight: 700;
  white-space: nowrap;
}
[data-route="pkgShop/pages/order/order"] .so-yuan {
  font-size: calc(var(--rpx) * 24);
  margin-right: calc(var(--rpx) * 2);
}
[data-route="pkgShop/pages/order/order"] .so-sub {
  display: block;
  margin-top: calc(var(--rpx) * 8);
  line-height: 1.5;
}
[data-route="pkgShop/pages/order/order"] .so-meta {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--rpx) * 12);
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/order/order"] .so-chip {
  font-size: calc(var(--rpx) * 20);
  color: #576b95;
  background: #eef2f8;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
}
[data-route="pkgShop/pages/order/order"] .so-btn {
  width: 100%;
  margin-top: calc(var(--rpx) * 24);
  /* v4.86.523：收费按键统一微信小店风格——压掉全局绿主键，改小店橙胶囊 */
  background: #ff6146;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pkgShop/pages/order/order"] .so-btn.button-hover, [data-route="pkgShop/pages/order/order"] .so-btn[disabled].button-hover {
  background: #e84c30;
}
[data-route="pkgShop/pages/order/order"] .so-result {
  text-align: center;
}
[data-route="pkgShop/pages/order/order"] .so-ok {
  font-size: calc(var(--rpx) * 32);
  color: #07c160;
  font-weight: 600;
}
[data-route="pkgShop/pages/order/order"] .so-result-t {
  font-size: calc(var(--rpx) * 28);
  color: #222;
  margin: calc(var(--rpx) * 12) 0 calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/order/order"] .so-links {
  display: flex;
  justify-content: center;
  gap: calc(var(--rpx) * 40);
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/order/order"] .so-link {
  min-height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  padding: 0 calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 28);
  color: #576b95;
}
[data-route="pkgShop/pages/order/order"] .so-help .muted {
  line-height: 1.7;
}
[data-route="pkgShop/pages/order/order"] .so-err {
  margin: calc(var(--rpx) * 12) calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #e24a3a;
  line-height: 1.5;
}




/* ---- pkgShop/pages/addr/addr.wxss ---- */
[data-route="pkgShop/pages/addr/addr"] /* 收货地址簿（C 组 #591 段一）—— 只写这一页自己的类，通用卡片/按钮走 app.wxss */
.ad-lead {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 24) calc(var(--rpx) * 18);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.6;
}
[data-route="pkgShop/pages/addr/addr"] .ad-card {
  margin: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/addr/addr"] .ad-row {
  padding: calc(var(--rpx) * 4) 0 calc(var(--rpx) * 8);
}
[data-route="pkgShop/pages/addr/addr"] .ad-name {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}
[data-route="pkgShop/pages/addr/addr"] .ad-name-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #1a1a1a;
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/addr/addr"] .ad-phone {
  font-size: calc(var(--rpx) * 28);
  color: #666;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pkgShop/pages/addr/addr"] .ad-tag {
  margin-left: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 20);
  color: #07c160;
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 6);
  padding: calc(var(--rpx) * 1) calc(var(--rpx) * 10);
  line-height: 1.5;
}
[data-route="pkgShop/pages/addr/addr"] .ad-line {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  color: #333;
  line-height: 1.55;
  word-break: break-all;
}
[data-route="pkgShop/pages/addr/addr"] .ad-ops {
  margin-top: calc(var(--rpx) * 12);
  padding-top: calc(var(--rpx) * 12);
  border-top: calc(var(--rpx) * 1) solid #f2f2f2;
  display: flex;
  justify-content: flex-end;
}
[data-route="pkgShop/pages/addr/addr"] .ad-op {
  font-size: calc(var(--rpx) * 24);
  color: #576b95;
  padding: calc(var(--rpx) * 6) 0 calc(var(--rpx) * 6) calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/addr/addr"] .ad-op-del {
  color: #e64340;
}
[data-route="pkgShop/pages/addr/addr"] .ad-foot {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 24) calc(var(--rpx) * 40);
}
[data-route="pkgShop/pages/addr/addr"] .ad-btn {
  margin-bottom: calc(var(--rpx) * 18);
}
[data-route="pkgShop/pages/addr/addr"] .ad-foot-note {
  font-size: calc(var(--rpx) * 24);
  text-align: center;
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pkgShop/pages/addr/addr"] .ad-field {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 18) 0;
  border-bottom: calc(var(--rpx) * 1) solid #f4f4f4;
}
[data-route="pkgShop/pages/addr/addr"] .ad-label {
  width: calc(var(--rpx) * 150);
  flex: 0 0 calc(var(--rpx) * 150);
  font-size: calc(var(--rpx) * 28);
  color: #666;
  line-height: calc(var(--rpx) * 44);
}
[data-route="pkgShop/pages/addr/addr"] .ad-input {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  line-height: calc(var(--rpx) * 44);
  min-height: calc(var(--rpx) * 44);
}
[data-route="pkgShop/pages/addr/addr"] .ad-picker {
  flex: 1;
}
[data-route="pkgShop/pages/addr/addr"] .ad-picker-t {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  line-height: calc(var(--rpx) * 44);
}
[data-route="pkgShop/pages/addr/addr"] .ad-textarea {
  flex: 1;
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  line-height: calc(var(--rpx) * 44);
  min-height: calc(var(--rpx) * 88);
  width: auto;
}
[data-route="pkgShop/pages/addr/addr"] .ad-form-btns {
  margin-top: calc(var(--rpx) * 26);
}
[data-route="pkgShop/pages/addr/addr"] .ad-err {
  margin: calc(var(--rpx) * 6) calc(var(--rpx) * 24) calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #e64340;
  line-height: 1.55;
}



/* ---- pkgShop/pages/confirm/confirm.wxss ---- */
[data-route="pkgShop/pages/confirm/confirm"] /* 确认订单页（v4.86.396）—— 版式照 pkgShop 现有页：卡片白底圆角 */
.page {
  padding: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/confirm/confirm"] .center { text-align: center; }
[data-route="pkgShop/pages/confirm/confirm"] .card {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/confirm/confirm"] .card-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222222;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/confirm/confirm"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgShop/pages/confirm/confirm"] .fine {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgShop/pages/confirm/confirm"] .addr-line {
  font-size: calc(var(--rpx) * 28);
  color: #222222;
  line-height: 1.5;
}
[data-route="pkgShop/pages/confirm/confirm"] .addr-name {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgShop/pages/confirm/confirm"] .g-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222222;
}
[data-route="pkgShop/pages/confirm/confirm"] .qty-row {
  display: flex;
  align-items: center;
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/confirm/confirm"] .qty-label {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  margin-right: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/confirm/confirm"] .qty-btn {
  width: calc(var(--rpx) * 52);
  height: calc(var(--rpx) * 52);
  line-height: calc(var(--rpx) * 48);
  text-align: center;
  border: calc(var(--rpx) * 1) solid #dddddd;
  border-radius: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 28);
  color: #222222;
}
[data-route="pkgShop/pages/confirm/confirm"] .qty-num {
  min-width: calc(var(--rpx) * 64);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #222222;
}
[data-route="pkgShop/pages/confirm/confirm"] .g-price {
  margin-left: auto;
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  /* v4.86.494：收费面统一金皮 */
  color: #a8792c;
}
[data-route="pkgShop/pages/confirm/confirm"] .ship-row {
  display: flex;
  justify-content: space-between;
  font-size: calc(var(--rpx) * 24);
  color: #444444;
  padding: calc(var(--rpx) * 8) 0;
}
[data-route="pkgShop/pages/confirm/confirm"] .ship-fee { font-weight: 600; }
[data-route="pkgShop/pages/confirm/confirm"] .ship-remote { color: #fa5151; }
[data-route="pkgShop/pages/confirm/confirm"] .ship-row.total { border-top: calc(var(--rpx) * 1) solid #f0f0f0; margin-top: calc(var(--rpx) * 8); padding-top: calc(var(--rpx) * 16); }
[data-route="pkgShop/pages/confirm/confirm"] .ship-total { font-size: calc(var(--rpx) * 32); font-weight: 700; color: #a8792c; }
[data-route="pkgShop/pages/confirm/confirm"] .err {
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 4) calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/confirm/confirm"] .btn-row {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/confirm/confirm"] .btn {
  /* v4.86.523：收费按键统一微信小店风格——纯色小店橙胶囊（原金渐变） */
  background: #ff6146;
  color: #ffffff;
  border-radius: calc(var(--rpx) * 999);
  text-align: center;
  padding: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgShop/pages/confirm/confirm"] .btn.big { font-size: calc(var(--rpx) * 28); }
[data-route="pkgShop/pages/confirm/confirm"] .btn.dis { opacity: 0.6; }
[data-route="pkgShop/pages/confirm/confirm"] .done-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 12);
}



/* ---- pkgShop/pages/my-courses/my-courses.wxss ---- */
[data-route="pkgShop/pages/my-courses/my-courses"] /* 我的课程 / 我的订单 · A 层字号只走 20/24/28/32/40 五档 */

.mc-lead {
  display: block;
  margin: calc(var(--rpx) * 4) calc(var(--rpx) * 8) calc(var(--rpx) * 20);
  line-height: 1.6;
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-card {
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 28) calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/my-courses/my-courses"] /* 订单一块 */
.mc-order {
  padding: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 8);
  border-top: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-order-t {
  font-size: calc(var(--rpx) * 28);
  color: #222;
  font-weight: 600;
  flex: 1;
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-order-p {
  font-size: calc(var(--rpx) * 32);
  color: #e24a3a;
  font-weight: 700;
  white-space: nowrap;
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-order-m {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-order-time {
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-btn {
  width: 100%;
  margin-top: calc(var(--rpx) * 16);
  /* v4.86.523：继续付款键统一微信小店风格——压掉全局绿主键，改小店橙胶囊 */
  background: #ff6146;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-btn.button-hover, [data-route="pkgShop/pages/my-courses/my-courses"] .mc-btn[disabled].button-hover {
  background: #e84c30;
}
[data-route="pkgShop/pages/my-courses/my-courses"] /* 状态徽标 */
.mc-chip {
  font-size: calc(var(--rpx) * 20);
  color: #666;
  background: #f2f2f2;
  border-radius: calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  white-space: nowrap;
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-chip-wait {
  color: #b26a00;
  background: #fff5e6;
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-chip-ok {
  color: #07a05a;
  background: #e8f8ef;
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-chip-no {
  color: #c0392b;
  background: #fdecea;
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-help .muted {
  line-height: 1.7;
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-ops {
  display: flex;
  justify-content: center;
  gap: calc(var(--rpx) * 40);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-op {
  min-height: calc(var(--rpx) * 72);
  line-height: calc(var(--rpx) * 72);
  padding: 0 calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 28);
  color: #576b95;
}
[data-route="pkgShop/pages/my-courses/my-courses"] .mc-err {
  margin: calc(var(--rpx) * 12) calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #e24a3a;
  line-height: 1.5;
}
[data-route="pkgShop/pages/my-courses/my-courses"] /* v7.0.156：我的学习卡入口（右上「查看 ›」） */
.mc-card-go {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}



/* ---- pkgShop/pages/orders/orders.wxss ---- */
[data-route="pkgShop/pages/orders/orders"] /* 我的订单（v4.86.397）—— 版式照 pkgShop 现有页：卡片白底圆角 */
.page {
  padding: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/orders/orders"] .center { text-align: center; }
[data-route="pkgShop/pages/orders/orders"] .card {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/orders/orders"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgShop/pages/orders/orders"] .fine {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgShop/pages/orders/orders"] .tabs {
  display: flex;
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/orders/orders"] .tab {
  flex: 1;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #666666;
  padding: calc(var(--rpx) * 16) 0;
  border-radius: calc(var(--rpx) * 999);
  background: #ffffff;
}
[data-route="pkgShop/pages/orders/orders"] .tab.on {
  color: #ffffff;
  background: #07c160;
  font-weight: 600;
}
[data-route="pkgShop/pages/orders/orders"] .row-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgShop/pages/orders/orders"] .o-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222222;
  flex: 1;
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/orders/orders"] .chip {
  font-size: calc(var(--rpx) * 20);
  color: #666666;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/orders/orders"] .chip-wait { color: #b26b00; background: #fff7e6; }
[data-route="pkgShop/pages/orders/orders"] .chip-go { color: #0768af; background: #e8f4ff; }
[data-route="pkgShop/pages/orders/orders"] .chip-ok { color: #07c160; background: #e8f9ef; }
[data-route="pkgShop/pages/orders/orders"] .chip-no { color: #fa5151; background: #ffefef; }
[data-route="pkgShop/pages/orders/orders"] .row-line {
  display: flex;
  justify-content: space-between;
  margin-top: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/orders/orders"] .o-amount {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  /* v4.86.494：订单金额也是收费面的数字，统一主金（操作按钮仍是功能绿，不动） */
  color: #a8792c;
}
[data-route="pkgShop/pages/orders/orders"] .acts {
  display: flex;
  justify-content: flex-end;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/orders/orders"] .act {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
  margin-left: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/orders/orders"] .act.main {
  background: #07c160;
  color: #ffffff;
  font-weight: 600;
}
[data-route="pkgShop/pages/orders/orders"] .act.muted-a {
  color: #999999;
  border-color: #dddddd;
}
[data-route="pkgShop/pages/orders/orders"] .btn-row {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/orders/orders"] .btn {
  background: #07c160;
  color: #ffffff;
  border-radius: calc(var(--rpx) * 999);
  text-align: center;
  padding: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgShop/pages/orders/orders"] .btn.slim {
  display: inline-block;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 48);
  margin-top: calc(var(--rpx) * 8);
}



/* ---- pkgShop/pages/aftersale/aftersale.wxss ---- */
[data-route="pkgShop/pages/aftersale/aftersale"] /* 售后申请（v4.86.397）—— 版式照 pkgShop 现有页 */
.page {
  padding: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/aftersale/aftersale"] .center { text-align: center; }
[data-route="pkgShop/pages/aftersale/aftersale"] .card {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/aftersale/aftersale"] .card-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222222;
  margin-bottom: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/aftersale/aftersale"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgShop/pages/aftersale/aftersale"] .fine {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgShop/pages/aftersale/aftersale"] /* v4.86.506（木哥 07:52 令）：一行左右滑动，不许折行 */
.type-row {
  white-space: nowrap;
}
[data-route="pkgShop/pages/aftersale/aftersale"] .type {
  display: inline-block;
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 28);
  margin: 0 calc(var(--rpx) * 16) calc(var(--rpx) * 16) 0;
}
[data-route="pkgShop/pages/aftersale/aftersale"] .type.on {
  background: #07c160;
  color: #ffffff;
  font-weight: 600;
}
[data-route="pkgShop/pages/aftersale/aftersale"] .type.off {
  color: #bbbbbb;
  border-color: #dddddd;
}
[data-route="pkgShop/pages/aftersale/aftersale"] .reason {
  width: 100%;
  min-height: calc(var(--rpx) * 160);
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #222222;
  box-sizing: border-box;
}
[data-route="pkgShop/pages/aftersale/aftersale"] .err {
  font-size: calc(var(--rpx) * 24);
  color: #fa5151;
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 4) calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/aftersale/aftersale"] .btn-row {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/aftersale/aftersale"] .btn {
  background: #07c160;
  color: #ffffff;
  border-radius: calc(var(--rpx) * 999);
  text-align: center;
  padding: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgShop/pages/aftersale/aftersale"] .btn.dis { opacity: 0.6; }
[data-route="pkgShop/pages/aftersale/aftersale"] .done-title {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #07c160;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/aftersale/aftersale"] .row-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgShop/pages/aftersale/aftersale"] .o-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222222;
  flex: 1;
  margin-right: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/aftersale/aftersale"] .chip {
  font-size: calc(var(--rpx) * 20);
  color: #666666;
  background: #f7f7f7;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/aftersale/aftersale"] .as-row {
  padding: calc(var(--rpx) * 16) 0;
  border-bottom: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pkgShop/pages/aftersale/aftersale"] .acts {
  display: flex;
  justify-content: flex-end;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgShop/pages/aftersale/aftersale"] .act {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24);
}



/* ---- pkgShop/pages/track/track.wxss ---- */
[data-route="pkgShop/pages/track/track"] /* 物流轨迹（v4.86.397）—— 版式照 pkgShop 现有页 */
.page {
  padding: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/track/track"] .card {
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 24);
  margin-bottom: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/track/track"] .card-title {
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222222;
}
[data-route="pkgShop/pages/track/track"] .muted {
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgShop/pages/track/track"] .fine {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  margin-top: calc(var(--rpx) * 8);
}
[data-route="pkgShop/pages/track/track"] .row-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgShop/pages/track/track"] .btn-row {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/track/track"] .btn {
  background: #07c160;
  color: #ffffff;
  border-radius: calc(var(--rpx) * 999);
  text-align: center;
  padding: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgShop/pages/track/track"] .tl-row {
  display: flex;
  padding: calc(var(--rpx) * 16) 0;
}
[data-route="pkgShop/pages/track/track"] .tl-dot {
  width: calc(var(--rpx) * 14);
  height: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: #dddddd;
  margin: calc(var(--rpx) * 10) calc(var(--rpx) * 20) 0 calc(var(--rpx) * 4);
}
[data-route="pkgShop/pages/track/track"] .tl-row.first .tl-dot {
  background: #07c160;
}
[data-route="pkgShop/pages/track/track"] .tl-body {
  flex: 1;
}
[data-route="pkgShop/pages/track/track"] .tl-text {
  font-size: calc(var(--rpx) * 24);
  color: #444444;
  line-height: 1.6;
}
[data-route="pkgShop/pages/track/track"] .tl-row.first .tl-text {
  color: #222222;
  font-weight: 600;
}



/* ---- pkgShop/pages/member/member.wxss ---- */
[data-route="pkgShop/pages/member/member"] /* 我的会员（额度 + 价目 + 券包 + 权益）
 * v4.86.494（木哥 2026-10-24 23:3x 两张截图 + 「这些和收费有关的弹窗弹框和页面，
 * 都设计成金色的ui风格。全站统一这种风格。」）：
 *   原来是白卡 + 品牌绿按钮，和「开通 / 续费」这件事不是一套语言。
 *   改成金铜系（与 components/pay-pop、pages/wallet、styles/gold.wxss 同一套）：
 *     主金 #a8792c / 亮金 #d8b25c / 边金 #c9a15c / 底金 #fdf8ec / 深棕 #6b4d14 / 金灰 #b0a488
 *   只改皮：额度、价目、券包的字段与顺序一字未动。
 *
 * v7.0.037（木哥 20:0x「会员页风格和付费弹窗页统一」）：
 *   口径改成与 components/pay-pop **同一张表**，不再各调各的：
 *     底色  #fffdf8 → #fffaef → #fdf4e2（弹层那张纸）
 *     卡边  #eddfbd ／ 选中底 #fffdf8→#fdf5e0→#f8eac6 ／ 卡名 #4a3208 800
 *     正文  #4a3a17 calc(var(--rpx) * 28) ／ 小注 #96907e calc(var(--rpx) * 20)
 *     主键  金渐变 #fbeecd→#cfa64f，calc(var(--rpx) * 82) 高、calc(var(--rpx) * 10) 圆角（原小店橙胶囊退场）
 *   布局一个都没动：额度卡 → 三档 → 权益 → 券包 → 权益说明。 */

.mb-wrap {
  min-height: calc(var(--vh) * 100);
  padding: calc(var(--rpx) * 24);
  box-sizing: border-box;
  background: linear-gradient(180deg, #fffdf8 0%, #fffaef 46%, #fdf4e2 100%);
}
[data-route="pkgShop/pages/member/member"] /* 页头金带：与 pay-pop 弹层同一件衣服 */
.mb-hero {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 4) calc(var(--rpx) * 26);
}
[data-route="pkgShop/pages/member/member"] .mb-hero-band {
  flex-shrink: 0;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 24);
  border-radius: calc(var(--rpx) * 999);
  background: linear-gradient(135deg, #d8b25c, #a8792c);
  color: #fff8e4;
  font-size: calc(var(--rpx) * 24);
  font-weight: 700;
  letter-spacing: calc(var(--rpx) * 4);
}
[data-route="pkgShop/pages/member/member"] /* v7.0.136（木哥令）：页头副行文字摘掉，.mb-hero 的留白（padding）保留 ——
   那一段现在是空的，就是木哥要的「空行留下」。 */

.mb-card {
  padding: calc(var(--rpx) * 28);
  margin-bottom: calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 20);
  border: calc(var(--rpx) * 1) solid #eddfbd;
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 20) rgba(168, 121, 44, 0.08);
}
[data-route="pkgShop/pages/member/member"] .mb-title {
  margin-bottom: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 32);
  font-weight: 800;
  color: #4a3208;
}
[data-route="pkgShop/pages/member/member"] .mb-line {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #4a3a17;
}
[data-route="pkgShop/pages/member/member"] /* 生效中 / 快到期那一行：主金加粗，不铺底色 */
.mb-green {
  color: #a8791a;
  font-weight: 700;
}
[data-route="pkgShop/pages/member/member"] .mb-btns {
  display: flex;
  gap: calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/member/member"] .mb-btn {
  flex: 1;
  height: calc(var(--rpx) * 82);
  line-height: calc(var(--rpx) * 82);
  font-size: calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 10);
  background: #fffdf8;
  border: calc(var(--rpx) * 1) solid #e3cfa3;
  color: #6b4a12;
}
[data-route="pkgShop/pages/member/member"] .mb-btn::after {
  border: none;
}
[data-route="pkgShop/pages/member/member"] /* 主键：v7.0.037 回到弹层那颗金键（木哥令「和付费弹窗统一风格」）——
   金渐变 #fbeecd→#cfa64f、calc(var(--rpx) * 10) 圆角、深棕字，与 components/pay-pop 的 .pp-btn 同一张表。
   v4.86.523 的小店橙胶囊退场（那只属于商城支付，不属于会员）。 */
.mb-btn-main {
  background: linear-gradient(180deg, #fbeecd 0%, #eed79f 46%, #dcb96a 78%, #cfa64f 100%);
  border-color: transparent;
  color: #6b4a12;
  font-weight: 800;
  box-shadow: inset 0 calc(var(--rpx) * 1) 0 rgba(255, 255, 255, 0.8), inset 0 0 0 calc(var(--rpx) * 1) rgba(255, 255, 255, 0.5),
    0 calc(var(--rpx) * 8) calc(var(--rpx) * 24) rgba(150, 105, 25, 0.2);
}
[data-route="pkgShop/pages/member/member"] .mb-row {
  display: flex;
  align-items: baseline;
  gap: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 12) 0;
  border-bottom: calc(var(--rpx) * 1) solid #f4ebd8;
}
[data-route="pkgShop/pages/member/member"] .mb-price {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #a8792c;
}
[data-route="pkgShop/pages/member/member"] .mb-per {
  font-size: calc(var(--rpx) * 20);
  color: #b0a488;
}
[data-route="pkgShop/pages/member/member"] .mb-benefit {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 28);
  line-height: 1.6;
  color: #4a3a17;
}
[data-route="pkgShop/pages/member/member"] .mb-fine {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  line-height: 1.6;
  color: #96907e;
}
[data-route="pkgShop/pages/member/member"] /* 点评券包 · 可以送人（B5 · 券包 B 案）—— 券包退出比价位后的独立卡 */
.mb-gift {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/member/member"] .mb-gift-l {
  flex: 1;
}
[data-route="pkgShop/pages/member/member"] .mb-gift-n {
  font-size: calc(var(--rpx) * 28);
  font-weight: 700;
  color: #3a2e12;
}
[data-route="pkgShop/pages/member/member"] .mb-gift-s {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #96907e;
}
[data-route="pkgShop/pages/member/member"] .mb-gift-buy {
  flex: 0 0 auto;
  padding: 0 calc(var(--rpx) * 28);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/member/member"] /* v7.0.057⑤：券包卡里的余量一行（原「我的额度」卡撤下后信息不丢） */
.mb-gift-left {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  color: #96824a;
}
[data-route="pkgShop/pages/member/member"] /* 券包卡底两格（输码领券 / 复制说明）：等宽同一行，字压一档，不挤 */
.mb-btns-foot {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/member/member"] .mb-btns-foot .mb-btn {
  font-size: calc(var(--rpx) * 24);
  line-height: 1.2;
  padding: 0 calc(var(--rpx) * 12);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgShop/pages/member/member"] /* ======================================================================
 * v7.0.016（木哥 00:5x「我的会员页，整改成弹出会员购买页的版式，变成页面结构即可」）：
 * 付费弹窗的会员三档横滑卡 + 权益明细搬进页面（页内直接开通，不再借弹窗）。
 * 样式与 components/pay-pop 同一套金铜口径，只是类名换成 mb- 前缀。
 * ==================================================================== */

/* 卡区头：左「会员卡 · 选一档」右「N 档」 */
.mb-tierh {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: calc(var(--rpx) * 24);
  color: #a1834a;
  margin: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/member/member"] /* 横滑卡 */
.mb-tiers {
  width: 100%;
  white-space: nowrap;
  /* v7.0.139：上留白挪到 .mb-tierrow 上（见下），scroll-view 自己不留 —— 双份会变成
     calc(var(--rpx) * 48) 的大空隙。 */
  padding-top: 0;
}
[data-route="pkgShop/pages/member/member"] .mb-tierrow {
  display: inline-flex;
  align-items: flex-start;
  /* v7.0.139（136 真机仍不见角标的病根补刀）：留白必须落在**卡片自己所在的这一行**上。
     上一版把 calc(var(--rpx) * 24) 加在 scroll-view 上，原生横滑容器对 padding 的处理各家不一
     （高度按内容算时 padding 不进盒，悬出的角标照样被裁）。改成给 .mb-tierrow 加
     padding-top：行是普通流元素，padding 一定算进自身高度，卡片整体下移 calc(var(--rpx) * 26)，
     角标悬出的那 calc(var(--rpx) * 12) 就实实在在落在容器内。 */
  padding-top: calc(var(--rpx) * 26);
}
[data-route="pkgShop/pages/member/member"] .mb-tcard {
  position: relative;
  width: calc(var(--rpx) * 218);
  margin-right: calc(var(--rpx) * 12);
  border: calc(var(--rpx) * 1) solid #e6d3a8;
  border-radius: calc(var(--rpx) * 22);
  background: #ffffff;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 16) calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/member/member"] .mb-tcard-on {
  background: linear-gradient(135deg, #fffdf8 0%, #fdf5e0 58%, #f8eac6 100%);
  border-color: #c79733;
  box-shadow: 0 calc(var(--rpx) * 6) calc(var(--rpx) * 20) rgba(168, 121, 44, 0.16);
}
[data-route="pkgShop/pages/member/member"] .mb-tn {
  font-size: calc(var(--rpx) * 32);
  font-weight: 800;
  color: #4a3a17;
  letter-spacing: calc(var(--rpx) * 0.4);
}
[data-route="pkgShop/pages/member/member"] .mb-tp {
  font-size: calc(var(--rpx) * 40);
  font-weight: 800;
  color: #a8791a;
  line-height: 1.25;
  margin-top: calc(var(--rpx) * 2);
}
[data-route="pkgShop/pages/member/member"] .mb-ty {
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  margin-left: calc(var(--rpx) * 2);
}
[data-route="pkgShop/pages/member/member"] .mb-td {
  font-size: calc(var(--rpx) * 24);
  color: #a8853f;
  margin-top: calc(var(--rpx) * 2);
  line-height: 1.4;
}
[data-route="pkgShop/pages/member/member"] /* 会员卡角标（v7.0.137 定形态：骑在卡顶右角那枚小标，不是横幅顶条；
   v7.0.139 定颜色：红 → **炫耀金**）。
   字号 calc(var(--rpx) * 20)（样式规范五档内最小）：最长「点评不限次」5 字右对齐左边界约 calc(var(--rpx) * 84)，
   正好让开「全效」这类两字档名；nowrap 保证不折行、不撑高压到价格。
   被裁的事在容器：见 .mb-tierrow 的 padding-top。 */
.mb-tbadge {
  position: absolute;
  top: calc(var(--rpx) * -12);
  right: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 3) calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 8);
  /* v7.0.139（木哥令「把角标的风格改为炫耀金的风格」）：红改金 ——
     亮金渐变（左上吃光 → 右下压深）+ 白内高光 + 细金描边 + 深棕字，
     与卡片的金边、金价目同一族，角标自己跳出来但不抢「全效」档名。 */
  background: linear-gradient(135deg, #fdf3cd 0%, #eccd76 36%, #d4a93f 70%, #b8862a 100%);
  border: calc(var(--rpx) * 1) solid #f7e6b4;
  color: #4a3410;
  font-weight: 700;
  letter-spacing: calc(var(--rpx) * 0.6);
  font-size: calc(var(--rpx) * 20);
  line-height: 1.35;
  white-space: nowrap;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(160, 112, 26, 0.35),
    inset 0 calc(var(--rpx) * 1) 0 rgba(255, 255, 255, 0.75);
}
[data-route="pkgShop/pages/member/member"] /* 选中档全部权益（贴在卡下、页内主键之上） */
.mb-perkbox {
  border: calc(var(--rpx) * 1) solid #e3cfa3;
  border-radius: calc(var(--rpx) * 10);
  background: linear-gradient(135deg, #fffdf8 0%, #fdf5e0 58%, #f8eac6 100%);
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pkgShop/pages/member/member"] .mb-perkh {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10) calc(var(--rpx) * 10) 0 0;
  background: rgba(201, 151, 51, 0.14);
  font-size: calc(var(--rpx) * 24);
  color: #8a6b28;
}
[data-route="pkgShop/pages/member/member"] /* 权益行：勾 + 文案（复用 .mb-benefit 的字号行距） */
.mb-perkline {
  display: flex;
  align-items: flex-start;
  gap: calc(var(--rpx) * 10);
  padding: 0 calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/member/member"] /* v7.0.057⑥：同一只盒子里分两段（上面是本档专属、下面全档都含），
   小标题做分隔，字号压在 calc(var(--rpx) * 20)、只上不下的虚线，不抢主文案 */
.mb-perksub {
  margin: calc(var(--rpx) * 12) calc(var(--rpx) * 20) calc(var(--rpx) * 4);
  padding-top: calc(var(--rpx) * 10);
  border-top: calc(var(--rpx) * 1) dashed #e3cfa3;
  font-size: calc(var(--rpx) * 20);
  color: #a8791a;
  letter-spacing: calc(var(--rpx) * 1);
}
[data-route="pkgShop/pages/member/member"] .mb-ck {
  color: #a8791a;
  font-weight: 700;
}
[data-route="pkgShop/pages/member/member"] /* 价格待确认提醒行 */
.mb-warn {
  color: #b8543c;
}
[data-route="pkgShop/pages/member/member"] /* v7.0.057⑤⑥：会员状态细行 / 双键并排 / 加大的开通主键 */
.mb-actline {
  margin: calc(var(--rpx) * 16) calc(var(--rpx) * 24) 0;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: #f6efdd;
  color: #8a6b2f;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/member/member"] .mb-gift-btns {
  display: flex;
  flex-direction: column;
  gap: calc(var(--rpx) * 12);
  flex: none;
}
[data-route="pkgShop/pages/member/member"] .mb-buy-big {
  margin-top: calc(var(--rpx) * 18);
  width: 100%;
}
[data-route="pkgShop/pages/member/member"] /* ======================================================================
 * 权益对照表（2026-10-30 换版）
 * 三列一屏：首列权益名，后面 免费 / 陪练 / 全效 等分。
 * 与 .mb-perkh 同一套金：表头 14% 金底 + 边金 calc(var(--rpx) * 1)，不做斑马纹（会员页没有第二张表）。
 * ==================================================================== */

.mb-mx {
  margin-top: calc(var(--rpx) * 4);
  border: calc(var(--rpx) * 1) solid #e3cfa3;
  border-radius: calc(var(--rpx) * 10);
  overflow: hidden;
}
[data-route="pkgShop/pages/member/member"] .mb-mx-row {
  display: flex;
  align-items: stretch;
  border-top: calc(var(--rpx) * 1) solid #f0e3c8;
}
[data-route="pkgShop/pages/member/member"] .mb-mx-row:first-child {
  border-top: none;
}
[data-route="pkgShop/pages/member/member"] .mb-mx-head {
  background: rgba(201, 151, 51, 0.14);
}
[data-route="pkgShop/pages/member/member"] .mb-mx-k {
  /* v7.0.136：权益行从 5 条补到 13 条，行名变长（「人工复核的单 24 小时内补批」）——
     首列放到 40%，三列值各 20%，长名两行内说完，不挤成竖条。 */
  flex: 0 0 40%;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 10) calc(var(--rpx) * 14) calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.45;
  color: #4a3a17;
  box-sizing: border-box;
}
[data-route="pkgShop/pages/member/member"] .mb-mx-c {
  flex: 1;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.45;
  text-align: center;
  color: #6b5a35;
  box-sizing: border-box;
}
[data-route="pkgShop/pages/member/member"] .mb-mx-head .mb-mx-c {
  color: #8a6b28;
  font-weight: 700;
}



/* ---- pkgShop/pages/coach/profile.wxss ---- */
[data-route="pkgShop/pages/coach/profile"] /* 陪练主页（v4.86.419）：图 2 卡片样式 —— 大头像 / 名字+性格 tag / 在线 /
 * 擅长·口吻行 / 全文简介 / 收费行 / 邀约键；「陪」字小圆标钉在头像右下角。 */
.cp-wrap {
  padding: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/coach/profile"] .cp-tip {
  text-align: center;
  color: #999999;
  font-size: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 80) 0;
}
[data-route="pkgShop/pages/coach/profile"] .cp-card {
  background: #ffffff;
  border: calc(var(--rpx) * 2) solid #e5e5e5;
  border-radius: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/coach/profile"] .cp-head {
  display: flex;
  align-items: center;
}
[data-route="pkgShop/pages/coach/profile"] .cp-ava-wrap {
  position: relative;
  flex-shrink: 0;
}
[data-route="pkgShop/pages/coach/profile"] .cp-avatar {
  width: calc(var(--rpx) * 128);
  height: calc(var(--rpx) * 128);
  border-radius: 50%;
  background: #f0f0f0;
}
[data-route="pkgShop/pages/coach/profile"] .cp-avatar-fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 40);
  color: #8a6320;
  font-weight: bold;
}
[data-route="pkgShop/pages/coach/profile"] .cp-pei {
  position: absolute;
  right: calc(var(--rpx) * -4);
  bottom: calc(var(--rpx) * -4);
  width: calc(var(--rpx) * 40);
  height: calc(var(--rpx) * 40);
  line-height: calc(var(--rpx) * 40);
  text-align: center;
  border-radius: 50%;
  background: #8a6320;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  font-weight: bold;
  border: calc(var(--rpx) * 4) solid #ffffff;
  box-sizing: content-box;
}
[data-route="pkgShop/pages/coach/profile"] .cp-head-main {
  flex: 1;
  margin-left: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/coach/profile"] .cp-row1 {
  display: flex;
  align-items: center;
  gap: calc(var(--rpx) * 14);
}
[data-route="pkgShop/pages/coach/profile"] .cp-name {
  font-size: calc(var(--rpx) * 32);
  font-weight: bold;
  color: #111111;
}
[data-route="pkgShop/pages/coach/profile"] .cp-tag {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
  border: calc(var(--rpx) * 1) solid #07c160;
  border-radius: calc(var(--rpx) * 999);
  padding: calc(var(--rpx) * 2) calc(var(--rpx) * 14);
}
[data-route="pkgShop/pages/coach/profile"] .cp-status {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgShop/pages/coach/profile"] .cp-line {
  margin-top: calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 24);
  color: #666666;
}
[data-route="pkgShop/pages/coach/profile"] .cp-bio {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #333333;
  line-height: 1.7;
}
[data-route="pkgShop/pages/coach/profile"] .cp-price {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  background: #fffdf8;
  border-radius: calc(var(--rpx) * 14);
  display: flex;
  align-items: baseline;
  gap: calc(var(--rpx) * 14);
}
[data-route="pkgShop/pages/coach/profile"] .cp-price-main {
  font-size: calc(var(--rpx) * 28);
  font-weight: bold;
  color: #8a6320;
}
[data-route="pkgShop/pages/coach/profile"] .cp-price-sub {
  font-size: calc(var(--rpx) * 24);
  color: #a2a2a2;
}
[data-route="pkgShop/pages/coach/profile"] .cp-invite {
  margin-top: calc(var(--rpx) * 28);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: bold;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pkgShop/pages/coach/profile"] /* v4.86.448（木哥「与家长交流」）：带给陪练的那句话 —— 与真人老师主页同一个位置 */
.cp-note-wrap {
  margin-top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 20);
  background: #fafafa;
  border-radius: calc(var(--rpx) * 14);
}
[data-route="pkgShop/pages/coach/profile"] .cp-note {
  width: 100%;
  height: calc(var(--rpx) * 96);
  font-size: calc(var(--rpx) * 24);
  color: #333333;
  line-height: 1.6;
  box-sizing: border-box;
}
[data-route="pkgShop/pages/coach/profile"] .cp-note-ph {
  color: #a2a2a2;
}
[data-route="pkgShop/pages/coach/profile"] /* 这一篇的单：谁接了、做到哪一步 */
.cp-order {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgShop/pages/coach/profile"] .cp-invite-note {
  margin-top: calc(var(--rpx) * 12);
  text-align: center;
  font-size: calc(var(--rpx) * 20);
  color: #a2a2a2;
}
[data-route="pkgShop/pages/coach/profile"] .cp-fine {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  text-align: center;
  padding: calc(var(--rpx) * 20) 0 calc(var(--rpx) * 40);
}
[data-route="pkgShop/pages/coach/profile"] /* v7.0.154（木哥令「10 位陪练邀约不上」）：选作业面板 —— 从首页老师榜进来也能约。
   遮罩 + 底部抽屉，行版式与名单页一致（日期 / 孩子名 / 备注首句）。 */
.cp-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 20;
}
[data-route="pkgShop/pages/coach/profile"] .cp-sheet {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 21;
  background: #ffffff;
  border-radius: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0 0;
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 28) calc(var(--rpx) * 40);
  box-sizing: border-box;
}
[data-route="pkgShop/pages/coach/profile"] .cp-sheet-h {
  font-size: calc(var(--rpx) * 28);
  font-weight: bold;
  color: #111111;
  text-align: center;
  padding-bottom: calc(var(--rpx) * 20);
  border-bottom: calc(var(--rpx) * 1) solid #f0f0f0;
}
[data-route="pkgShop/pages/coach/profile"] .cp-sheet-tip {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  text-align: center;
  padding: calc(var(--rpx) * 48) 0;
}
[data-route="pkgShop/pages/coach/profile"] .cp-sheet-list {
  max-height: calc(var(--rpx) * 560);
}
[data-route="pkgShop/pages/coach/profile"] .cp-pick {
  padding: calc(var(--rpx) * 24) calc(var(--rpx) * 8);
  border-bottom: calc(var(--rpx) * 1) solid #f5f5f5;
  display: flex;
  align-items: baseline;
  gap: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/coach/profile"] .cp-pick-d {
  font-size: calc(var(--rpx) * 24);
  color: #8a6320;
  font-weight: bold;
  flex-shrink: 0;
}
[data-route="pkgShop/pages/coach/profile"] .cp-pick-n {
  font-size: calc(var(--rpx) * 24);
  color: #333333;
  flex-shrink: 0;
}
[data-route="pkgShop/pages/coach/profile"] .cp-pick-s {
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  flex: 1;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
[data-route="pkgShop/pages/coach/profile"] .cp-sheet-x {
  margin-top: calc(var(--rpx) * 20);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  padding: calc(var(--rpx) * 16) 0;
}



/* ---- pkgShop/pages/card/card.wxss ---- */
[data-route="pkgShop/pages/card/card"] /* 学习卡详情（v7.0.156）· 字号只走 20/24/28/32/40 五档 · 价格橙 #ff6e26 · 主色绿 #07c160 */

.lcd {
  padding-bottom: calc(var(--rpx) * 170);
}
[data-route="pkgShop/pages/card/card"] /* 封面 */
.lcd-cover {
  height: calc(var(--rpx) * 380);
  background: #dfe3e8;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgShop/pages/card/card"] .lcd-cover-img {
  width: 100%;
  height: 100%;
}
[data-route="pkgShop/pages/card/card"] .lcd-cover-t {
  padding: 0 calc(var(--rpx) * 40);
  font-size: calc(var(--rpx) * 28);
  color: #7a828b;
  text-align: center;
}
[data-route="pkgShop/pages/card/card"] /* 头部信息 */
.lcd-head {
  margin-top: calc(var(--rpx) * -28);
  border-radius: calc(var(--rpx) * 10);
}
[data-route="pkgShop/pages/card/card"] .lcd-title {
  font-size: calc(var(--rpx) * 32);
  color: #1a1a1a;
  line-height: 1.5;
  font-weight: 600;
}
[data-route="pkgShop/pages/card/card"] .lcd-price {
  display: flex;
  align-items: baseline;
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/card/card"] .lcd-num {
  font-size: calc(var(--rpx) * 40);
  color: #ff6e26;
  font-weight: 700;
}
[data-route="pkgShop/pages/card/card"] .lcd-unit {
  font-size: calc(var(--rpx) * 24);
  color: #ff6e26;
  margin-left: calc(var(--rpx) * 6);
}
[data-route="pkgShop/pages/card/card"] .lcd-old {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  margin-left: calc(var(--rpx) * 20);
  text-decoration: line-through;
}
[data-route="pkgShop/pages/card/card"] .lcd-meta {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgShop/pages/card/card"] .lcd-mine {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 10);
  background: #fff8e6;
  border: calc(var(--rpx) * 2) solid #f5e0a8;
  font-size: calc(var(--rpx) * 24);
  color: #8a6a1f;
}
[data-route="pkgShop/pages/card/card"] .lcd-mine.on {
  background: #e8f8ef;
  border-color: #b7e6c9;
  color: #07843f;
}
[data-route="pkgShop/pages/card/card"] .lcd-sold {
  margin-top: calc(var(--rpx) * 10);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pkgShop/pages/card/card"] /* 目录 / 详情 */
.lcd-sec {
  margin-top: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/card/card"] .lcd-h {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  font-weight: 600;
  margin-bottom: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/card/card"] .lcd-li {
  font-size: calc(var(--rpx) * 24);
  color: #555555;
  line-height: 1.85;
}
[data-route="pkgShop/pages/card/card"] .lcd-more {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgShop/pages/card/card"] .lcd-p {
  font-size: calc(var(--rpx) * 24);
  color: #555555;
  line-height: 1.9;
  margin-bottom: calc(var(--rpx) * 10);
}
[data-route="pkgShop/pages/card/card"] .lcd-img {
  width: 100%;
  margin-top: calc(var(--rpx) * 12);
  border-radius: calc(var(--rpx) * 10);
  background: #f2f2f2;
}
[data-route="pkgShop/pages/card/card"] .lcd-src {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #4a90d9;
}
[data-route="pkgShop/pages/card/card"] /* 兑换须知（醒目但不用红色吓人） */
.lcd-note {
  margin: calc(var(--rpx) * 16) calc(var(--rpx) * 8) 0;
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 10);
  background: #fff8e6;
  border: calc(var(--rpx) * 2) solid #f5e0a8;
  font-size: calc(var(--rpx) * 24);
  color: #8a6a1f;
  line-height: 1.8;
}
[data-route="pkgShop/pages/card/card"] .lcd-note-b {
  font-weight: 600;
  color: #a8620e;
}
[data-route="pkgShop/pages/card/card"] .lcd-kefu {
  margin: calc(var(--rpx) * 16) calc(var(--rpx) * 8) 0;
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgShop/pages/card/card"] /* 底部兑换栏 */
.lcd-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 24) calc(calc(var(--rpx) * 18) + env(safe-area-inset-bottom));
  background: #ffffff;
  border-top: calc(var(--rpx) * 2) solid #eeeeee;
  z-index: 20;
}
[data-route="pkgShop/pages/card/card"] .lcd-bar-p {
  flex: 1;
}
[data-route="pkgShop/pages/card/card"] .lcd-bar-num {
  font-size: calc(var(--rpx) * 40);
  color: #ff6e26;
  font-weight: 700;
}
[data-route="pkgShop/pages/card/card"] .lcd-bar-unit {
  font-size: calc(var(--rpx) * 24);
  color: #ff6e26;
}
[data-route="pkgShop/pages/card/card"] .lcd-bar-btn {
  padding: 0 calc(var(--rpx) * 48);
  height: calc(var(--rpx) * 76);
  line-height: calc(var(--rpx) * 76);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgShop/pages/card/card"] .lcd-bar-btn.off {
  background: #cfd8d2;
  color: #ffffff;
}
[data-route="pkgShop/pages/card/card"] .lcd-btn {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/card/card"] /* 弹窗 */
.lcd-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.42);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 40;
}
[data-route="pkgShop/pages/card/card"] .lcd-dlg {
  width: calc(var(--rpx) * 620);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  overflow: hidden;
}
[data-route="pkgShop/pages/card/card"] .lcd-dlg-h {
  padding: calc(var(--rpx) * 32) 0 calc(var(--rpx) * 8);
  text-align: center;
  font-size: calc(var(--rpx) * 32);
  color: #1a1a1a;
  font-weight: 600;
}
[data-route="pkgShop/pages/card/card"] .lcd-dlg-bd {
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 32) calc(var(--rpx) * 8);
}
[data-route="pkgShop/pages/card/card"] .lcd-ln {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin: calc(var(--rpx) * 12) 0;
  font-size: calc(var(--rpx) * 24);
  color: #888888;
}
[data-route="pkgShop/pages/card/card"] .lcd-ln-v {
  max-width: calc(var(--rpx) * 400);
  text-align: right;
  color: #1a1a1a;
}
[data-route="pkgShop/pages/card/card"] .lcd-orange {
  color: #ff6e26;
  font-weight: 600;
}
[data-route="pkgShop/pages/card/card"] .lcd-dlg-tip {
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 32) calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.75;
}
[data-route="pkgShop/pages/card/card"] .lcd-dlg-acts {
  display: flex;
  border-top: calc(var(--rpx) * 2) solid #f0f0f0;
}
[data-route="pkgShop/pages/card/card"] .lcd-dlg-act {
  flex: 1;
  text-align: center;
  padding: calc(var(--rpx) * 26) 0;
  font-size: calc(var(--rpx) * 28);
  color: #666666;
}
[data-route="pkgShop/pages/card/card"] .lcd-dlg-act.ok {
  color: #07c160;
  font-weight: 600;
  border-left: calc(var(--rpx) * 2) solid #f0f0f0;
}
[data-route="pkgShop/pages/card/card"] /* v7.0.157：价格改「折后价 + 原价」两行；内部会员档与阶梯说明各占一行 */
.lcd-internal {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 20);
  background: #fff4e8;
  color: #b26a00;
  border-radius: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/card/card"] .lcd-step {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 20);
  background: #f2f7f4;
  color: #4a6b58;
  border-radius: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  line-height: 1.5;
}
[data-route="pkgShop/pages/card/card"] .lcd-bar-btn.ghost {
  background: #ffffff;
  color: #07c160;
  border: calc(var(--rpx) * 1) solid #07c160;
  padding: 0 calc(var(--rpx) * 32);
}
[data-route="pkgShop/pages/card/card"] .lcd-bar {
  gap: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/card/card"] /* v7.0.157：兑换单浮动入口，压在底部兑换栏上方 */
/* v7.0.162：底下多了一条依附说明，兑换单浮动入口整体上移让位 */
.lcd-queue {
  position: fixed;
  right: calc(var(--rpx) * 24);
  bottom: calc(var(--rpx) * 184);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 24);
  background: #fff4e8;
  color: #b26a00;
  border: calc(var(--rpx) * 1) solid #ffd9b0;
  border-radius: calc(var(--rpx) * 999);
  font-size: calc(var(--rpx) * 24);
  z-index: 20;
}
[data-route="pkgShop/pages/card/card"] /* ===== v7.0.160 折扣营销位（木哥令：折扣要在商品页体现，兑换时直接给折后积分） ===== */

/* 封面左上角折扣角标（货架 tag='2折特惠' 同口径） */
.lcd-badge {
  position: absolute;
  left: 0;
  top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 20) calc(var(--rpx) * 8) calc(var(--rpx) * 16);
  border-radius: 0 calc(var(--rpx) * 999) calc(var(--rpx) * 999) 0;
  background: linear-gradient(90deg, #ff3b30, #ff6e26);
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
  font-weight: 600;
  letter-spacing: calc(var(--rpx) * 2);
  box-shadow: 0 calc(var(--rpx) * 4) calc(var(--rpx) * 12) rgba(255, 59, 48, 0.35);
}
[data-route="pkgShop/pages/card/card"] .lcd-cover {
  position: relative;
}
[data-route="pkgShop/pages/card/card"] /* 头部「立省」胶囊：贴着划线原价，一眼看到省了多少 */
.lcd-savepill {
  margin-left: calc(var(--rpx) * 14);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: #ffece6;
  border: calc(var(--rpx) * 1) solid #ffc7b3;
  color: #ff3b30;
  font-size: calc(var(--rpx) * 20);
  font-weight: 600;
}
[data-route="pkgShop/pages/card/card"] /* 多兑更省阶梯条：四档格子，当前档（首件 2 折）高亮 */
.lcd-step-h {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  font-weight: 600;
}
[data-route="pkgShop/pages/card/card"] .lcd-step-row {
  display: flex;
  gap: calc(var(--rpx) * 12);
  margin-top: calc(var(--rpx) * 14);
}
[data-route="pkgShop/pages/card/card"] .lcd-step-i {
  flex: 1;
  padding: calc(var(--rpx) * 12) 0;
  text-align: center;
  border-radius: calc(var(--rpx) * 12);
  background: #f7f8fa;
  border: calc(var(--rpx) * 1) solid #e5e8eb;
  display: flex;
  flex-direction: column;
  gap: calc(var(--rpx) * 4);
}
[data-route="pkgShop/pages/card/card"] .lcd-step-i.on {
  background: #fff1ea;
  border-color: #ffb596;
}
[data-route="pkgShop/pages/card/card"] .lcd-step-k {
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pkgShop/pages/card/card"] .lcd-step-i.on .lcd-step-k {
  color: #ff6e26;
}
[data-route="pkgShop/pages/card/card"] .lcd-step-v {
  font-size: calc(var(--rpx) * 28);
  color: #555555;
  font-weight: 600;
}
[data-route="pkgShop/pages/card/card"] .lcd-step-i.on .lcd-step-v {
  color: #ff3b30;
}
[data-route="pkgShop/pages/card/card"] .lcd-step-t {
  margin-top: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 24);
  color: #4a6b58;
  line-height: 1.6;
}
[data-route="pkgShop/pages/card/card"] /* 底部兑换栏：折后价当主角，原价划线 + 省额一行小字 */
.lcd-bar-row {
  display: flex;
  align-items: baseline;
}
[data-route="pkgShop/pages/card/card"] .lcd-bar-old {
  margin-left: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  text-decoration: line-through;
}
[data-route="pkgShop/pages/card/card"] /* v7.0.162（木哥令）：红字说明独占一行，依附在按键栏上沿——
   和白底按键栏零缝隙连成一体，浅红渐变 + 上圆角，视觉上像从按键栏长出来的标签 */
.lcd-bar-note {
  position: fixed;
  left: 0;
  right: 0;
  bottom: calc(calc(var(--rpx) * 112) + env(safe-area-inset-bottom));
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 24);
  background: linear-gradient(180deg, #fff3ec, #ffe6da);
  border-top: calc(var(--rpx) * 1) solid #ffd2bd;
  border-radius: calc(var(--rpx) * 20) calc(var(--rpx) * 20) 0 0;
  color: #ff3b30;
  font-size: calc(var(--rpx) * 24);
  text-align: center;
  letter-spacing: calc(var(--rpx) * 1);
  z-index: 19;
}
[data-route="pkgShop/pages/card/card"] /* 兑换成功弹窗里的激活码块（与 card-cart 同款） */
.lcd-code {
  display: flex;
  align-items: center;
  margin: calc(var(--rpx) * 8) 0;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 12);
  background: #f2fbf5;
  border: calc(var(--rpx) * 2) dashed #b7e6c9;
}
[data-route="pkgShop/pages/card/card"] .lcd-code-v {
  flex: 1;
  font-family: Menlo, Consolas, monospace;
  font-size: calc(var(--rpx) * 28);
  letter-spacing: calc(var(--rpx) * 2);
  color: #1a1a1a;
}
[data-route="pkgShop/pages/card/card"] .lcd-code-c {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  color: #fff;
  font-size: calc(var(--rpx) * 20);
}



/* ---- pkgShop/pages/my-cards/my-cards.wxss ---- */
[data-route="pkgShop/pages/my-cards/my-cards"] /* 我的学习卡（v7.0.156）· 字号只走 20/24/28/32/40 五档 */

.lmc {
  padding-bottom: calc(var(--rpx) * 40);
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-item {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 8) calc(var(--rpx) * 16);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 10);
  border: calc(var(--rpx) * 2) solid #eeeeee;
  overflow: hidden;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-top {
  display: flex;
  align-items: flex-start;
  padding: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-cover {
  width: calc(var(--rpx) * 140);
  height: calc(var(--rpx) * 140);
  border-radius: calc(var(--rpx) * 10);
  background: #eef1f4;
  flex-shrink: 0;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-cover-no {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 20);
  color: #9aa3ad;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-body {
  flex: 1;
  padding: 0 calc(var(--rpx) * 16);
  min-width: 0;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-title {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-meta {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 20);
  color: #888888;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-st {
  flex-shrink: 0;
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 999);
  background: #fff8e6;
  border: calc(var(--rpx) * 2) solid #f5e0a8;
  color: #8a6a1f;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-st.on {
  background: #e8f8ef;
  border-color: #b7e6c9;
  color: #07843f;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-foot {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 16) calc(var(--rpx) * 16);
  border-top: calc(var(--rpx) * 2) solid #f5f5f5;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-tip {
  flex: 1;
  font-size: calc(var(--rpx) * 20);
  color: #999999;
  line-height: 1.5;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-act {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 26);
  height: calc(var(--rpx) * 60);
  line-height: calc(var(--rpx) * 60);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-foot-code {
  flex-direction: column;
  align-items: stretch;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-code {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 20);
  border-radius: calc(var(--rpx) * 12);
  background: #f2fbf5;
  border: calc(var(--rpx) * 2) dashed #b7e6c9;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-code-k {
  font-size: calc(var(--rpx) * 20);
  color: #07843f;
  margin-right: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-code-v {
  flex: 1;
  font-family: Menlo, Consolas, monospace;
  font-size: calc(var(--rpx) * 32);
  letter-spacing: calc(var(--rpx) * 2);
  color: #1a1a1a;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-code-c {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-foot-code .lmc-tip {
  margin-top: calc(var(--rpx) * 10);
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-fine {
  margin: calc(var(--rpx) * 8) calc(var(--rpx) * 16) 0;
  font-size: calc(var(--rpx) * 20);
  color: #aaaaaa;
  line-height: 1.7;
}
[data-route="pkgShop/pages/my-cards/my-cards"] .lmc-btn {
  margin-top: calc(var(--rpx) * 24);
}



/* ---- pkgShop/pages/card-cart/card-cart.wxss ---- */
[data-route="pkgShop/pages/card-cart/card-cart"] /* 兑换单（v7.0.157）· 字号只走 20/24/28/32/40 五档 · 价格橙 #ff6e26 · 主色绿 #07c160 */

.lcc {
  padding-bottom: calc(var(--rpx) * 180);
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-h {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #1f2d26;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-save {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #ff6e26;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-tip {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #6b7b72;
  line-height: 1.5;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-item {
  display: flex;
  align-items: center;
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  margin: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 16);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-cover {
  width: calc(var(--rpx) * 132);
  height: calc(var(--rpx) * 92);
  border-radius: calc(var(--rpx) * 10);
  background: #dfe3e8;
  flex: none;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-cover-no {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--rpx) * 20);
  color: #7b8b82;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-body {
  flex: 1;
  min-width: 0;
  padding: 0 calc(var(--rpx) * 16);
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-title {
  font-size: calc(var(--rpx) * 28);
  color: #1f2d26;
  line-height: 1.4;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-meta {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 20);
  color: #7b8b82;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-cost {
  margin-top: calc(var(--rpx) * 4);
  font-size: calc(var(--rpx) * 28);
  color: #ff6e26;
  font-weight: 700;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-del {
  flex: none;
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #9aa8a1;
  border: calc(var(--rpx) * 1) solid #e3e9e5;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-acts {
  display: flex;
  gap: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 8) calc(var(--rpx) * 24) 0;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-act {
  padding: calc(var(--rpx) * 14) calc(var(--rpx) * 32);
  font-size: calc(var(--rpx) * 24);
  color: #4a6b58;
  background: #f2f7f4;
  border-radius: calc(var(--rpx) * 999);
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-note {
  margin: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #fffaf3;
  border-radius: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #8a6a3c;
  line-height: 1.6;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-note-b {
  color: #ff6e26;
  font-weight: 700;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  height: calc(var(--rpx) * 120);
  padding: 0 calc(var(--rpx) * 24);
  background: #ffffff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  box-shadow: 0 calc(var(--rpx) * -2) calc(var(--rpx) * 12) rgba(0, 0, 0, 0.06);
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-bar-sum {
  font-size: calc(var(--rpx) * 40);
  color: #ff6e26;
  font-weight: 700;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-bar-unit {
  font-size: calc(var(--rpx) * 24);
  color: #ff6e26;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-bar-btn {
  padding: 0 calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 76);
  line-height: calc(var(--rpx) * 76);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-bar-btn.off {
  background: #cfd8d2;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-err {
  margin: calc(var(--rpx) * 24);
  font-size: calc(var(--rpx) * 24);
  color: #d93025;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcc-btn {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/card-cart/card-cart"] /* 兑完的弹窗（与详情页同款结构，样式各页自带） */
.lcd-mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.42);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 90;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-dlg {
  width: calc(var(--rpx) * 600);
  background: #ffffff;
  border-radius: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 32);
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-dlg-h {
  font-size: calc(var(--rpx) * 32);
  font-weight: 700;
  color: #1f2d26;
  text-align: center;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-dlg-bd {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-ln {
  display: flex;
  justify-content: space-between;
  padding: calc(var(--rpx) * 10) 0;
  font-size: calc(var(--rpx) * 24);
  color: #4a5b52;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-ln-v {
  color: #1f2d26;
  max-width: calc(var(--rpx) * 380);
  text-align: right;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-orange {
  color: #ff6e26;
  font-weight: 700;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-dlg-tip {
  margin-top: calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #7b8b82;
  line-height: 1.6;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-dlg-acts {
  display: flex;
  gap: calc(var(--rpx) * 16);
  margin-top: calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-dlg-act {
  flex: 1;
  height: calc(var(--rpx) * 80);
  line-height: calc(var(--rpx) * 80);
  text-align: center;
  border-radius: calc(var(--rpx) * 999);
  font-size: calc(var(--rpx) * 28);
  background: #f2f7f4;
  color: #4a6b58;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-dlg-act.ok {
  background: #07c160;
  color: #ffffff;
  font-weight: 600;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-code {
  display: flex;
  align-items: center;
  margin: calc(var(--rpx) * 8) 0;
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 12);
  background: #f2fbf5;
  border: calc(var(--rpx) * 2) dashed #b7e6c9;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-code-v {
  flex: 1;
  font-family: Menlo, Consolas, monospace;
  font-size: calc(var(--rpx) * 28);
  letter-spacing: calc(var(--rpx) * 2);
  color: #1a1a1a;
}
[data-route="pkgShop/pages/card-cart/card-cart"] .lcd-code-c {
  flex-shrink: 0;
  margin-left: calc(var(--rpx) * 12);
  padding: calc(var(--rpx) * 4) calc(var(--rpx) * 16);
  border-radius: calc(var(--rpx) * 999);
  background: #07c160;
  color: #fff;
  font-size: calc(var(--rpx) * 20);
}



/* ---- pkgShop/pages/gift/gift.wxss ---- */
[data-route="pkgShop/pages/gift/gift"] /* 平台礼品（积分兑换实物）v7.0.161 */
/* v7.0.171（木哥令「好物下边的商品详情页整体页面不稳，左右滑动出屏幕」）：
   页级禁横向滚动 —— 详情页/货架页任何子元素偶发超宽（图片加载瞬间、长行文本）
   都不再把整页顶出屏幕左右晃。 */
page {
  overflow-x: hidden;
}
[data-route="pkgShop/pages/gift/gift"] .lg-page {
  min-height: calc(var(--vh) * 100);
  background: #f5f6f8;
  padding-bottom: calc(var(--rpx) * 160);
}
[data-route="pkgShop/pages/gift/gift"] .lg-head {
  padding: calc(var(--rpx) * 28) calc(var(--rpx) * 28) calc(var(--rpx) * 20);
  background: linear-gradient(135deg, #ff6a3d, #ff3b30);
}
[data-route="pkgShop/pages/gift/gift"] .lg-h-t {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #ffffff;
}
[data-route="pkgShop/pages/gift/gift"] .lg-h-s {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.9);
  line-height: 1.5;
}
[data-route="pkgShop/pages/gift/gift"] .lg-cats {
  white-space: nowrap;
  background: #ffffff;
  padding: calc(var(--rpx) * 18) calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/gift/gift"] .lg-cat {
  display: inline-block;
  margin-right: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 999);
  background: #f2f3f5;
  color: #555555;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/gift/gift"] .lg-cat.on {
  background: #fff1ea;
  color: #ff3b30;
  font-weight: 600;
}
[data-route="pkgShop/pages/gift/gift"] .lg-tip {
  padding: calc(var(--rpx) * 80) calc(var(--rpx) * 28);
  text-align: center;
  color: #999999;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/gift/gift"] .lg-grid {
  display: flex;
  flex-wrap: wrap;
  padding: calc(var(--rpx) * 12);
}
[data-route="pkgShop/pages/gift/gift"] .lg-card {
  width: 50%;
  box-sizing: border-box;
  padding: calc(var(--rpx) * 8);
}
[data-route="pkgShop/pages/gift/gift"] .lg-cover {
  position: relative;
  height: calc(var(--rpx) * 300);
  border-radius: calc(var(--rpx) * 16) calc(var(--rpx) * 16) 0 0;
  background: #f0f2f5;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgShop/pages/gift/gift"] .lg-img {
  width: 100%;
  height: 100%;
}
[data-route="pkgShop/pages/gift/gift"] .lg-ph {
  font-size: calc(var(--rpx) * 72);
  color: #c9ced6;
  font-weight: 600;
}
[data-route="pkgShop/pages/gift/gift"] .lg-badge {
  position: absolute;
  left: 0;
  top: calc(var(--rpx) * 18);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 18) calc(var(--rpx) * 6) calc(var(--rpx) * 14);
  border-radius: 0 calc(var(--rpx) * 999) calc(var(--rpx) * 999) 0;
  background: linear-gradient(90deg, #ff3b30, #ff7a45);
  color: #ffffff;
  font-size: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/gift/gift"] .lg-mask {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgShop/pages/gift/gift"] .lg-body {
  background: #ffffff;
  border-radius: 0 0 calc(var(--rpx) * 16) calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 18) calc(var(--rpx) * 18);
}
[data-route="pkgShop/pages/gift/gift"] .lg-t {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
  line-height: 1.4;
  height: calc(var(--rpx) * 74);
  overflow: hidden;
}
[data-route="pkgShop/pages/gift/gift"] .lg-p {
  margin-top: calc(var(--rpx) * 10);
}
[data-route="pkgShop/pages/gift/gift"] .lg-num {
  font-size: calc(var(--rpx) * 40);
  font-weight: 600;
  color: #ff3b30;
}
[data-route="pkgShop/pages/gift/gift"] .lg-unit {
  font-size: calc(var(--rpx) * 24);
  color: #ff3b30;
}
[data-route="pkgShop/pages/gift/gift"] .lg-foot {
  margin-top: calc(var(--rpx) * 8);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
[data-route="pkgShop/pages/gift/gift"] .lg-stock {
  font-size: calc(var(--rpx) * 20);
  color: #999999;
}
[data-route="pkgShop/pages/gift/gift"] .lg-go {
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgShop/pages/gift/gift"] .lg-mine-bar {
  margin: calc(var(--rpx) * 20) calc(var(--rpx) * 28) 0;
  padding: calc(var(--rpx) * 24) 0;
  text-align: center;
  border-radius: calc(var(--rpx) * 16);
  background: #ffffff;
  color: #333333;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/gift/gift"] /* ---- 弹窗 ---- */
.lg-mask-bg {
  position: fixed;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 90;
  display: flex;
  align-items: flex-end;
}
[data-route="pkgShop/pages/gift/gift"] .lg-dlg {
  width: 100%;
  box-sizing: border-box;
  padding: calc(var(--rpx) * 32) calc(var(--rpx) * 28) calc(var(--rpx) * 40);
  border-radius: calc(var(--rpx) * 24) calc(var(--rpx) * 24) 0 0;
  background: #ffffff;
}
[data-route="pkgShop/pages/gift/gift"] .lg-dlg-h {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #1a1a1a;
  text-align: center;
}
[data-route="pkgShop/pages/gift/gift"] .lg-dlg-bd {
  margin-top: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/gift/gift"] .lg-ln {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--rpx) * 14) 0;
  font-size: calc(var(--rpx) * 28);
  color: #888888;
}
[data-route="pkgShop/pages/gift/gift"] .lg-ln-v {
  max-width: 70%;
  text-align: right;
  color: #1a1a1a;
}
[data-route="pkgShop/pages/gift/gift"] .lg-orange {
  color: #ff3b30;
  font-weight: 600;
}
[data-route="pkgShop/pages/gift/gift"] .lg-qty {
  display: flex;
  align-items: center;
}
[data-route="pkgShop/pages/gift/gift"] .lg-qbtn {
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  line-height: calc(var(--rpx) * 48);
  text-align: center;
  border-radius: calc(var(--rpx) * 8);
  border: calc(var(--rpx) * 1) solid #e5e8eb;
  color: #333333;
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgShop/pages/gift/gift"] .lg-qn {
  min-width: calc(var(--rpx) * 60);
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
}
[data-route="pkgShop/pages/gift/gift"] .lg-dlg-tip {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 12);
  background: #f7f8fa;
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  line-height: 1.6;
}
[data-route="pkgShop/pages/gift/gift"] .lg-dlg-acts {
  margin-top: calc(var(--rpx) * 28);
  display: flex;
}
[data-route="pkgShop/pages/gift/gift"] .lg-act {
  flex: 1;
  margin: 0 calc(var(--rpx) * 8);
  padding: calc(var(--rpx) * 24) 0;
  text-align: center;
  border-radius: calc(var(--rpx) * 999);
  background: #f2f3f5;
  color: #555555;
  font-size: calc(var(--rpx) * 28);
}
[data-route="pkgShop/pages/gift/gift"] .lg-act.ok {
  background: #ff3b30;
  color: #ffffff;
  font-weight: 600;
}
[data-route="pkgShop/pages/gift/gift"] .lg-act.dis {
  opacity: 0.6;
}
[data-route="pkgShop/pages/gift/gift"] .lg-mine-list {
  max-height: calc(var(--rpx) * 720);
  margin-top: calc(var(--rpx) * 20);
}
[data-route="pkgShop/pages/gift/gift"] .lg-mine-i {
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 18);
  margin-bottom: calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 12);
  background: #f7f8fa;
}
[data-route="pkgShop/pages/gift/gift"] .lg-mine-t {
  font-size: calc(var(--rpx) * 28);
  color: #1a1a1a;
}
[data-route="pkgShop/pages/gift/gift"] .lg-mine-s {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #ff6a3d;
}
[data-route="pkgShop/pages/gift/gift"] .lg-mine-a {
  margin-top: calc(var(--rpx) * 6);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  line-height: 1.5;
}
[data-route="pkgShop/pages/gift/gift"] .lg-mine-e {
  margin-top: calc(var(--rpx) * 10);
  padding: calc(var(--rpx) * 10) calc(var(--rpx) * 14);
  border-radius: calc(var(--rpx) * 8);
  background: #ffffff;
  border: calc(var(--rpx) * 1) dashed #b7e6c9;
  font-size: calc(var(--rpx) * 24);
  color: #07c160;
}
[data-route="pkgShop/pages/gift/gift"] /* ===== v7.0.168 商品详情页（微信小店风格） ===== */
.lg-detail {
  /* v7.0.171：宽度锁死 + 横向溢出自裁 —— 整页不再左右滑动出屏幕 */
  width: 100%;
  box-sizing: border-box;
  overflow-x: hidden;
  padding-bottom: calc(var(--rpx) * 150);
  background: #f4f5f7;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-hero {
  position: relative;
  background: #ffffff;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-img {
  display: block;
  width: 100%;
  height: calc(var(--rpx) * 680);
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-badge {
  position: absolute;
  left: calc(var(--rpx) * 24);
  top: calc(var(--rpx) * 24);
  padding: calc(var(--rpx) * 6) calc(var(--rpx) * 18);
  border-radius: calc(var(--rpx) * 24);
  background: rgba(255, 106, 61, 0.92);
  color: #ffffff;
  font-size: calc(var(--rpx) * 24);
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-bd {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 24);
  background: #ffffff;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-t {
  font-size: calc(var(--rpx) * 32);
  font-weight: 600;
  color: #222222;
  line-height: 1.4;
  /* v7.0.171：长标题/长行强制折行，不把横向撑爆 */
  word-break: break-all;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-sub {
  margin-top: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #888888;
  word-break: break-all;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-price {
  margin-top: calc(var(--rpx) * 16);
  display: flex;
  align-items: baseline;
  /* v7.0.171：价行不放折行，库存长文案也不撑宽 */
  flex-wrap: nowrap;
  overflow: hidden;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-num {
  font-size: calc(var(--rpx) * 56);
  font-weight: 700;
  color: #ff6a3d;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-unit {
  margin-left: calc(var(--rpx) * 8);
  font-size: calc(var(--rpx) * 24);
  color: #ff6a3d;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-stock {
  margin-left: auto;
  font-size: calc(var(--rpx) * 24);
  color: #e64340;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-stock.out {
  color: #999999;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-meta {
  margin-top: calc(var(--rpx) * 16);
  font-size: calc(var(--rpx) * 24);
  color: #666666;
  word-break: break-all;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-sec {
  margin-top: calc(var(--rpx) * 16);
  padding: calc(var(--rpx) * 20) calc(var(--rpx) * 24);
  background: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
  color: #222222;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-note {
  padding: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 20);
  background: #ffffff;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-line {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: #555555;
  line-height: 1.7;
  word-break: break-all;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-imgs {
  margin-top: calc(var(--rpx) * 16);
  background: #ffffff;
  overflow-x: hidden;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-photo {
  display: block;
  width: 100%;
  /* v7.0.171：图底色占位 + 固定上限 —— 懒加载瞬间不再把页面顶得上下抖、
     个别异常宽图也不会把横向撑出屏幕 */
  background: #f0f2f5;
  max-width: 100%;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-tip {
  margin-top: calc(var(--rpx) * 16);
  padding: 0 calc(var(--rpx) * 24) calc(var(--rpx) * 20);
  font-size: calc(var(--rpx) * 24);
  color: #999999;
  line-height: 1.6;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 24) calc(calc(var(--rpx) * 16) + env(safe-area-inset-bottom));
  background: #ffffff;
  box-shadow: 0 calc(var(--rpx) * -4) calc(var(--rpx) * 16) rgba(0, 0, 0, 0.06);
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-back {
  flex: 1;
  text-align: center;
  padding: calc(var(--rpx) * 20) 0;
  border-radius: calc(var(--rpx) * 40);
  border: calc(var(--rpx) * 2) solid #dddddd;
  font-size: calc(var(--rpx) * 28);
  color: #333333;
}
[data-route="pkgShop/pages/gift/gift"] .lg-d-buy {
  flex: 2;
  margin-left: calc(var(--rpx) * 20);
  text-align: center;
  padding: calc(var(--rpx) * 20) 0;
  border-radius: calc(var(--rpx) * 40);
  background: linear-gradient(90deg, #ff8a3d, #ff6a3d);
  color: #ffffff;
  font-size: calc(var(--rpx) * 28);
  font-weight: 600;
}



/* ---- pkgScan/pages/scan/scan.wxss ---- */
[data-route="pkgScan/pages/scan/scan"] /* pkgScan/pages/scan/scan.wxss
   相机页是深色满屏，所有颜色都按「在黑上好看」调；不用 app.wxss 的面板色，
   免得以后有人调浅色主题把取景框冲掉。 */
.page {
  position: relative;
  width: 100vw;
  height: calc(var(--vh) * 100);
  background: #0b0b0c;
  overflow: hidden;
}
[data-route="pkgScan/pages/scan/scan"] .cam {
  position: absolute;
  left: 0;
  top: 0;
  width: 100vw;
  height: calc(var(--vh) * 100);
}
[data-route="pkgScan/pages/scan/scan"] /* ---------- 遮罩 ---------- */
.veil {
  position: absolute;
  left: 0;
  top: 0;
  width: 100vw;
  height: calc(var(--vh) * 100);
  display: flex;
  flex-direction: column;
  pointer-events: none;
}
[data-route="pkgScan/pages/scan/scan"] .mask {
  flex: 1;
  background: rgba(8, 8, 10, 0.62);
}
[data-route="pkgScan/pages/scan/scan"] .mid {
  display: flex;
  flex-direction: row;
}
[data-route="pkgScan/pages/scan/scan"] .mask.side {
  flex: none;
  background: rgba(8, 8, 10, 0.62);
}
[data-route="pkgScan/pages/scan/scan"] .frame {
  position: relative;
  flex: none;
  box-sizing: border-box;
  border: calc(var(--rpx) * 2) solid rgba(255, 255, 255, 0.22);
  border-radius: calc(var(--rpx) * 12);
  background: rgba(255, 255, 255, 0.02);
  transition: border-color 0.16s;
}
[data-route="pkgScan/pages/scan/scan"] /* 框边固定色：取景段不再做实时找边变色（v7.0.055 去掉，那套一帧一跳） */

/* 四角 L 形标记：用两条边画，比整框描边清爽，也不挡视线 */
.corner {
  position: absolute;
  width: calc(var(--rpx) * 34);
  height: calc(var(--rpx) * 34);
  box-sizing: border-box;
}
[data-route="pkgScan/pages/scan/scan"] .corner.tl {
  left: calc(var(--rpx) * -2);
  top: calc(var(--rpx) * -2);
  border-left: calc(var(--rpx) * 6) solid #7ee0a8;
  border-top: calc(var(--rpx) * 6) solid #7ee0a8;
  border-top-left-radius: calc(var(--rpx) * 8);
}
[data-route="pkgScan/pages/scan/scan"] .corner.tr {
  right: calc(var(--rpx) * -2);
  top: calc(var(--rpx) * -2);
  border-right: calc(var(--rpx) * 6) solid #7ee0a8;
  border-top: calc(var(--rpx) * 6) solid #7ee0a8;
  border-top-right-radius: calc(var(--rpx) * 8);
}
[data-route="pkgScan/pages/scan/scan"] .corner.bl {
  left: calc(var(--rpx) * -2);
  bottom: calc(var(--rpx) * -2);
  border-left: calc(var(--rpx) * 6) solid #7ee0a8;
  border-bottom: calc(var(--rpx) * 6) solid #7ee0a8;
  border-bottom-left-radius: calc(var(--rpx) * 8);
}
[data-route="pkgScan/pages/scan/scan"] .corner.br {
  right: calc(var(--rpx) * -2);
  bottom: calc(var(--rpx) * -2);
  border-right: calc(var(--rpx) * 6) solid #7ee0a8;
  border-bottom: calc(var(--rpx) * 6) solid #7ee0a8;
  border-bottom-right-radius: calc(var(--rpx) * 8);
}
[data-route="pkgScan/pages/scan/scan"] /* 框内辅助线：三分线，帮人对齐，很淡不抢戏 */
.wire {
  position: absolute;
  background: rgba(255, 255, 255, 0.14);
}
[data-route="pkgScan/pages/scan/scan"] .wire.h1 {
  left: calc(var(--rpx) * 8);
  right: calc(var(--rpx) * 8);
  top: 33.3%;
  height: calc(var(--rpx) * 1);
}
[data-route="pkgScan/pages/scan/scan"] .wire.h2 {
  left: calc(var(--rpx) * 8);
  right: calc(var(--rpx) * 8);
  top: 66.6%;
  height: calc(var(--rpx) * 1);
}
[data-route="pkgScan/pages/scan/scan"] .wire.v1 {
  top: calc(var(--rpx) * 8);
  bottom: calc(var(--rpx) * 8);
  left: 33.3%;
  width: calc(var(--rpx) * 1);
}
[data-route="pkgScan/pages/scan/scan"] .wire.v2 {
  top: calc(var(--rpx) * 8);
  bottom: calc(var(--rpx) * 8);
  left: 66.6%;
  width: calc(var(--rpx) * 1);
}
[data-route="pkgScan/pages/scan/scan"] /* ---------- 顶部 ---------- */
.topbar {
  position: absolute;
  left: 0;
  top: 0;
  width: 100vw;
}
[data-route="pkgScan/pages/scan/scan"] .nav {
  height: calc(var(--rpx) * 88);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 calc(var(--rpx) * 28);
}
[data-route="pkgScan/pages/scan/scan"] .close {
  width: calc(var(--rpx) * 56);
  height: calc(var(--rpx) * 56);
  line-height: calc(var(--rpx) * 56);
  text-align: center;
  color: #f2f2f2;
  font-size: calc(var(--rpx) * 28);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.12);
}
[data-route="pkgScan/pages/scan/scan"] .close.dark {
  color: #26262a;
  background: rgba(0, 0, 0, 0.06);
  font-size: calc(var(--rpx) * 40);
  line-height: calc(var(--rpx) * 48);
}
[data-route="pkgScan/pages/scan/scan"] .placeholder {
  width: calc(var(--rpx) * 56);
}
[data-route="pkgScan/pages/scan/scan"] .title {
  color: #f2f2f2;
  font-size: calc(var(--rpx) * 32);
  font-weight: 500;
}
[data-route="pkgScan/pages/scan/scan"] .sub {
  text-align: center;
  color: rgba(255, 255, 255, 0.62);
  font-size: calc(var(--rpx) * 24);
  margin-top: calc(var(--rpx) * 4);
}
[data-route="pkgScan/pages/scan/scan"] /* ---------- 提示 ---------- */
.hint {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  padding: calc(var(--rpx) * 12) calc(var(--rpx) * 28);
  border-radius: calc(var(--rpx) * 999);
  font-size: calc(var(--rpx) * 24);
  color: #ffffff;
  background: rgba(0, 0, 0, 0.55);
  transition: background 0.2s;
}
[data-route="pkgScan/pages/scan/scan"] .hint.ok {
  background: rgba(23, 122, 74, 0.86);
}
[data-route="pkgScan/pages/scan/scan"] .hint.warn {
  background: rgba(176, 106, 12, 0.9);
}
[data-route="pkgScan/pages/scan/scan"] .hint.bad {
  background: rgba(178, 42, 42, 0.9);
}
[data-route="pkgScan/pages/scan/scan"] /* ---------- 底部 ---------- */
.bar {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(var(--rpx) * 96);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 calc(var(--rpx) * 72);
}
[data-route="pkgScan/pages/scan/scan"] .act {
  width: calc(var(--rpx) * 96);
  display: flex;
  flex-direction: column;
  align-items: center;
  color: rgba(255, 255, 255, 0.82);
}
[data-route="pkgScan/pages/scan/scan"] .act.on {
  color: #ffd76a;
}
[data-route="pkgScan/pages/scan/scan"] .act-i {
  font-size: calc(var(--rpx) * 32);
  line-height: calc(var(--rpx) * 44);
}
[data-route="pkgScan/pages/scan/scan"] .act-t {
  font-size: calc(var(--rpx) * 20);
  margin-top: calc(var(--rpx) * 4);
  color: rgba(255, 255, 255, 0.6);
}
[data-route="pkgScan/pages/scan/scan"] .shutter {
  width: calc(var(--rpx) * 132);
  height: calc(var(--rpx) * 132);
  border-radius: 50%;
  border: calc(var(--rpx) * 6) solid rgba(255, 255, 255, 0.9);
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}
[data-route="pkgScan/pages/scan/scan"] .shutter-core {
  width: calc(var(--rpx) * 104);
  height: calc(var(--rpx) * 104);
  border-radius: 50%;
  background: #ffffff;
}
[data-route="pkgScan/pages/scan/scan"] .shutter:active .shutter-core {
  background: #d8d8d8;
}
[data-route="pkgScan/pages/scan/scan"] .shutter.busy {
  opacity: 0.5;
}
[data-route="pkgScan/pages/scan/scan"] .tip-bottom {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(var(--rpx) * 44);
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.4);
}
[data-route="pkgScan/pages/scan/scan"] /* ---------- 四角微调 ---------- */
.adj {
  width: 100vw;
  height: calc(var(--vh) * 100);
  background: #14141a;
  display: flex;
  flex-direction: column;
}
[data-route="pkgScan/pages/scan/scan"] .adj-head {
  height: calc(var(--rpx) * 88);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 calc(var(--rpx) * 28);
}
[data-route="pkgScan/pages/scan/scan"] .adj-title {
  flex: 1;
  text-align: center;
  font-size: calc(var(--rpx) * 28);
  color: #e9e9ee;
}
[data-route="pkgScan/pages/scan/scan"] .adj-stage {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
[data-route="pkgScan/pages/scan/scan"] .img-wrap {
  position: relative;
  background: #000;
}
[data-route="pkgScan/pages/scan/scan"] .adj-img {
  display: block;
}
[data-route="pkgScan/pages/scan/scan"] .dot {
  position: absolute;
  width: calc(var(--rpx) * 64);
  height: calc(var(--rpx) * 64);
  margin-left: calc(var(--rpx) * -32);
  margin-top: calc(var(--rpx) * -32);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 3;
}
[data-route="pkgScan/pages/scan/scan"] .dot-ring {
  width: calc(var(--rpx) * 26);
  height: calc(var(--rpx) * 26);
  border-radius: 50%;
  background: #7ee0a8;
  border: calc(var(--rpx) * 4) solid #ffffff;
  box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(0, 0, 0, 0.45);
}
[data-route="pkgScan/pages/scan/scan"] /* v7.0.055（木哥令「四个角的点加发光的动感，提示可以撚动」）：
 * 常驻呼吸光圈——一圈绿光周期性向外扩散淡出，明示「这里能拖」；
 * 拖动中（active）动效停，改成放大高亮，不跟手抖。 */
.dot-ring {
  animation: dotglow 1.6s ease-out infinite;
}

@keyframes dotglow {
  0% {
    box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(0, 0, 0, 0.45), 0 0 0 0 rgba(126, 224, 168, 0.55);
  }
  70% {
    box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(0, 0, 0, 0.45), 0 0 0 calc(var(--rpx) * 18) rgba(126, 224, 168, 0);
  }
  100% {
    box-shadow: 0 calc(var(--rpx) * 2) calc(var(--rpx) * 8) rgba(0, 0, 0, 0.45), 0 0 0 calc(var(--rpx) * 18) rgba(126, 224, 168, 0);
  }
}
[data-route="pkgScan/pages/scan/scan"] .dot.active .dot-ring {
  animation: none;
  background: #ffd76a;
  transform: scale(1.18);
}
[data-route="pkgScan/pages/scan/scan"] .quad {
  position: absolute;
  left: 0;
  top: 0;
}
[data-route="pkgScan/pages/scan/scan"] .qline {
  position: absolute;
  height: calc(var(--rpx) * 2);
  background: rgba(126, 224, 168, 0.9);
  transform-origin: 0 0;
}
[data-route="pkgScan/pages/scan/scan"] .adj-note {
  text-align: center;
  font-size: calc(var(--rpx) * 24);
  color: #f0b45a;
  padding: 0 calc(var(--rpx) * 40) calc(var(--rpx) * 12);
}
[data-route="pkgScan/pages/scan/scan"] .adj-bar {
  display: flex;
  gap: calc(var(--rpx) * 20);
  padding: calc(var(--rpx) * 16) calc(var(--rpx) * 28) calc(calc(var(--rpx) * 28) + env(safe-area-inset-bottom));
}
[data-route="pkgScan/pages/scan/scan"] .btn {
  flex: 1;
  height: calc(var(--rpx) * 92);
  line-height: calc(var(--rpx) * 92);
  text-align: center;
  border-radius: calc(var(--rpx) * 14);
  font-size: calc(var(--rpx) * 32);
}
[data-route="pkgScan/pages/scan/scan"] .btn.ghost {
  color: #d6d6dd;
  background: rgba(255, 255, 255, 0.1);
}
[data-route="pkgScan/pages/scan/scan"] .btn.main {
  color: #10231a;
  background: #7ee0a8;
  font-weight: 500;
}
[data-route="pkgScan/pages/scan/scan"] .btn:active {
  opacity: 0.82;
}
[data-route="pkgScan/pages/scan/scan"] /* ---------- 处理中 ---------- */
.doing {
  width: 100vw;
  height: calc(var(--vh) * 100);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: #14141a;
}
[data-route="pkgScan/pages/scan/scan"] .doing-cat {
  position: relative;
  width: calc(var(--rpx) * 180);
  height: calc(var(--rpx) * 180);
  display: flex;
  align-items: center;
  justify-content: center;
}
[data-route="pkgScan/pages/scan/scan"] .doing-ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: calc(var(--rpx) * 6) solid rgba(126, 224, 168, 0.22);
  border-top-color: #7ee0a8;
  animation: spin 0.9s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
[data-route="pkgScan/pages/scan/scan"] .doing-pct {
  font-size: calc(var(--rpx) * 40);
  color: #e9e9ee;
  font-weight: 500;
}
[data-route="pkgScan/pages/scan/scan"] .doing-text {
  margin-top: calc(var(--rpx) * 36);
  font-size: calc(var(--rpx) * 32);
  color: #e9e9ee;
}
[data-route="pkgScan/pages/scan/scan"] .doing-sub {
  margin-top: calc(var(--rpx) * 12);
  font-size: calc(var(--rpx) * 24);
  color: rgba(255, 255, 255, 0.45);
}
[data-route="pkgScan/pages/scan/scan"] .hide-canvas {
  position: absolute;
  left: -9999px;
  top: -9999px;
  width: 300px;
  height: 300px;
}

