/* =========================================================================
   HSUI · 移动端统一设计系统 v2（P23「琉璃」）
   - 令牌 / 基础组件 / 底部导航 / 弹窗体系 / 包裹层
   - 走 !important 的地方只针对「需要压住页面内联样式」的兜底
   - 图标：Remix Icon（本地 woff2，见 remixicon.css）
   ========================================================================= */

:root{
  /* 色彩
     P44/P45：主色改为「天蓝」#1E8FD5。
     —— 用户明确要求「页面使用天蓝色，不要使用深蓝色主题，注意文字颜色处理」。
        天蓝 #1E8FD5：色相 199°（青蓝），明度 48%，比原靛蓝 #3E5C9E 明快得多。
        但天蓝在浅底（#F3F5FA / #fff）上当文字色时对比度只有 3.86，
        低于正文可读标准（WCAG AA ≥4.5），所以文字必须配套处理：
          · 主色作「背景」+ 白字  → 白字用 --hs-on-primary(#fff)，
            渐变终点压到 --hs-primary-d(#0E6FA8) 保证最低一档仍 ≥4.0
          · 主色作「前景」（文字/图标）用在浅底 → 用 --hs-primary-d(#0E6FA8)，
            对比度 4.6+，可读
          · 深色头部（.AcHd/.CtHd 等）内的彩色文字 → 一律转纯白
     这三条规则由 devtools/p45_theme.py 批量落地。 */
  --hs-primary:#0050FF;
  /* P35：主色三元组。所有「主色透明底 / 描边 / 聚焦光晕」一律由此派生，
     换主题时不会出现「边框变了、阴影还是宝蓝」的情况。 */
  --hs-primary-rgb:0,80,255;
  --hs-primary-d:#0040CC;
  --hs-primary-l:#3D7BFF;
  /* P44：主色上的文字色（按钮、徽章等「主色底 + 文字」场景统一用这个） */
  --hs-on-primary:#FFFFFF;
  --hs-accent:#00C8B4;
  --hs-ink:#0B1428;
  --hs-ink2:#2A3650;
  --hs-mut:#767F94;
  --hs-faint:#A6AEC0;
  --hs-line:#EDF0F7;
  --hs-line2:#F5F7FC;
  --hs-bg:#F3F5FA;
  --hs-soft:#F7F9FE;
  --hs-ok:#12B76A;
  --hs-warn:#F79009;
  --hs-err:#F04438;
  --hs-vio:#7A5AF8;
  /* P41：新增柔和底色与暖色点缀，供页面做「不刺眼但有层次」的分区 */
  --hs-primary-tint:#E9F0FF;
  --hs-primary-tint-2:#D6E3FF;
  --hs-warm:#FF8A3D;
  --hs-warm-rgb:255,138,61;
  --hs-warm-soft:rgba(var(--hs-warm-rgb),.10);

  /* 形状 */
  --hs-r:18px;
  --hs-r-sm:12px;
  --hs-r-lg:24px;
  --hs-sh:0 6px 20px rgba(11,20,40,.055);
  --hs-sh-lg:0 18px 48px rgba(11,20,40,.14);

  /* 尺寸 */
  --hs-nav-h:56px;
  /* P52：二级页顶部导航条固定高度 —— 需求指定 68px（标题与按钮水平居中） */
  --hs-bar-h:68px;
  --hs-w:480px;
  --hs-pt:60px;
}

/* ---------------- 基础重置（温和，不强改页面布局） ---------------- */
*,*::before,*::after{ -webkit-tap-highlight-color: transparent; }
body,body.hs-body{
  background:var(--hs-bg);
  color:var(--hs-ink2);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Helvetica Neue",
    "Microsoft YaHei","Source Han Sans SC","Noto Sans CJK SC",Roboto,Arial,sans-serif;
  font-size:14px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
button,input,select,textarea{ font-family:inherit; font-size:inherit; line-height:inherit; }
.hs-body img{ max-width:100%; }

/* Remix 图标基线 */
[class^="ri-"],[class*=" ri-"]{
  font-size:20px;line-height:1;vertical-align:-.14em;display:inline-block;
}

/* =========================================================
   1. 组件：按钮
   ========================================================= */
.hs-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  height:46px;padding:0 20px;border:0;border-radius:14px;
  font-size:15px;font-weight:650;letter-spacing:.2px;cursor:pointer;
  font-family:inherit;color:#fff;
  background:var(--hs-primary);
  box-shadow:0 8px 20px rgba(var(--hs-primary-rgb),.26);
  transition:transform .16s ease,box-shadow .16s ease,opacity .16s;
  -webkit-user-select:none;user-select:none;
}
.hs-btn:active{ transform:scale(.975); box-shadow:0 4px 12px rgba(var(--hs-primary-rgb),.22); }
.hs-btn[disabled],.hs-btn.is-off{ opacity:.45;box-shadow:none;pointer-events:none; }
.hs-btn i{ font-size:19px; }
.hs-btn--sm{ height:34px;padding:0 13px;font-size:12.5px;border-radius:11px;gap:5px; }
.hs-btn--sm i{ font-size:15px; }
.hs-btn--lg{ height:52px;font-size:16px;border-radius:16px; }
.hs-btn--block{ display:flex;width:100%; }
.hs-btn--ghost{
  background:var(--hs-soft);color:var(--hs-primary-d);box-shadow:none;
  border:1px solid rgba(var(--hs-primary-rgb),.14);
}
.hs-btn--line{ background:#fff;color:var(--hs-ink2);box-shadow:none;border:1px solid var(--hs-line); }
.hs-btn--gray{ background:#EEF1F7;color:var(--hs-mut);box-shadow:none; }
.hs-btn--ok{ background:linear-gradient(135deg,#12B76A,#3ED598);box-shadow:0 8px 20px rgba(18,183,106,.24); }
.hs-btn--warn{ background:linear-gradient(135deg,#F79009,#FFB340);box-shadow:0 8px 20px rgba(247,144,9,.24); }
.hs-btn--err{ background:linear-gradient(135deg,#F04438,#FF7A6E);box-shadow:0 8px 20px rgba(240,68,56,.22); }
.hs-btn--wx{ background:linear-gradient(135deg,#07C160,#2BD97C);box-shadow:0 8px 20px rgba(7,193,96,.26); }

/* =========================================================
   2. 组件：输入 / 表单
   ========================================================= */
.hs-field{
  display:flex;align-items:center;gap:9px;height:50px;padding:0 14px;
  background:var(--hs-soft);border:1.5px solid transparent;border-radius:14px;
  transition:border-color .18s,background .18s,box-shadow .18s;
}
.hs-field > i{ font-size:19px;color:var(--hs-faint);flex-shrink:0; }
.hs-field:focus-within > i{color:var(--hs-primary-d);}
.hs-field input,.hs-field textarea,.hs-field select{
  flex:1;min-width:0;border:0;background:transparent;outline:none;box-shadow:none;
  font-size:15px;color:var(--hs-ink);font-family:inherit;height:100%;
  -webkit-appearance:none;appearance:none;
}
.hs-field input::placeholder{ color:var(--hs-faint);font-size:14px; }
.hs-field .hs-field-x{
  flex-shrink:0;font-size:12.5px;font-weight:700;color:var(--hs-primary-d);cursor:pointer;
  padding:6px 10px;border-radius:9px;background:rgba(var(--hs-primary-rgb),.08);
}
.hs-field .hs-field-x.is-off{ color:var(--hs-faint);background:#EDF0F7;pointer-events:none; }
.hs-field--area{ height:auto;padding:12px 14px;align-items:flex-start; }
.hs-field--area textarea{ min-height:74px;line-height:1.65;resize:none; }

.hs-label{ font-size:12.5px;font-weight:700;color:var(--hs-mut);margin:16px 2px 8px;display:block; }
.hs-help{ font-size:11.5px;color:var(--hs-faint);line-height:1.6;margin-top:8px; }

/* =========================================================
   3. 组件：卡片 / 列表 / 标签 / 空态
   ========================================================= */
.hs-card{
  background:#fff;border-radius:var(--hs-r);box-shadow:var(--hs-sh);
  padding:16px;margin-bottom:12px;border:1px solid rgba(11,20,40,.035);
}
.hs-card--flat{ box-shadow:none;border:1px solid var(--hs-line); }
.hs-card--pad0{ padding:0;overflow:hidden; }

.hs-list{ background:#fff;border-radius:var(--hs-r);box-shadow:var(--hs-sh);overflow:hidden; }
.hs-li{
  display:flex;align-items:center;gap:12px;padding:14px 15px;cursor:pointer;
  border-bottom:1px solid var(--hs-line2);transition:background .15s;
}
.hs-li:last-child{ border-bottom:0; }
.hs-li:active{ background:var(--hs-soft); }
.hs-li-ic{
  width:36px;height:36px;border-radius:11px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:rgba(var(--hs-primary-rgb),.08);color:var(--hs-primary-d);font-size:19px;
}
.hs-li-tx{ flex:1;min-width:0; }
.hs-li-tx b{ display:block;font-size:14.5px;font-weight:600;color:var(--hs-ink); }
.hs-li-tx span{ display:block;font-size:11.5px;color:var(--hs-faint);margin-top:3px; }
.hs-li-ar{ color:#C9D0DE;font-size:17px;flex-shrink:0; }
.hs-li-ex{ font-size:12.5px;color:var(--hs-mut);flex-shrink:0; }

.hs-tag{
  display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;
  border-radius:7px;font-size:11.5px;font-weight:700;letter-spacing:.2px;
  background:rgba(var(--hs-primary-rgb),.09);color:var(--hs-primary-d);white-space:nowrap;
}
.hs-tag--g{ background:rgba(18,183,106,.1);color:#0E9F5E; }
.hs-tag--o{ background:rgba(247,144,9,.12);color:#C77700; }
.hs-tag--r{ background:rgba(240,68,56,.1);color:#D92D20; }
.hs-tag--gr{ background:#EEF1F7;color:var(--hs-mut); }
.hs-tag--v{ background:rgba(122,90,248,.1);color:var(--hs-vio); }
.hs-tag--c{ background:rgba(0,200,180,.12);color:#049E8E; }

.hs-empty{ text-align:center;padding:56px 24px; }
.hs-empty i{ font-size:52px;color:#D5DBE8; }
.hs-empty b{ display:block;font-size:14px;color:var(--hs-mut);margin-top:12px;font-weight:600; }
.hs-empty span{ display:block;font-size:12px;color:var(--hs-faint);margin-top:6px;line-height:1.7; }

/* =========================================================
   4. 组件：页头（二级页）
   ========================================================= */
.hs-hd{
  position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:10px;
  height:52px;padding:0 12px;background:rgba(255,255,255,.92);
  backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);
  border-bottom:1px solid var(--hs-line);
}
.hs-hd-b{
  width:34px;height:34px;border-radius:50%;flex-shrink:0;display:flex;
  align-items:center;justify-content:center;background:var(--hs-soft);
  color:var(--hs-ink);font-size:19px;cursor:pointer;border:0;padding:0;
  transition:background .15s,transform .15s;
}
.hs-hd-b:active{ background:#E7ECF7;transform:scale(.93); }
.hs-hd-t{ flex:1;min-width:0;font-size:16px;font-weight:700;color:var(--hs-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.hs-hd-r{ flex-shrink:0;display:flex;align-items:center;gap:8px; }

/* =========================================================
   5. 底部导航（重做：无背景高亮，仅变色 + 图标实心化）
   ========================================================= */
#Dindexhang.hs-nav{
  position:fixed!important;left:0!important;right:0!important;bottom:0!important;
  margin:0 auto!important;max-width:var(--hs-w)!important;
  /* P37：左侧 padding 之前叠加到了 content-box 上，导致导航栏比手机画布宽 12px */
  box-sizing:border-box!important;
  /* 始终浮于子页面之上：任何页面下都能切 tab（不被全屏页层吞掉点击） */
  z-index:99990!important;
  height:calc(var(--hs-nav-h) + env(safe-area-inset-bottom))!important;
  padding:0 6px env(safe-area-inset-bottom)!important;
  display:flex!important;align-items:stretch!important;
  background:rgba(255,255,255,.94)!important;
  backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);
  border-top:1px solid rgba(11,20,40,.055)!important;
  box-shadow:0 -6px 26px rgba(11,20,40,.055)!important;
  z-index:900000!important;
}
#Dindexhang.hs-nav .hs-nav-i{
  flex:1;display:flex!important;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;margin:0!important;padding:0!important;border-radius:0!important;
  background:transparent!important;cursor:pointer;position:relative;
  color:var(--hs-faint);transition:color .18s ease;
  -webkit-user-select:none;user-select:none;
}
#Dindexhang.hs-nav .hs-nav-i .hs-ic{
  position:relative;width:26px;height:24px;display:flex;align-items:center;justify-content:center;
  background:transparent!important;border-radius:0!important;
  transition:transform .22s cubic-bezier(.34,1.56,.64,1);
}
#Dindexhang.hs-nav .hs-nav-i .hs-ic i{
  font-size:22px;line-height:1;color:inherit!important;
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  transition:opacity .18s ease,transform .22s cubic-bezier(.34,1.56,.64,1);
}
#Dindexhang.hs-nav .hs-nav-i .hs-ic i.fill{ opacity:0;transform:translate(-50%,-50%) scale(.7); }
#Dindexhang.hs-nav .hs-nav-i samp{
  display:block;margin:0!important;padding:0!important;
  font-size:10px;line-height:1.2;letter-spacing:.2px;font-weight:500;
  color:inherit!important;transition:color .18s ease;
}
#Dindexhang.hs-nav .hs-nav-i.on{ color:var(--hs-primary-d)!important; }
#Dindexhang.hs-nav .hs-nav-i.on .hs-ic{ transform:translateY(-2px); }
#Dindexhang.hs-nav .hs-nav-i.on .hs-ic i.line{ opacity:0; }
#Dindexhang.hs-nav .hs-nav-i.on .hs-ic i.fill{ opacity:1;transform:translate(-50%,-50%) scale(1); }
#Dindexhang.hs-nav .hs-nav-i.on samp{ font-weight:700; }
#Dindexhang.hs-nav .hs-nav-i:active .hs-ic{ transform:scale(.88); }
/* 角标 */
#Dindexhang.hs-nav .hs-nav-i .hs-dot{
  position:absolute;top:2px;right:-3px;min-width:15px;height:15px;padding:0 4px;
  border-radius:8px;background:var(--hs-err);color:#fff;font-size:9.5px;font-weight:700;
  display:flex;align-items:center;justify-content:center;border:1.5px solid #fff;
}

/* =========================================================
   6. 弹窗体系：统一容器（底部弹层 / 居中对话框 / 动作面板）
   ========================================================= */
.hs-mask{
  position:fixed;inset:0;z-index:1000000;background:rgba(9,17,38,.46);
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  display:flex;opacity:0;transition:opacity .22s ease;
  pointer-events:none;
}
.hs-mask.is-in{ opacity:1;pointer-events:auto; }
.hs-mask--sheet{ align-items:flex-end;justify-content:center; }
.hs-mask--dlg{ align-items:center;justify-content:center;padding:26px 18px; }
/* 软键盘弹起：顶部对齐 + 压缩高度，保证输入框与按钮都留在可视区 */
.hs-mask.hs-kb{ align-items:flex-start!important; }
.hs-mask.hs-kb .hs-dlg{ max-height:calc(100% - 8px); }
.hs-mask.hs-kb .hs-dlg-bd{ overflow-y:auto; -webkit-overflow-scrolling:touch; }
.hs-mask.hs-kb .hs-sheet{ max-height:100%; }
.hs-mask--act{ align-items:flex-end;justify-content:center; }

/* 底部弹层 */
.hs-sheet{
  width:100%;max-width:var(--hs-w);
  /* P52（需求第 5 项）：高度改成「内容自适应 + 上限定高」——
     原来只有 max-height:86vh，内容一多就顶到 86%，一少又贴底，
     登录弹窗的「登录即同意协议」那行直接压在屏幕最底部。
     现在加 min(86vh, 640px) 上限，并把底部呼吸间距交给 padding-bottom。 */
  max-height:min(86vh, 640px);
  background:#fff;border-radius:var(--hs-r-lg) var(--hs-r-lg) 0 0;
  display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 -18px 50px rgba(9,17,38,.22);
  transform:translateY(100%);transition:transform .3s cubic-bezier(.32,.72,0,1);
  padding-bottom:calc(10px + env(safe-area-inset-bottom));
}
.hs-mask.is-in .hs-sheet{ transform:translateY(0); }
.hs-sheet-hd{
  position:relative;flex-shrink:0;padding:20px 18px 14px;text-align:center;
  border-bottom:1px solid var(--hs-line2);
}
.hs-sheet-hd::before{
  content:'';position:absolute;top:8px;left:50%;transform:translateX(-50%);
  width:38px;height:4px;border-radius:3px;background:#E4E9F2;
}
.hs-sheet-hd b{ display:block;font-size:16px;font-weight:750;color:var(--hs-ink); }
.hs-sheet-hd span{ display:block;font-size:11.5px;color:var(--hs-faint);margin-top:4px;line-height:1.5; }
.hs-sheet-x{
  position:absolute;right:12px;top:14px;width:30px;height:30px;border-radius:50%;
  background:var(--hs-soft);color:var(--hs-mut);display:flex;align-items:center;
  justify-content:center;font-size:16px;cursor:pointer;border:0;
}
.hs-sheet-x:active{ background:#E7ECF7; }
.hs-sheet-bd{ flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:18px 18px 22px; }
.hs-sheet-ft{
  flex-shrink:0;padding:12px 18px calc(14px + env(safe-area-inset-bottom));
  border-top:1px solid var(--hs-line2);background:#fff;display:flex;gap:10px;
}
.hs-sheet-ft .hs-btn{ flex:1; }

/* 居中对话框 */
.hs-dlg{
  width:100%;max-width:340px;background:#fff;border-radius:22px;overflow:hidden;
  box-shadow:var(--hs-sh-lg);transform:scale(.9);opacity:0;
  transition:transform .24s cubic-bezier(.32,.72,0,1),opacity .2s ease;
  max-height:84vh;display:flex;flex-direction:column;
}
.hs-mask.is-in .hs-dlg{ transform:scale(1);opacity:1; }
.hs-dlg-hd{ padding:22px 22px 0;text-align:center;flex-shrink:0; }
.hs-dlg-ic{
  width:52px;height:52px;border-radius:17px;margin:0 auto 13px;display:flex;
  align-items:center;justify-content:center;font-size:26px;
  background:rgba(var(--hs-primary-rgb),.09);color:var(--hs-primary-d);
}
.hs-dlg-ic--ok{ background:rgba(18,183,106,.1);color:var(--hs-ok); }
.hs-dlg-ic--warn{ background:rgba(247,144,9,.12);color:var(--hs-warn); }
.hs-dlg-ic--err{ background:rgba(240,68,56,.1);color:var(--hs-err); }
.hs-dlg-hd b{ display:block;font-size:17px;font-weight:750;color:var(--hs-ink); }
.hs-dlg-bd{
  padding:10px 22px 20px;font-size:13.5px;color:var(--hs-mut);line-height:1.72;
  text-align:center;overflow-y:auto;min-height:0;
}
.hs-dlg-bd--form{ text-align:left;padding-top:16px; }
.hs-dlg-ft{ display:flex;gap:10px;padding:0 18px 18px;flex-shrink:0; }
.hs-dlg-ft .hs-btn{ flex:1; }

/* 动作面板 */
.hs-act{ width:100%;max-width:var(--hs-w);padding:0 10px calc(10px + env(safe-area-inset-bottom));
  transform:translateY(100%);transition:transform .28s cubic-bezier(.32,.72,0,1); }
.hs-mask.is-in .hs-act{ transform:translateY(0); }
.hs-act-g{ background:#fff;border-radius:16px;overflow:hidden;margin-bottom:9px; }
.hs-act-i{
  display:flex;align-items:center;justify-content:center;gap:8px;height:54px;
  font-size:15.5px;color:var(--hs-ink2);cursor:pointer;border:0;width:100%;
  background:#fff;font-family:inherit;border-bottom:1px solid var(--hs-line2);
}
.hs-act-i:last-child{ border-bottom:0; }
.hs-act-i:active{ background:var(--hs-soft); }
.hs-act-i i{ font-size:19px; }
.hs-act-i--err{ color:var(--hs-err); }
.hs-act-i--p{ color:var(--hs-primary-d);font-weight:650; }
.hs-act-x{
  display:block;width:100%;height:54px;border:0;border-radius:16px;background:#fff;
  font-size:16px;font-weight:700;color:var(--hs-mut);font-family:inherit;cursor:pointer;
}
.hs-act-x:active{ background:#EEF1F7; }

/* Toast / Loading */
.hs-toast{
  position:fixed;left:50%;bottom:calc(var(--hs-nav-h) + 34px);
  transform:translateX(-50%) translateY(10px);z-index:1100000;
  max-width:78vw;padding:11px 18px;border-radius:14px;
  background:rgba(11,20,40,.92);color:#fff;font-size:13.5px;line-height:1.5;
  text-align:center;box-shadow:0 12px 32px rgba(9,17,38,.3);
  opacity:0;transition:opacity .22s,transform .22s;pointer-events:none;
  backdrop-filter:blur(8px);
}
.hs-toast.is-in{ opacity:1;transform:translateX(-50%) translateY(0); }
.hs-toast i{ font-size:16px;vertical-align:-.16em;margin-right:6px; }
.hs-loading{
  position:fixed;inset:0;z-index:1100000;display:flex;align-items:center;justify-content:center;
  background:rgba(9,17,38,.3);backdrop-filter:blur(2px);opacity:0;transition:opacity .2s;
  /* 关键：隐藏态必须放行指针事件，否则会变成一层隐形全屏遮罩吞掉所有点击 */
  pointer-events:none;visibility:hidden;
}
.hs-loading.is-in{ opacity:1;pointer-events:auto;visibility:visible; }
.hs-loading-box{
  background:rgba(11,20,40,.88);border-radius:16px;padding:20px 26px;color:#fff;
  font-size:13px;display:flex;flex-direction:column;align-items:center;gap:12px;
}
.hs-spin{
  width:26px;height:26px;border-radius:50%;border:2.5px solid rgba(255,255,255,.22);
  border-top-color:#fff;animation:hsSpin .7s linear infinite;
}
@keyframes hsSpin{ to{ transform:rotate(360deg); } }
@keyframes hsUp{ from{opacity:0;transform:translateY(14px);} to{opacity:1;transform:translateY(0);} }
@keyframes hsFade{ from{opacity:0;} to{opacity:1;} }

/* =========================================================
   7. 页面层（子页面切换 / 推拉）
   ========================================================= */
.Ktancchuan{
  position:fixed!important;top:0!important;bottom:0!important;
  left:0!important;right:0!important;margin:0 auto!important;
  /* P77（需求第 8 项）：页面层必须铺满整个视口，用不透明背景盖住下面的
     旧页面；否则宽屏下只有中间 480px 是新页，左右会露出上一页。
     内容仍由 .Ktancchuan_nk 限制在 --hs-w 内并居中，手机端观感不变。 */
  width:100%!important;max-width:none!important;
  height:100vh!important;height:100dvh!important;
  background:var(--hs-bg)!important;overflow:hidden!important;overflow-x:hidden!important;
  will-change:transform;isolation:isolate;
}
.Ktancchuan_nk{
  /* P77：内容列最宽 --hs-w 居中，页面层本身全宽铺底 */
  width:100%!important;max-width:var(--hs-w)!important;margin:0 auto!important;
  float:none!important;display:block;background:var(--hs-bg);position:relative;
  /* P46：此处原来是 position:absolute（appmiao 样式表），
     而 position:absolute 会成为内部 position:fixed 元素的包含块 ——
     页面自带的固定底栏（如商品详情的「加入购物车 / 提交订单」）
     于是相对这一层（高度=内容高度）定位，直接落到屏幕可视区之外，
     表现就是「详情页底部操作栏不见了、点不到按钮」。
     改为 relative：仍可承载绝对定位，但不会劫持 fixed。 */
  position:relative!important;
  /* P31：必须 border-box —— 否则 height:100% 再叠加 padding-bottom，
     内层比视口高 82px，被外层 overflow:hidden 裁掉，导致每页最后一段内容滚不到 */
  box-sizing:border-box;
  height:100%!important;overflow-y:auto!important;overflow-x:hidden!important;
  -webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  padding-bottom:calc(var(--hs-nav-h) + 26px + env(safe-area-inset-bottom))!important;
  /* P57（需求第 3 项）：去掉这里的 hsFade —— 每次开页都把整页内容淡入一遍，
     与滑入动画叠加既「发虚」又浪费一整个合成周期，长列表页尤其明显。 */
}
/* P46：动画结束后释放 transform / will-change ——
   transform 哪怕是 matrix(1,0,0,1,0,0)，也会成为内部 fixed 元素的包含块，
   导致页面自带的固定底栏、浮动按钮定位错乱。 */
.Ktancchuan--settled{ transform:none!important;will-change:auto!important; }
/* P46：旧样式表 appmiao 给 .Ktancchuan 加了 perspective:800px（早期翻页动画残留）。
   perspective 不是 none 的元素会成为内部 position:fixed 元素的包含块 ——
   页面自带的固定底栏因此相对「页面层」而非视口定位，页面层一高就跑到屏幕外。
   transform 动画已由壳层用 translateX 实现，perspective 可以完全去掉。 */
.Ktancchuan{ perspective:none!important;-webkit-perspective:none!important; }

/* 子页面内自带的 fixed 底栏，避让底部导航 */
.Ktancchuan .Mchan_dibu,
.Ktancchuan [class*="dibu"][class*="fixed"]{ bottom:calc(var(--hs-nav-h) + env(safe-area-inset-bottom))!important; }
/* 子页面里出现「返回」按钮但已由统一页头接管时隐藏 */
.Ktancchuan .hs-hd .hs-hd-b{ display:flex; }

/* 主 tab 容器 */
[id^="indexaka"]{
  position:absolute!important;top:0!important;left:0!important;right:0!important;
  margin:0 auto!important;transform:none!important;
  width:100%!important;max-width:var(--hs-w)!important;
  height:calc(100% - var(--hs-nav-h) - env(safe-area-inset-bottom))!important;
  overflow-y:auto!important;overflow-x:hidden!important;
  background:var(--hs-bg);z-index:1;
  -webkit-overflow-scrolling:touch;overscroll-behavior:contain;
}
[id^="indexaka"].is-out{ display:none!important; }

/* =========================================================
   8. 兜底：老弹窗（.tishi / 遮罩 / 选择器）限宽居中不再溢出
   ========================================================= */
.tishi{
  position:fixed!important;inset:0!important;width:auto!important;height:auto!important;
  background:rgba(9,17,38,.46)!important;display:flex!important;
  align-items:center!important;justify-content:center!important;
  padding:24px 16px!important;overflow:hidden!important;
  z-index:999999!important;box-sizing:border-box!important;
}
.tishi.is-sheet{ align-items:flex-end!important;padding:0!important; }
.tishi > *{
  width:100%!important;max-width:360px;max-height:82vh;overflow-y:auto;
  margin:0!important;background:#fff;border-radius:20px;
  box-shadow:0 24px 60px rgba(9,17,38,.26);box-sizing:border-box;
  animation:hsUp .26s cubic-bezier(.32,.72,0,1);
  float:none!important;
}
.tishi > .hs-sheet{ max-width:var(--hs-w)!important;border-radius:var(--hs-r-lg) var(--hs-r-lg) 0 0!important; }
/* 老弹窗内部的浮层定位（如手机验证）复位 */
.tishi > * > [class*="haomduan"]{ float:none!important;width:100%!important;margin:0!important; }
.tishilei,.tanlxxz{
  position:fixed!important;inset:0!important;z-index:999999!important;
  background:rgba(9,17,38,.46)!important;display:flex!important;
  align-items:center!important;justify-content:center!important;padding:24px 16px!important;
}
.tishilei > *,.tanlxxz > *{
  width:100%!important;max-width:330px;background:#fff;border-radius:20px!important;
  overflow:hidden;margin:0!important;box-shadow:var(--hs-sh-lg);
}
/* 关键：上面的 display:flex!important 会盖掉老弹窗的内联 display:none，
   导致弹窗常驻全屏（z-index 999999）把整页点击全吞掉。
   属性选择器特异性更高，让「内联隐藏」成为最终态。 */
:is(.tishi,.tishilei,.tanlxxz)[style*="display: none"],
:is(.tishi,.tishilei,.tanlxxz)[style*="display:none"],
:is(.tishi,.tishilei,.tanlxxz)[style*="display: None"],
:is(.tishi,.tishilei,.tanlxxz)[hidden]{ display:none!important; }

/* 遮罩统一 */
#mask,.mask,.zhezhao,#Mckmask,#ztmask,#HsMask{
  background:rgba(9,17,38,.46)!important;
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
}

/* 关注公众号浮条限宽 */
/* P53（需求第 3 项）：关注公众号条要「居中、宽度等于页面区域、不超出」。
   原来只加了 max-width，但它是 content-box，左右 padding + 右侧 72px 的
   按钮让位空间会一起加到宽度上（实测 1440 下宽 542、左边缘 449 越界）。
   改成 border-box + 显式 width，宽度才是真的「内容列 - 24」。 */
#Dindexgz{
  left:0!important;right:0!important;margin:0 auto!important;
  box-sizing:border-box!important;
  width:calc(100% - 24px)!important;
  max-width:calc(var(--hs-w) - 24px)!important;
}

/* 打印 / 桌面端预览：整体居中留白 */
@media (min-width:520px){
  body.hs-body{ background:#E8ECF3; }
  .indexk{ box-shadow:0 0 60px rgba(11,20,40,.1); }
}

/* =========================================================
   9. 分段控件（登录方式切换）
   ========================================================= */
.hs-seg{
  display:flex;gap:4px;padding:4px;background:var(--hs-soft);border-radius:14px;
}
.hs-seg button{
  flex:1;height:38px;border:0;background:transparent;border-radius:11px;cursor:pointer;
  font-family:inherit;font-size:13px;font-weight:600;color:var(--hs-mut);
  display:flex;align-items:center;justify-content:center;gap:5px;
  transition:background .18s,color .18s,box-shadow .18s;
}
.hs-seg button i{ font-size:16px; }
.hs-seg button.on{
  background:#fff;color:var(--hs-primary-d);font-weight:700;
  box-shadow:0 3px 10px rgba(11,20,40,.08);
}

/* =========================================================
   10. 页面层 & 内嵌页细节修正
   ========================================================= */
.Ktancchuan{
  /* P51：原来被强制 margin-left:0，桌面/平板上二级页贴在屏幕最左边，
     与居中的主界面并排显示，看起来像「一个宽一个窄、板块互相遮挡」。
     恢复 auto，保证任何视口下都与壳层同宽同位置（居中）。 */
  margin-left:auto!important;margin-right:auto!important;
}
/* 页面自带的 fixed 底栏统一避让底部导航 */
#Gwcdibu,#Gwcdibu2,[id$="Dibu"],[id$="dibu"]{
  bottom:calc(var(--hs-nav-h) + env(safe-area-inset-bottom))!important;
}
/* 内嵌 tab 内容不再重复留底部空间（壳层已留） */
#indexaka2 .Ktancchuan_nk,#indexaka3 .Ktancchuan_nk{ padding-bottom:16px!important; }
/* 内嵌页顶部条与壳层贴合 */
#indexaka2 .top,#indexaka3 .gzhd{ border-radius:0!important; }

/* 加载页
   P37：启动页样式以 appmiao-1.0-h5.css 为准（该文件在本文件之前加载）。
   这里只保留兜底规则，且必须与之一致（absolute + inset:0），
   否则会被本文件覆盖导致启动页按整屏宽渲染、脱离 body{max-width:480px} 约束。 */
.appmiao_index{
  position:absolute;inset:0;z-index:3000000;background:var(--hs-bg,#F3F5FA);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;
}
.appmiao_index_logo{
  width:104px;height:104px;border-radius:52px;display:flex;align-items:center;justify-content:center;
  /* P41：本文件在 appmiao-1.0-h5.css 之后加载，会覆盖前者的同名规则 ——
     所以这里的兜底值必须同步改为降饱和主色，否则启动页仍是旧宝蓝。 */
  background:linear-gradient(135deg,var(--hs-primary-d),var(--hs-primary-l));color:#fff;font-size:30px;
  box-shadow:0 14px 34px rgba(var(--hs-primary-rgb),.28);
  animation:hsPulse 1.6s ease-in-out infinite;
}
@keyframes hsPulse{ 0%,100%{transform:scale(1)} 50%{transform:scale(1.05)} }
.appmiao_index_tish{
  text-align:center;font-size:13px;color:var(--hs-mut);line-height:1.8;
}
.appmiao_index_tish p{ margin:2px 0 0;font-size:11.5px;color:var(--hs-faint); }
.appmiao_index_tish samp{ color:var(--hs-primary-d);font-weight:700;margin:0 2px; }

/* =========================================================
   9. 省市区选择器（HsRegion · 底部弹层内三级别）
   ========================================================= */
.hs-rg{display:flex;flex-direction:column;height:100%;}
.hs-rg-bar{display:flex;align-items:center;gap:6px;padding:10px 16px 12px;border-bottom:1px solid var(--hs-line2);}
.hs-rg-bar span{
  flex:1;min-width:0;height:32px;border-radius:10px;background:var(--hs-soft);color:var(--hs-mut);
  font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;
  padding:0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.hs-rg-bar span.on{background:rgba(var(--hs-primary-rgb),.1);color:var(--hs-primary-d);}
.hs-rg-bar span.done{background:rgba(var(--hs-primary-rgb),.06);color:#4A6BD6;}
.hs-rg-bar i{width:10px;height:1px;background:#D8DEEA;flex-shrink:0;}
.hs-rg-sr{display:flex;align-items:center;gap:8px;margin:10px 16px 0;height:38px;padding:0 12px;
  background:var(--hs-soft);border-radius:12px;}
.hs-rg-sr i{font-size:15px;color:var(--hs-faint);}
.hs-rg-sr input{flex:1;min-width:0;height:100%;border:0;outline:none;background:transparent;
  font-size:13px;color:var(--hs-ink);font-family:inherit;}
.hs-rg-l{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:6px 8px 10px;max-height:52vh;}
.hs-rg-i{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:12px 10px;border-radius:11px;font-size:13.5px;color:var(--hs-ink);cursor:pointer;}
.hs-rg-i:active{background:var(--hs-soft);}
.hs-rg-i i{font-size:15px;color:#C9D0DE;}
.hs-rg-i.on{background:rgba(var(--hs-primary-rgb),.07);color:var(--hs-primary-d);font-weight:700;}
.hs-rg-i.on i{color:var(--hs-primary-d);}
.hs-rg-e{padding:40px 0;text-align:center;font-size:12.5px;color:var(--hs-faint);}

/* =========================================================
   10. 全局表单焦点规范化（统一到此，页面内不用再各写一套）
   ========================================================= */
.hs-field input,.hs-field textarea,.hs-field select,
.hs-dlg-bd input,.hs-dlg-bd textarea,.hs-dlg-bd select{
  transition:border-color .16s ease,box-shadow .16s ease,background .16s ease;
}
.hs-dlg-bd input:focus,.hs-dlg-bd textarea:focus,.hs-dlg-bd select:focus{outline:none!important;}
/* 子页面里的裸 input 也给到一致的焦点反馈 */
.Ktancchuan input:not([type=checkbox]):not([type=radio]):focus,
.Ktancchuan textarea:focus,
.Ktancchuan select:focus{outline:none!important;}

/* =========================================================
   11. 统一页头返回按钮（无背景 · 40px 触控区）
   ========================================================= */
.hs-back{
  width:40px;height:40px;margin-left:-8px;border-radius:0;background:transparent!important;
  border:0;display:flex;align-items:center;justify-content:center;
  font-size:21px;color:var(--hs-ink);cursor:pointer;flex-shrink:0;
  -webkit-tap-highlight-color:transparent;
}
.hs-back:active{opacity:.55;}
.hs-back i{font-size:21px;line-height:1;}
/* 深色/渐变头里的返回按钮：只变颜色，不加底色 */
.hs-back--on-dark{color:#fff!important;}

/* =========================================================
   12. 统一子页页头（.HsPgHd / .HsPgBack / .HsPgTit / .HsPgTag）
   15 个页面共用同一结构，此前没有样式 → 图标错位、无点击区
   ========================================================= */
.HsPgHd{
  position:sticky;top:0;z-index:900;
  display:flex;align-items:center;gap:8px;
  height:calc(52px + env(safe-area-inset-top));
  padding:env(safe-area-inset-top) 14px 0;
  background:rgba(255,255,255,.96);
  backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);
  border-bottom:1px solid rgba(11,20,40,.055);
}
.HsPgHd .HsPgBack{
  width:40px;height:40px;margin-left:-9px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:20px;color:#0B1428;cursor:pointer;background:transparent;border:0;
  -webkit-tap-highlight-color:transparent;
}
.HsPgHd .HsPgBack:active{opacity:.5;}
.HsPgHd .HsPgBack .icon,
.HsPgHd .HsPgBack .iconfont{font-size:19px;line-height:1;}
.HsPgHd .HsPgTit{
  flex:1;min-width:0;font-size:16.5px;font-weight:750;color:#0B1428;letter-spacing:.2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.HsPgHd .HsPgTag{
  flex-shrink:0;height:23px;padding:0 9px;border-radius:8px;
  background:#E8F4FC;color:var(--hs-primary-d);font-size:10.5px;font-weight:700;
  display:flex;align-items:center;gap:3px;
}
/* 老页面把标题写成 h2/h3 时也归一 */
.HsPgHd h2,.HsPgHd h3{flex:1;min-width:0;font-size:16.5px;font-weight:750;color:#0B1428;margin:0;}

/* =========================================================
   13. 富文本编辑器（移动端）
   ========================================================= */
.hs-ed{
  border:1.5px solid #E4EAF4;border-radius:14px;background:#fff;overflow:hidden;
  transition:border-color .16s,box-shadow .16s;
}
.hs-ed-bar{
  display:flex;align-items:center;gap:1px;padding:5px 6px;flex-wrap:wrap;
  background:#FBFCFF;border-bottom:1px solid #EEF2F8;
}
.hs-ed-bar::-webkit-scrollbar{display:none;}
.hs-ed-b{
  flex:0 0 auto;width:31px;height:29px;border:0;background:transparent;border-radius:8px;
  color:#5A677F;font-size:15px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;padding:0;font-family:inherit;
}
.hs-ed-b i{font-size:16px;line-height:1;display:block;}
.hs-ed-b:active{background:#EAF0FF;color:var(--hs-primary-d);}
.hs-ed-b.on{background:#E7EFFF;color:var(--hs-primary-d);}
.hs-ed-sp{flex:0 0 auto;width:1px;height:17px;background:#E7ECF4;margin:0 4px;}
.hs-ed-area{
  padding:12px 13px;font-size:13.5px;line-height:1.82;color:#1D2739;outline:none;
  word-break:break-word;overflow-y:auto;-webkit-overflow-scrolling:touch;
}
.hs-ed-area.is-empty::before{
  content:attr(data-ph);color:#B6BFCE;pointer-events:none;display:block;
}
.hs-ed-area p{margin:0 0 8px;}
.hs-ed-area p:last-child{margin-bottom:0;}
.hs-ed-area h1,.hs-ed-area h2,.hs-ed-area h3{font-size:16px;font-weight:750;color:#0B1428;margin:12px 0 7px;line-height:1.5;}
.hs-ed-area h1:first-child,.hs-ed-area h2:first-child,.hs-ed-area h3:first-child{margin-top:0;}
.hs-ed-area blockquote{
  margin:9px 0;padding:7px 12px;
  background:#EEF7FD;border-radius:9px;color:#4A5568;font-size:13px;
}
.hs-ed-area pre{
  margin:9px 0;padding:9px 11px;border-radius:9px;background:#F2F5FA;
  font-family:Consolas,monospace;font-size:12.5px;line-height:1.7;overflow-x:auto;
}
.hs-ed-area ul,.hs-ed-area ol{margin:8px 0;padding-left:21px;}
.hs-ed-area li{margin:3px 0;}
.hs-ed-area table{width:100%;border-collapse:collapse;font-size:12.5px;margin:9px 0;}
.hs-ed-area th,.hs-ed-area td{border:1px solid #E4EAF4;padding:6px 8px;}
.hs-ed-area th{background:#EEF7FD;font-weight:700;}
.hs-ed-area img{max-width:100%;border-radius:8px;margin:5px 0;display:block;}
.hs-ed-area hr{border:0;border-top:1px dashed #DDE4F0;margin:12px 0;}
.hs-ed-area a{color:var(--hs-primary-d);text-decoration:underline;}
.hs-ed-ft{
  display:flex;justify-content:flex-end;padding:5px 11px 6px;font-size:10.5px;color:#A6AEC0;
  background:#FCFDFF;border-top:1px solid #F4F7FC;
}
.hs-ed-ft [data-cnt]{font-variant-numeric:tabular-nums;font-weight:700;color:#8A94A6;margin-right:2px;}

/* 只读富文本渲染（商品详情等） */
.hs-rich{font-size:13.5px;line-height:1.85;color:#374256;word-break:break-word;}
.hs-rich p{margin:0 0 9px;}
.hs-rich img{max-width:100%;border-radius:10px;margin:6px 0;display:block;}
.hs-rich h2{font-size:16px;font-weight:750;color:#0B1428;margin:14px 0 8px;}
.hs-rich ul,.hs-rich ol{padding-left:21px;margin:8px 0;}
.hs-rich blockquote{margin:9px 0;padding:7px 12px;background:#EEF7FD;border-radius:9px;}
.hs-rich table{width:100%;border-collapse:collapse;margin:8px 0;}
.hs-rich th,.hs-rich td{border:1px solid #E7ECF4;padding:6px 8px;font-size:12.5px;}
.hs-rich a{color:var(--hs-primary-d);}

/* =========================================================================
   13. 表单基线 v2（P29）
   背景：全站 46 个 <input> / <textarea> / <select> 没写任何 class，
        走的是浏览器默认外观（灰方块边、无圆角、无焦点反馈），
        与系统「琉璃」风格完全脱节；带 class 的那批又各自手写一套，尺寸不一。
   策略：
     - 裸标签（无 class）→ 给完整重绘（页面本来就没定义，不存在覆盖风险）
     - 已有 class（.EdIn/.ZtIn/.JlIn/.FkIn…）→ 只用 0 优先级 :where() 补缺
     - 尺寸统一：44px 触控高度 / 12px 圆角 / 1.5px 描边 / 15px 字
   ========================================================================= */

/* 13.1 通用补强（0 优先级，绝不覆盖页面自己的设计） */
:where(.Ktancchuan,.hs-mask,.hs-sheet,.hs-dlg-bd,.HsFm) :where(input,textarea,select){
  box-sizing:border-box;
  font-family:inherit;
  transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease;
}
:where(.Ktancchuan,.hs-mask,.hs-sheet,.hs-dlg-bd,.HsFm) :where(textarea){ resize:vertical; }
:where(.Ktancchuan,.hs-mask,.hs-sheet,.hs-dlg-bd,.HsFm) :where(input,textarea)::placeholder{
  color:#B6BFCE;opacity:1;
}
:where(.Ktancchuan,.hs-mask,.hs-sheet,.hs-dlg-bd,.HsFm) :where(input,textarea,select):disabled{
  background:#F5F7FC!important;color:#A6AEC0!important;cursor:not-allowed;
  -webkit-text-fill-color:#A6AEC0;
}
:where(.Ktancchuan,.hs-mask,.hs-sheet,.hs-dlg-bd,.HsFm) :where(input,textarea)[readonly]{
  background:#F9FAFE;
}
/* 错误态：三种写法都认（.err / .is-err / aria-invalid） */
:where(.Ktancchuan,.hs-mask,.hs-sheet,.hs-dlg-bd,.HsFm) :where(input,textarea,select).err,
:where(.Ktancchuan,.hs-mask,.hs-sheet,.hs-dlg-bd,.HsFm) :where(input,textarea,select).is-err,
:where(.Ktancchuan,.hs-mask,.hs-sheet,.hs-dlg-bd,.HsFm) :where(input,textarea,select)[aria-invalid="true"]{
  border-color:#F04438!important;
  box-shadow:0 0 0 3px rgba(240,68,56,.10)!important;
  background:#FFFBFA!important;
}

/* 13.2 去掉浏览器默认装饰 */
input[type=search]::-webkit-search-decoration,
input[type=search]::-webkit-search-cancel-button,
input[type=search]::-webkit-search-results-button{ -webkit-appearance:none;display:none; }
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{ -webkit-appearance:none;margin:0; }
input[type=number]{ -moz-appearance:textfield;appearance:textfield; }
input[type=date]::-webkit-calendar-picker-indicator,
input[type=time]::-webkit-calendar-picker-indicator{ opacity:.45; }
input[type=file]{ cursor:pointer; }
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus{-webkit-text-fill-color:#0B1428; -webkit-box-shadow:0 0 0 1000px #fff inset; transition:background-color 9999s ease-out 0s;}
/* 勾选框 / 单选统一品牌色 */
:where(.Ktancchuan,.hs-mask,.hs-sheet,.HsFm) input[type=checkbox],
:where(.Ktancchuan,.hs-mask,.hs-sheet,.HsFm) input[type=radio]{
  accent-color:var(--hs-primary-d);width:18px;height:18px;vertical-align:-3px;margin:0 4px 0 0;cursor:pointer;
}

/* 13.3 裸控件的自动接管（由 hsui.js 的 HsFormScan 打标）
   为什么要打标而不是靠 CSS 选择器：
     同一批「没有 class 的 input」，处境的两种可能完全相反 ——
       · 直接放在页面上 → 需要完整外观（边框 / 圆角 / 44px）
       · 放在 .MbBar .box、.hs-field 这类「已经有边框的容器」里 → 必须回到无框，
         否则会出现双层边框，且 44px 会撑破 40px 的容器
     CSS 无法判断父元素是不是容器，所以交给 JS 判一次，打上 HsIn / HsIn--bare。 */
.HsIn{
  display:block;width:100%;max-width:100%;box-sizing:border-box;
  height:44px;padding:0 13px;margin:0;
  border:1.5px solid #E8EDF6!important;border-radius:12px!important;
  background-color:#fff!important;color:#0B1428;
  font-size:15px;line-height:1.4;font-family:inherit;
  outline:none;-webkit-appearance:none;appearance:none;
  box-shadow:0 1px 2px rgba(11,20,40,.025);
  transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease;
}
textarea.HsIn{ height:auto;min-height:92px;padding:11px 13px;line-height:1.7;resize:vertical; }
select.HsIn{
  padding-right:38px;cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23767F94' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;
  background-position:right 14px center!important;
  background-size:12px 8px!important;
}
.HsIn:focus{outline:none!important;}
.HsIn:disabled{ background-color:#F5F7FC!important;color:#A6AEC0!important;-webkit-text-fill-color:#A6AEC0;cursor:not-allowed; }
.HsIn[readonly]{ background-color:#F9FAFE!important; }
/* 容器已经负责边框：内部输入体回到无框、撑满、继承字号 */
.HsIn--bare{
  display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box;
  height:100%;min-height:24px;padding:0!important;margin:0;
  border:0!important;border-radius:0!important;background:transparent!important;
  box-shadow:none!important;color:#0B1428;
  font-size:inherit;line-height:1.4;font-family:inherit;
  outline:none;-webkit-appearance:none;appearance:none;
}
.HsIn--bare:focus{border:0!important; outline:none!important;}
.HsIn--bare::placeholder{ color:#B6BFCE; }

/* 13.4 带 class 的这批统一到同一套度量（视觉一致，但保留各自类名）*/
:where(.EdIn,.EdTa,.ZtIn,.ZtTa,.JlIn,.JlTa,.FkIn,.FkTa,.MbF .in,.OrIn,.CkIn,.YeIn,.OdIn,.PgIn){
  font-size:15px!important;
  color:#0B1428;
  box-shadow:0 1px 2px rgba(11,20,40,.025);
}
:where(.EdTa,.ZtTa,.JlTa,.FkTa){ min-height:92px;line-height:1.7; }

/* 13.5 统一表单结构类（新页面/改造页面可直接用）
   结构：<div class="HsFm"><div class="HsFmRow"><label class="HsFmLab">名称<em>*</em></label>
           <input class="HsFmIn"> <p class="HsFmTip">说明</p></div></div> */
.HsFm{ display:flex;flex-direction:column;gap:14px; }
.HsFmRow{ display:flex;flex-direction:column;gap:7px; }
.HsFmRow--inline{ flex-direction:row;align-items:center;gap:12px; }
.HsFmLab{
  display:flex;align-items:center;gap:4px;
  font-size:12.5px;font-weight:750;color:#4A5568;letter-spacing:.1px;
}
.HsFmLab em{ font-style:normal;color:#F04438;font-weight:800; }
.HsFmLab .HsFmOpt{ font-size:11px;font-weight:600;color:#A6AEC0;margin-left:auto; }
.HsFmIn{
  display:block;width:100%;box-sizing:border-box;height:44px;padding:0 13px;
  border:1.5px solid #E8EDF6;border-radius:12px;background:#fff;color:#0B1428;
  font-size:15px;font-family:inherit;outline:none;-webkit-appearance:none;appearance:none;
  transition:border-color .16s ease,box-shadow .16s ease;
}
.HsFmIn--area{ height:auto;min-height:92px;padding:11px 13px;line-height:1.7;resize:vertical; }
.HsFmTip{ font-size:11.5px;color:#A6AEC0;line-height:1.6;margin:0; }
.HsFmErr{ font-size:11.5px;color:#F04438;line-height:1.6;margin:0;font-weight:650; }
.HsFmErr:empty,.HsFmTip:empty{ display:none; }
.HsFmCnt{ font-size:11px;color:#A6AEC0;text-align:right;margin:0;font-variant-numeric:tabular-nums; }
.HsFmCnt.is-near{ color:#F79009; }
.HsFmCnt.is-over{ color:#F04438; }
/* 带前后缀的输入组 */
.HsFmGroup{
  display:flex;align-items:center;box-sizing:border-box;min-height:44px;
  border:1.5px solid #E8EDF6;border-radius:12px;background:#fff;overflow:hidden;
  transition:border-color .16s ease,box-shadow .16s ease;
}
.HsFmGroup > span{ flex-shrink:0;padding:0 4px 0 13px;font-size:14px;color:#767F94;font-weight:650; }
.HsFmGroup > input{ flex:1;min-width:0;height:41px;border:0!important;box-shadow:none!important;
  background:transparent!important;padding:0 13px 0 8px;font-size:15px;outline:none; }
.HsFmGroup > .HsFmSuf{ padding:0 13px 0 4px;color:#A6AEC0; }

/* =========================================================================
   14. 页面层动效 v2（P29 · 打开 / 切换 / 关闭）
   改动点：
     1. 打开：新层右滑入 + 下层同步左移 22%（视差推挤），有层次感
     2. 关闭：反向复位，下层回到原位
     3. 首帧用双 rAF + 强制布局保证过渡一定触发（老机型此前直接闪现）
     4. 过渡结束后清掉 will-change，避免多层叠栈吃显存
   ========================================================================= */
.Ktancchuan{
  /* P57（需求第 3 项）：只做 transform，不再顺带过渡 opacity ——
     整层透明过渡会让浏览器在每一帧重绘整页内容，长页面直接掉帧。 */
  transition:transform var(--hs-pg-dur) var(--hs-pg-ease);
  transform:translateX(0);
  backface-visibility:hidden;
}
/* P57（需求第 3 项）· 页面切换动效收敛为一套
   ------------------------------------------------------------------
   之前是「双 rAF + 内层再跑一个 hsFade + 整层 opacity 过渡」：
     · 内层淡入（.Ktancchuan_nk 的 animation）让每次开页都要把整页内容
       重新合成一遍，长列表页（订单、追溯库）开起来明显一顿；
     · 整层 opacity 与滑入同时进行，两个动画叠在一起，观感是「发虚」；
     · 下层被推到 -100%，中间只靠两帧对齐，出现撕裂/闪白。
   现在改成标准「视差推入」：
     下层左移 30% + 压一层半透明遮罩（深度感），
     新页从右侧 100% 滑到 0（带左侧投影），
     两者同一条曲线（--hs-pg-ease）、同一时长（--hs-pg-dur），
     任一时刻新页左边缘都在下层右边缘之内，不会露底。 */
:root{
  --hs-pg-dur:.26s;
  --hs-pg-ease:cubic-bezier(.22,.7,.2,1);
}
.Ktancchuan--behind{
  /* P77：覆盖式切换，不再把旧页横向推开 */
  transform:none!important;
  opacity:0!important;
  pointer-events:none;
}
/* 主 tab 面板：被推走 / 复位（和子页用完全相同的曲线与时长） */
[id^="indexaka"]{
  transition:transform var(--hs-pg-dur) var(--hs-pg-ease);
  backface-visibility:hidden;
}
[id^="indexaka"].hs-tab-behind{
  transform:translateX(0)!important;
  opacity:0!important;
  pointer-events:none;
}
.Ktancchuan--in{
  will-change:transform,opacity;
  box-shadow:0 -10px 30px rgba(9,17,34,.10);
}
/* 关闭时同一条曲线滑出（--settled 的 transform:none!important 会压掉动画，
   所以这里给 --out 一个 !important 的目标值） */
.Ktancchuan--out{ pointer-events:none; opacity:0; transform:translateY(10px)!important;
  transition:transform .2s ease,opacity .2s ease!important; }
.Ktancchuan--settled{ will-change:auto; box-shadow:none; }

/* 推入过程中压在下层上的遮罩：由壳层动态插入，动画结束即移除 */
.hs-pg-scrim{
  position:fixed;inset:0;z-index:9990;
  background:rgba(7,14,28,.26);
  opacity:0;pointer-events:none;
  transition:opacity var(--hs-pg-dur) linear;
  will-change:opacity;
}
.hs-pg-scrim.on{ opacity:1; }

/* 推拉过程中禁掉横向滚动条抖动 */
html.hs-pushing,html.hs-pushing body{ overflow-x:hidden!important; }

/* 主 tab 切换：淡入 + 轻微上移，比纯淡入更有方向感 */
@keyframes hsTabIn{
  from{ opacity:0;transform:translateY(5px); }
  to{ opacity:1;transform:translateY(0); }
}
@keyframes hsTabOut{
  from{ opacity:1; }
  to{ opacity:0; }
}

/* 无障碍：系统开了「减弱动态效果」就全部退化为纯淡入 */
@media (prefers-reduced-motion: reduce){
  .Ktancchuan{ transition:opacity .18s linear!important; }
  .Ktancchuan--behind{ transform:translateX(0)!important;filter:none; }
  [id^="indexaka"].hs-tab-behind{ transform:translateX(0)!important; }
  [id^="indexaka"]{ animation:hsFade .18s linear!important; }
  .hs-mask,.hs-sheet,.hs-dlg,.hs-act{ transition-duration:.14s!important; }
}

/* ===== P31 横向滚动渐隐 =====
   chips / 筛选条横滑时，右缘留一层淡出，避免最后一项被硬切 */
.hs-xs{
  -webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 26px),rgba(0,0,0,0) 100%);
  mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 26px),rgba(0,0,0,0) 100%);
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-size:100% 100%;mask-size:100% 100%;
}
.hs-xs.hs-xs-end{
  -webkit-mask-image:none;mask-image:none;
}

/* =====================================================================
   P32 · 表单与输入框增强
   ---------------------------------------------------------------------
   1) 搜索框：统一带右侧清除按钮，输入非空才出现
   2) 文本域：带字数计数，接近上限变红
   3) 必填项：星号统一配色
   4) 聚焦：移动端键盘弹出时把输入框滚到可视区中部
   ===================================================================== */

/* ---------- 1. 搜索框清除按钮 ---------- */
.hs-hasclr{ position:relative; }
.hs-clr{
  position:absolute; right:9px; top:50%; transform:translateY(-50%);
  width:22px; height:22px; border-radius:50%;
  display:none; align-items:center; justify-content:center;
  font-size:15px; line-height:1; color:#C6CDDA;
  cursor:pointer; z-index:3; -webkit-tap-highlight-color:transparent;
}
.hs-clr.on{ display:flex; }
.hs-clr:active{ color:#8A94A6; transform:translateY(-50%) scale(.88); }
/* 有清除按钮时右侧留位，避免文字被压到按钮下面 */
.hs-hasclr > input,
.hs-hasclr > .HsIn{ padding-right:36px !important; }
/* 搜索框统一圆角胶囊感 + 浅底，和圆角输入框区分开 */
.hs-search{
  border-radius:12px !important;
  background-color:#F5F7FC !important;
  border-color:transparent !important;
}
/* 原生 search 的清除叉（Safari/Chrome）与自绘按钮重复，去掉 */
input[type="search"].hs-search::-webkit-search-cancel-button,
input[type="search"].hs-search::-webkit-search-decoration{ -webkit-appearance:none; appearance:none; }

/* ---------- 2. 字数计数 ---------- */
.hs-cnt{
  display:block; text-align:right;
  margin:5px 2px 0; font-size:11px; line-height:1.4;
  color:#A6AEC0; letter-spacing:.2px;
  font-variant-numeric:tabular-nums;
}
.hs-cnt.is-near{ color:#F79009; }
.hs-cnt.is-max{ color:#F04438; font-weight:700; }

/* ---------- 3. 必填项 ---------- */
.hs-req,.GlField label em.req{ color:#F04438; font-style:normal; font-weight:700; }
/* 页面里手写的「*」统一成红色小星，不再忽大忽小 */
[data-hs-req] > *:first-child::after{
  content:''; display:none;
}

/* ---------- 4. placeholder 统一 ---------- */
input::placeholder, textarea::placeholder{ color:#B6BFCE; opacity:1; }
input::-webkit-input-placeholder, textarea::-webkit-input-placeholder{ color:#B6BFCE; opacity:1; }
input:disabled::placeholder, textarea:disabled::placeholder{ color:#C9CFDA; }

/* ---------- 5. 只读/禁用信息行（不是输入框，别让人以为能点） ---------- */
.HsIn[readonly]{ cursor:default; }

/* =====================================================================
   P33 · 组合框（select）统一改为「点击 → 底部弹窗」
   ---------------------------------------------------------------------
   1) 组合框本体：去掉原生箭头，改画 SVG chevron —— 右边始终有下箭头
   2) 选项弹窗：从底部升起，当前值打勾，选项 ≥ 8 条自动出搜索框
   ===================================================================== */

/* ---------- 1. 组合框本体 ----------
   选择器带 body 前缀：壳层 index.html 里有一条 `.hs-field select{background:transparent!important}`，
   它是 (0,1,1) 且写在 hsui.css 之后，单靠 `select.hs-pick` 会打平后被压掉（箭头就没了）。
   `body select.hs-pick` = (0,1,2)，不靠书写顺序也能压住它。 */
body select.hs-pick{
  -webkit-appearance:none; appearance:none;
  cursor:pointer;
  /* 真机上原生 select 的选项面板是系统 UI，click 拦不住；
     只能让它「接不到指针」，点击落到外层容器，再由 document 委托按坐标找回它 */
  pointer-events:none;
  overflow:hidden; white-space:nowrap; text-overflow:ellipsis;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23767F94' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;
  background-position:right 4px center!important;
  background-size:10px 6.6px!important;
  padding-right:19px!important;
}
/* 已经套了 .HsIn 完整外观的，箭头回到 14px 位置、保留 38px 右留白 */
select.hs-pick.HsIn{
  padding-right:38px!important;
  background-position:right 14px center!important;
  background-size:12px 8px!important;
}
/* 禁用：不画箭头（看着就不像能点），指针也不给 */
body select.hs-pick:disabled{
  background-image:none!important;
  cursor:not-allowed;
}

/* ---------- 2. 底部选项弹窗 ---------- */
.hs-pk{
  width:100%; max-width:var(--hs-w); max-height:76vh;
  background:#fff; border-radius:var(--hs-r-lg) var(--hs-r-lg) 0 0;
  display:flex; flex-direction:column; overflow:hidden;
  box-shadow:0 -18px 50px rgba(9,17,38,.22);
  transform:translateY(100%); transition:transform .3s cubic-bezier(.32,.72,0,1);
  padding-bottom:env(safe-area-inset-bottom);
}
.hs-mask.is-in .hs-pk{ transform:translateY(0); }

.hs-pk-hd{
  position:relative; flex-shrink:0; padding:16px 64px 13px; text-align:center;
  border-bottom:1px solid var(--hs-line2);
}
.hs-pk-hd::before{
  content:''; position:absolute; top:7px; left:50%; transform:translateX(-50%);
  width:36px; height:4px; border-radius:3px; background:#E4E9F2;
}
.hs-pk-hd b{
  display:block; font-size:15.5px; font-weight:750; color:var(--hs-ink);
  line-height:1.35; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.hs-pk-x{
  position:absolute; right:12px; top:50%; transform:translateY(-50%);
  height:30px; padding:0 10px; border:0; border-radius:9px; background:transparent;
  color:var(--hs-primary-d); font-size:13.5px; font-weight:650; font-family:inherit; cursor:pointer;
}
.hs-pk-x:active{ background:rgba(var(--hs-primary-rgb),.08); }

.hs-pk-sr{
  position:relative; flex-shrink:0; padding:10px 16px 4px;
}
.hs-pk-sr i{
  position:absolute; left:30px; top:50%; transform:translateY(-40%);
  font-size:16px; color:var(--hs-faint);
}
.hs-pk-sr input{
  width:100%; height:38px; padding:0 12px 0 38px;
  border:1px solid var(--hs-line); border-radius:11px; background:#F7F9FE;
  font-size:14px; color:var(--hs-ink); outline:none;
}

.hs-pk-bd{
  position:relative; flex:1; min-height:0; overflow-y:auto;
  -webkit-overflow-scrolling:touch; overscroll-behavior:contain;
}
.hs-pk-i{
  display:flex; align-items:center; gap:10px; width:100%; height:52px; padding:0 18px;
  border:0; border-bottom:1px solid var(--hs-line2); background:#fff;
  font-family:inherit; font-size:15px; color:var(--hs-ink2); text-align:left; cursor:pointer;
}
.hs-pk-i:last-child{ border-bottom:0; }
.hs-pk-i span{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.hs-pk-i i{ font-size:18px; color:var(--hs-primary-d); opacity:0; flex-shrink:0; }
.hs-pk-i.on{ color:var(--hs-primary-d); font-weight:700; background:#F2F9FE; }
.hs-pk-i.on i{ opacity:1; }
.hs-pk-i:active{ background:var(--hs-soft); }
.hs-pk-i.is-dis{ color:var(--hs-faint); cursor:not-allowed; background:#FCFDFF; }
.hs-pk-i.is-dis i{ display:none; }

.hs-pk-gp{
  padding:12px 18px 5px; font-size:11.5px; font-weight:750; letter-spacing:.4px;
  color:var(--hs-faint); background:#FBFCFE; border-bottom:1px solid var(--hs-line2);
}
.hs-pk-empty{ padding:44px 20px; text-align:center; font-size:13px; color:var(--hs-faint); }

/* 搜索过滤时隐藏不匹配项 */
.hs-pk-i.is-hide,.hs-pk-gp.is-hide,.hs-pk-empty.is-hide{ display:none; }

/* 桌面浏览器预览时底部弹窗贴着 480px 居中，圆角补满更好看 */
@media (min-width:520px){
  .hs-pk{ border-radius:24px 24px 0 0; }
}

/* =========================================================================
   14. P35 · 输入框 / 搜索框 / 排版规范
   ---------------------------------------------------------------------------
   问题：全站 40+ 个页面每页自己写搜索框，结构有六种
        （.HbSearch / .PgSearch .box / .MbBar .box / .PcSearch / .CpSearch /
          .FkBar .box），高度在 40~44 之间跳、圆角 12~14 之间跳、
        聚焦时有的变色有的不变、字号 13~13.5 之间跳 —— 翻页时明显「不是一套东西」。
   做法：不在每个页面里改 DOM，而是由 hsui.js 的 HsFormScan 识别
        「图标 + input」的搜索条结构，统一打上 .hs-sbar，
        由本节给出唯一的视觉实现。
   注意：业务页的 <style> 是运行时注入的，顺序在 hsui.css 之后，
        同优先级会输给页面自己那套，所以几何类属性必须带 !important 才能压住。
   ========================================================================= */

/* ---- 14.1 搜索条：标准容器 ----
   注意：这里只统一「几何」（高度/圆角/内边距/字号/图标尺寸），
   背景、边框、阴影留给页面自己 —— 因为商城顶部、帮助中心顶部
   的搜索框是浮在深色渐变上的白卡，各自带很强的投影，
   一刀切成同一个阴影反而会丢掉页面的层次感。
   需要标准外观时，页面容器背景是纯白的（未被判为 hs-sbar--keep）。 */
.hs-sbar{
  display:flex!important;align-items:center!important;gap:9px!important;
  height:44px!important;padding:0 6px 0 13px!important;
  border-radius:13px!important;
  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease!important;
  -webkit-appearance:none;appearance:none;
}
.hs-sbar:not(.hs-sbar--keep){
  background:#fff!important;
  border:1.5px solid #E7ECF5!important;
  box-shadow:0 2px 8px rgba(11,20,40,.045)!important;
}
.hs-sbar > i{
  font-size:17px!important;color:#A6AEC0!important;flex-shrink:0!important;
  transition:color .18s ease;
}
.hs-sbar:focus-within > i{color:var(--hs-primary-d)!important;}
.hs-sbar > input,
.hs-sbar > .HsIn,
.hs-sbar > .HsIn--bare{
  flex:1!important;min-width:0!important;
  /* P36：搜索条内层输入体与全站输入框统一 —— 35px / 18px 加粗。
     这里原本写的是 height:100%（撑满 44px 的搜索条），与第 15 章的
     35px 规范冲突，且本规则特异性(.hs-sbar > input = 0,1,1)高于
     .hs-in-std(0,1,0)，会赢掉 !important 之外的任何设置。 */
  height:35px!important;line-height:35px!important;
  border:0!important;background:transparent!important;box-shadow:none!important;
  padding:0!important;border-radius:0!important;
  font-size:18px!important;font-weight:700!important;letter-spacing:.6px;
  color:var(--hs-ink)!important;font-family:inherit!important;
  outline:none;-webkit-appearance:none;appearance:none;
}
.hs-sbar > input::placeholder,
.hs-sbar > .HsIn::placeholder,
.hs-sbar > .HsIn--bare::placeholder{ color:#B6BFCE!important;font-size:15px!important; }
/* 清除按钮（hsui.js 自动插入，落在输入框与搜索按钮之间）*/
.hs-sbar > .hs-clr{
  width:22px!important;height:22px!important;flex-shrink:0!important;padding:0!important;
  border:0!important;border-radius:50%!important;background:#EDF0F7!important;color:#8A94A6!important;
  font-size:12px!important;line-height:1!important;cursor:pointer;
  display:none!important;align-items:center;justify-content:center;
}
.hs-sbar > .hs-clr.on{ display:flex!important; }
.hs-sbar > .hs-clr:active{ transform:scale(.9); }
/* 搜索按钮：只统一尺寸与圆角，保留页面自己的配色语义 */
.hs-sbar > button{
  flex:0 0 auto!important;height:34px!important;padding:0 15px!important;margin:0!important;
  border-radius:10px!important;border:0!important;
  font-family:inherit!important;font-size:12.5px!important;font-weight:700!important;
  cursor:pointer;transition:transform .12s ease,box-shadow .18s ease;
}
.hs-sbar > button:active{ transform:scale(.97); }
/* 页面自绘的清除按钮（.clr / .hs-hasclr）不要和系统清除按钮重复 */
.hs-sbar > .clr{ width:24px!important;height:24px!important;flex-shrink:0!important; }

/* 搜索条在极窄屏（≤340px）下压缩内边距，避免图标与按钮被挤掉 */
@media (max-width:340px){
  .hs-sbar{ height:42px!important;padding-left:10px!important;gap:7px!important; }
  .hs-sbar > button{ padding:0 12px!important; }
}

/* ---- 14.2 标准输入框：容器型（.hs-field）度量统一 ---- */
.hs-field{
  height:46px!important;padding:0 13px!important;gap:9px!important;
  background:#F7F9FE!important;border:1.5px solid #E7ECF5!important;border-radius:13px!important;
  box-shadow:none!important;
  transition:border-color .18s ease,background .18s ease,box-shadow .18s ease!important;
}
.hs-field:hover{ border-color:#DCE4F2!important; }
.hs-field > i{ font-size:18px!important;color:#A6AEC0!important; }
.hs-field:focus-within > i{color:var(--hs-primary-d)!important;}
.hs-field input,.hs-field textarea,.hs-field select{
  font-size:16px!important;color:var(--hs-ink)!important;line-height:1.4!important;
}
.hs-field input::placeholder,
.hs-field textarea::placeholder{ color:#B6BFCE!important;font-size:15px!important; }
.hs-field--area{
  height:auto!important;min-height:96px!important;padding:12px 13px!important;align-items:flex-start!important;
}
.hs-field--area textarea{ min-height:96px!important;line-height:1.7!important;resize:vertical!important; }

/* ---- 14.3 表单排版：标签与字段的节奏 ---- */
.hs-label,.HsFmLab{
  margin:0 0 8px!important;font-size:13px!important;font-weight:700!important;color:var(--hs-ink-2)!important;
  letter-spacing:.2px;display:flex!important;align-items:center;gap:4px;
}
.hs-help,.HsFmTip{
  margin:7px 0 0!important;font-size:11.5px!important;color:var(--hs-faint)!important;line-height:1.65!important;
}
/* 一组字段之间统一 15px 呼吸间距 */
.HsFm{ gap:15px!important; }
.HsFmRow{ gap:7px; }

/* ---- 14.4 页面排版：区块 / 标题 / 列表节奏 ---- */
.hs-sec{ margin:0 0 12px; }
.hs-sec-hd{
  display:flex;align-items:center;gap:8px;margin:0 2px 10px;
}
.hs-sec-hd b{
  font-size:15px;font-weight:750;color:var(--hs-ink);letter-spacing:.1px;
  display:flex;align-items:center;gap:7px;
}
.hs-sec-hd b::before{
  content:'';width:3px;height:14px;border-radius:2px;
  background:var(--hs-primary);
}
.hs-sec-hd span{ font-size:11.5px;color:var(--hs-faint); }
.hs-sec-hd .hs-sec-more{
  margin-left:auto;font-size:12px;color:var(--hs-mut);font-weight:600;
  display:flex;align-items:center;gap:2px;cursor:pointer;
}
.hs-sec-hd .hs-sec-more:active{ color:var(--hs-primary-d); }

/* 列表项：触控高度与文字层级统一 */
.hs-li{ padding:13px 14px; }
.hs-li-tx b{ font-size:14.5px;font-weight:650;line-height:1.45; }
.hs-li-tx span{ font-size:11.5px;color:var(--hs-faint);margin-top:3px;line-height:1.55; }

/* 卡片圆角与阴影统一 */
.hs-card{
  border-radius:16px;padding:15px 14px;margin-bottom:12px;
  box-shadow:0 3px 14px rgba(15,26,46,.05);
}

/* ---- 14.5 空态 / 加载态留白 ---- */
.hs-empty{ padding:64px 24px; }
.hs-empty i{ font-size:56px;color:#DDE3ED; }
.hs-empty b{ margin-top:14px;font-size:14px;color:var(--hs-mut); }
.hs-empty span{ margin-top:7px;font-size:12px;line-height:1.75; }

/* ---- 14.6 文本域与下拉的细节 ---- */
textarea.HsIn{ min-height:96px;padding:11px 13px;line-height:1.7; }
select.HsIn{ padding-right:38px; }

/* ============================================================
   15. P36 · 全站输入框统一（35px / 18px 加粗 / 无边框焦点 / 禁中文）
   ---------------------------------------------------------------------------
   需求（用户原话）：
     「输入框高度限制在 35px，背景颜色透明，外边框一般都是有颜色」
     「文字大小 18px 加粗，限定数字及字母输入，不允许输入中文」
     「页面所有的输入框全部去掉输入边框焦点」
   落地方式：
     · class .hs-in-std 由 hsui.js 的 HsFormScan 自动打在每个
       input / textarea / select 上（排除勾选框、单选、文件、范围滑块）；
     · 高度、字号、字重、透明底、无描边、无焦点光晕 —— CSS 统一给出；
     · 「禁中文」—— CSS 拦不住键盘输入，改由 JS 过滤（hsui.js 的
       onlyAlnum，仅对编码类输入框生效，避免误伤要写中文的输入框）。
   重要：业务页 <style> 是运行时注入的，顺序在 hsui.css 之后，
   同优先级会输给页面自己那套，所以几何类属性一律带 !important。
   ========================================================================= */

/* ---- 15.1 输入框核心度量 ---- */
.hs-in-std{
  height:35px!important;
  padding:0 2px!important;
  border:0!important;
  outline:none!important;
  background:transparent!important;
  box-shadow:none!important;
  border-radius:0!important;
  font-size:18px!important;
  font-weight:700!important;
  line-height:35px!important;
  color:var(--hs-ink)!important;
  font-family:inherit!important;
  letter-spacing:.6px;
  -webkit-appearance:none;appearance:none;
  transition:none!important;
}
/* 多行文本：高度自适应，行高正常（不能压到 35px，否则没法写字） */
textarea.hs-in-std{
  height:auto!important;min-height:72px!important;line-height:1.6!important;
}
/* 下拉：留出箭头位置 */
select.hs-in-std{ padding-right:20px!important; }
/* 数字框的上下箭头去掉（手机上会占位） */
.hs-in-std[type=number]{ -moz-appearance:textfield; }
.hs-in-std[type=number]::-webkit-outer-spin-button,
.hs-in-std[type=number]::-webkit-inner-spin-button{ -webkit-appearance:none;margin:0; }

/* ---- 15.2 聚焦：彻底不要焦点框、不要光晕、不要变色 ---- */
.hs-in-std:focus,
.hs-in-std:focus-visible{outline:none!important; border:0!important; -webkit-appearance:none; appearance:none;}
.hs-in-std::-webkit-focus-ring{ outline:none!important;box-shadow:none!important; }
/* autofill 的黄底也不要 */
.hs-in-std:-webkit-autofill,
.hs-in-std:-webkit-autofill:hover,
.hs-in-std:-webkit-autofill:focus{-webkit-text-fill-color:var(--hs-ink)!important; -webkit-box-shadow:0 0 0 1000px transparent inset!important; transition:background-color 9999s ease-in-out 0s;}

/* ---- 15.3 占位符：比正文轻，不抢视觉 ---- */
.hs-in-std::placeholder{
  color:#B6BFCE!important;
  font-size:15px!important;
  font-weight:400!important;
  letter-spacing:.2px;
}

/* ---- 15.4 容器不参与统一 ----
   刻意「不动」容器（.hs-field / .hs-sbar / .FwInput / .ZsSearch）。
   用户说的「外边框一般都是有颜色」指的是包住输入框的那圈彩色外框，
   要保留；要去掉的是 input 元素自身的描边与聚焦光晕。 */

/* ---- 15.5 独立输入框（没有彩色外框包着的那种）
   .hs-in-std 把自身描边清掉后，白底白字会「看不见」。
   这类没有容器边框的输入框，补一层很轻的静态底框，
   但依然不要聚焦时的变色描边 / 光晕。 */
.hs-in-std.hs-in-solo{
  background:#fff!important;
  border:1.5px solid #E8EDF6!important;
  border-radius:12px!important;
  padding:0 12px!important;
}

/* ---- 15.6 防伪查询（.FwInput）/ 追溯查询（.ZsSearch）输入条统一
   用户要求「防伪查询和追溯查询输入样式尽量统一」：
   内部输入体一律 35px / 18px 加粗 / 透明底 / 无描边 / 无焦点效果。
   业务页 <style> 是运行时注入的（顺序在 hsui.css 之后），
   所以这里的几何属性必须带 !important 才压得住页面自己那套。 */
.FwInput > input,
.ZsSearch > input{
  height:35px!important;
  font-size:18px!important;
  font-weight:700!important;
  line-height:35px!important;
  letter-spacing:1.2px;
  color:var(--hs-ink)!important;
  background:transparent!important;
  border:0!important;
  outline:none!important;
  box-shadow:none!important;
  -webkit-appearance:none;appearance:none;
}
.FwInput > input:focus,
.FwInput > input:focus-visible,
.ZsSearch > input:focus,
.ZsSearch > input:focus-visible{outline:none!important; border:0!important;}
.FwInput > input::placeholder,
.ZsSearch > input::placeholder{
  font-size:15px!important;font-weight:400!important;letter-spacing:.2px;
}

/* ---- 15.7 组件型容器内的输入体同样压成 35px ----
   .hs-field 等容器用自己的 height:100% 撑满，
   这里统一压回 35px（多行文本除外），保证全站输入框高度一致。 */
.hs-field input.hs-in-std,
.hs-field select.hs-in-std{ height:35px!important; }
.hs-field--area textarea.hs-in-std,
textarea.hs-in-std{ height:auto!important; }

/* ---- 15.8 P43 · 追溯联管登录页输入体：透明底 + 撑满下划线容器 ----
   15.5 给「无容器边框」的独立输入框补了白底 + 描边（hs-in-solo），
   但联管登录页的输入框外面已有一圈 .LgIn 容器（下划线形态），
   再叠一层白底方框就成了「方框套方框」，用户明确要求这里用透明底。
   同时让输入体撑满 .LgIn 的 46px 高度，避免 35px 居中留缝。 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgIn input.hs-in-std,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgIn input.hs-in-solo{
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  height:100%!important;
  line-height:normal!important;
  padding:0!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgIn input.hs-in-std:focus,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgIn input.hs-in-std:focus-visible,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgIn input.hs-in-solo:focus,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgIn input.hs-in-solo:focus-visible{border:0!important;}

/* ============================================================
   16. P39 · 登录域角色守卫
   —— P36 的「最近登录账号」区块已整体移除（用户要求去掉）。
      保留本节占位以说明章节编号延续。
   ============================================================ */


/* ============================================================
   17. P43 · 全站顶部导航栏统一规范
   ============================================================
   【问题】
   41 个业务页各自定义了一套页头（HHd / HbTop / YeTop / OdHd / FwHd /
   CxHd / FrHd / PcHd / CpHd / AcHd / StHd / MlTop / FkHd / ZtHd /
   CtHd / AdHd / GgTop / TmHd / MdHd / GyHd / PjHd / JlHd / LgTop /
   WbHd / nav-header …），导致：
     · 返回按钮大小、圆角、图标各不相同（有的是 ri-arrow-left-s-line，
       有的是 ri-arrow-left-line，还有 fwk38 用了 iconfont 里根本不存在的
       码点 &#xe65f; —— 渲染出来是豆腐块 □，这是「返回按钮是错的」的真凶）；
     · 页头背景一半是深蓝渐变（#152C6B / #17337F / #0E1E4B），一半是白色，
       视觉极不统一且深蓝在手机上很压抑；
     · 页头高度 32 / 34 / 40 / 50px 不等，切换页面时标题栏会「跳一下」。

   【方案】
   用一套「统一页头骨架」覆盖所有页面：
     .hs-hd          —— 页头容器（统一 52px + 安全区、白色毛玻璃底）
     .hs-hd-row      —— 页头内一行（返回 / 标题 / 右侧操作）
     .hs-hd-back     —— 返回按钮（统一 40×40 触控区、ri-arrow-left-line）
     .hs-hd-tit      —— 标题
     .hs-hd-act      —— 右侧操作区
   各页面原有的自定义类名（.PjHd/.JlHd/.OdHd …）保留，
   但视觉由本节统一接管（用 !important 压住页面内的 scoped 样式）。

   【关键】
   页面样式会被 HsScopeCss 加成 `[data-hs-page="xxx"] .PjHd{...}`，
   特异性高于裸选择器，因此这里必须用 !important 才能压住。
   ============================================================ */

/* ---- 17.1 统一页头容器 ---- */
.hs-hd{
  position:relative;z-index:900;
  display:flex;align-items:center;gap:8px;
  min-height:52px;
  padding:env(safe-area-inset-top) 12px 0;
  background:rgba(255,255,255,.94)!important;
  backdrop-filter:saturate(180%) blur(18px);
  -webkit-backdrop-filter:saturate(180%) blur(18px);
  border-bottom:1px solid rgba(11,20,40,.06)!important;
  box-shadow:0 1px 0 rgba(11,20,40,.03),0 4px 16px rgba(11,20,40,.035)!important;
  color:var(--hs-ink)!important;
}
/* 页头里可能存在装饰性光斑（::before/::after），统一降透明度，
   避免浅底上出现脏色块 */
.hs-hd::before,.hs-hd::after{ opacity:.5!important;pointer-events:none; }
.hs-hd > *{ position:relative;z-index:2; }

/* ---- 17.2 页头行 ---- */
.hs-hd-row{
  display:flex;align-items:center;gap:8px;
  width:100%;min-height:52px;
}

/* ---- 17.3 返回按钮（统一） ---- */
.hs-hd-back,.hs-back,.HsPgBack{
  width:40px!important;height:40px!important;min-width:40px;
  margin-left:-8px!important;margin-right:0;
  border-radius:12px!important;
  background:transparent!important;
  border:0!important;box-shadow:none!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  flex-shrink:0;
  color:var(--hs-ink)!important;
  font-size:22px!important;line-height:1!important;
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background .16s,transform .12s;
}
.hs-hd-back:active,.hs-back:active,.HsPgBack:active{ opacity:.55;transform:scale(.94); }
/* 返回图标统一：强制 22px，颜色跟随按钮 */
.hs-hd-back i,.hs-hd-back .icon,.hs-hd-back .iconfont,
.hs-back i,.hs-back .icon,.hs-back .iconfont,
.HsPgBack i,.HsPgBack .icon,.HsPgBack .iconfont{
  font-size:22px!important;line-height:1!important;
  color:currentColor!important;
}
/* 深色头里的返回按钮（保留旧类名以兼容未改造的页面） */
.hs-back--on-dark{ color:var(--hs-ink)!important; }

/* ---- 17.4 标题 ---- */
.hs-hd-tit,.hs-hd-row > b[data-pg-tit],.hs-hd-row > b{
  flex:1;min-width:0;
  font-size:16.5px!important;font-weight:750!important;
  color:var(--hs-ink)!important;letter-spacing:.2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  margin:0!important;
}
/* 面包屑形态（订单管理等）标题同样归一 */
.hs-hd .OdCrumb{ flex:1;min-width:0;color:var(--hs-mut);font-size:13px;display:flex;align-items:center;gap:6px; }
.hs-hd .OdCrumb b{ font-size:16.5px;font-weight:750;color:var(--hs-ink)!important; }
.hs-hd .OdCrumb i{ color:var(--hs-faint);font-size:14px; }

/* ---- 17.5 右侧操作区 ---- */
.hs-hd-act,.hs-hd-row > .rt,.hs-hd-row > .tg,.hs-hd-row > .add,.hs-hd-row > .rf{
  margin-left:auto!important;flex-shrink:0;
  display:flex;align-items:center;gap:4px;
  height:28px;padding:0 10px;border-radius:9px;
  background:var(--hs-primary-tint)!important;
  border:1px solid rgba(var(--hs-primary-rgb),.14)!important;
  color:var(--hs-primary-d)!important;
  font-size:11.5px;font-weight:650;cursor:pointer;
  box-shadow:none!important;
}
.hs-hd-act:active,.hs-hd-row > .rt:active{ opacity:.6; }

/* ---- 17.6 页头内的次级说明文字 ---- */
.hs-hd-tx{
  font-size:11.5px;color:var(--hs-mut);line-height:1.6;
  margin-top:2px;
}

/* ---- 17.7 旧页头类的统一接管 ----
   下面把 41 个页面各自的页头类登记进来，用同一套规则改写它们，
   保证「所有顶部导航栏统一样式」这一条真正落到每个页面上。 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HHd .HTop,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HbTop,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeTop,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FwHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CxHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FrHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PcHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CpHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AcHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .StHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MlTopRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FkHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .ZtHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CtHdTop,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AdHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GgTopBar,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .TmHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GyHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PjHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .JlHdRow,
/* P52：.WbTop（商家端标题条）不再参与「统一 52px」—— 它自己要 68px 吸顶 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbHdRow,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HsPgHd{
  display:flex!important;align-items:center!important;gap:8px!important;
  height:52px!important;min-height:52px!important;
  background:transparent!important;
  color:var(--hs-ink)!important;
  padding:0!important;
  margin:0!important;
}
/* ---- 17.8 旧页头里的「返回按钮」类统一接管 ---- */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HbBack,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CxBack,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeBack,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FwBack,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdBack,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GgBack,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .TmBack,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdBack,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .WbBack,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .back-btn,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgBack{
  width:40px!important;height:40px!important;min-width:40px;
  margin-left:-8px!important;
  border-radius:12px!important;
  background:transparent!important;
  border:0!important;box-shadow:none!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  flex-shrink:0;
  color:var(--hs-ink)!important;
  font-size:22px!important;line-height:1!important;
  cursor:pointer;-webkit-tap-highlight-color:transparent;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HbBack:active,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CxBack:active,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeBack:active,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FwBack:active,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdBack:active,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GgBack:active,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .TmBack:active,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdBack:active,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .WbBack:active,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .back-btn:active,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgBack:active{ opacity:.55; }
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HbBack i,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CxBack i,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeBack i,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FwBack i,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdBack i,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GgBack i,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .TmBack i,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdBack i,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .WbBack i,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .back-btn i,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgBack i{
  font-size:22px!important;line-height:1!important;color:currentColor!important;
}

/* ---- 17.9 页头右侧操作区统一（旧类） ---- */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HbTop > .tg,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeTop > .tg,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FwHd > .kf,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdHd > .OdRole,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CxHdRow > .rt,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FrHdRow > .rt,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PcHdRow > .rt,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CpHdRow > .rt,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AcHdRow > .rt,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FkHdRow > .rt,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .ZtHdRow > .rt,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AdHdRow > .add,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .TmHdRow > .add,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdHdRow > .rf,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GyHdRow > .rt,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PjHdRow > .rt,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .JlHdRow > .rt,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .WbTop > .WbOut{
  margin-left:auto!important;flex-shrink:0;
  display:flex!important;align-items:center;gap:4px;
  height:28px;padding:0 10px;border-radius:9px;
  background:var(--hs-primary-tint)!important;
  border:1px solid rgba(var(--hs-primary-rgb),.14)!important;
  color:var(--hs-primary-d)!important;
  font-size:11.5px;font-weight:650;
  box-shadow:none!important;
}

/* ---- 17.10 页头标题统一（旧类） ---- */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HbTop > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeTop > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FwHd > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdHd > .OdCrumb > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CxHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FrHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PcHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CpHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AcHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .StHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FkHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .ZtHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AdHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .TmHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GyHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PjHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .JlHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .WbTop > b{
  flex:1;min-width:0;
  font-size:16.5px!important;font-weight:750!important;
  color:var(--hs-ink)!important;letter-spacing:.2px;
  margin:0!important;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* ---- 17.11 追溯联管登录页（LgTop）专用 ----
   登录页是整屏品牌页，不是普通页头 —— 但其顶部仍要紧凑、
   去掉返回按钮（登录后直接进主页，不回退）。 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgTop{
  padding:calc(env(safe-area-inset-top) + 18px) 24px 0!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgMark{
  width:58px!important;height:58px!important;border-radius:19px!important;margin:0 auto 12px!important;
  font-size:28px!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgTop b{ font-size:19.5px!important; }
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .LgTop span{ font-size:12px!important;margin-top:5px!important; }

/* ---- 17.12 页面标题（data-pg-tit）统一 ---- */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] b[data-pg-tit]{
  color:var(--hs-ink)!important;
  font-weight:750!important;
}

/* ---- 17.13 浅色化：把「带内容的品牌头部」也一起改掉 ----
   fwk00(HHd) / fwk04(YeHd) / fwk05(FwHero) / fwk07(OdTop) /
   fwk08(CxHd) / fwk42·47(MdHd) 等头部自带余额数字、统计条、
   搜索框等内容，原来靠「深蓝底 + 白字」成立。 */
/* P52（需求第 8 项 · 设计 bug）：这里原来把 .HHd / .YeHd / .FwHero / .OdTop
   的 color 强行改成 --hs-ink（墨色），可它们的背景一直是主色蓝 ——
   于是「HHd 蓝色背景 + HTop 里的『何氏狐臭净 · 防伪追溯』是黑字」，
   对比度极差。这几块在 P46 里已经明确「容器保持主色、文字白字」，
   所以整段强制墨色撤掉，颜色交回页面自己的 color:#fff，
   另有 hsui.js 的 hsDarkFix() 做「深底暗字」全站兜底。 */

/* 浅底上的装饰光斑会显脏，整体去掉 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HHd::before,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HHd::after,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeHd::before,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeHd::after,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdTop::before,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdTop::after,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CwHd::before,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CwHd::after{ display:none!important; }

/* ---- 17.14 头部内文字的浅底适配 ----
   深色头部转浅后，原本写死 color:#fff 的文字会「消失」。
   这里用「元素选择器 + 语义类」把主要文字位统一成墨色/灰色，
   图标则跟随 currentColor。 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PjHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .JlHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CxHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FrHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PcHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CpHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AcHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .StHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FkHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .ZtHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AdHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .TmHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GyHdRow > b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .WbTop > b{
  color:var(--hs-ink)!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PjSumI b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .JlSumI b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CxSumI b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FrSumI b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PcSumI b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CpSumI b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FkSumI b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .ZtSumI b{
  color:var(--hs-primary-d)!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PjSumI span,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .JlSumI span,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CxSumI span,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FrSumI span,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PcSumI span,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CpSumI span,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FkSumI span{
  color:var(--hs-mut)!important;
}
/* 页头内的说明行 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AdHdTx,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .StHdTx,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .TmHdTx,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GyHdTx,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdHdTx,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GgTopTx,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CtHdTx,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HbH2,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeLb{
  color:var(--hs-mut)!important;
}


/* ---- 17.14b 内部追溯查询页（NbHd）专用 ----
   fwk51 是 P43 新建的页面，不在 §17.7 的旧页头名单里，
   顶部仍是「深蓝渐变 + 白字」。这里单独补一份，
   让它和其它页头一致：白底毛玻璃 + 墨色标题 + 灰色说明。 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbHd{
  padding:calc(env(safe-area-inset-top) + 6px) 16px 26px!important;
  color:#fff!important;
  background:var(--hs-primary)!important;
}
/* 主题底色上不再叠加浅底光斑 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbHd::before,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbHd::after{ display:none!important; }
/* 标题行：比旧版矮 2px，整体页头更紧凑 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbHdRow{
  height:38px!important;min-height:38px!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbHdRow > b{
  color:#fff!important;font-size:16.5px!important;font-weight:750!important;
}
/* 返回按钮：主题深底上用白字 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbHd .hs-back,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbHd .hs-back--on-dark{
  color:#fff!important;
}
/* 右侧「刷新」按钮：半透明白底 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbHdRow > .rt{
  background:rgba(255,255,255,.16)!important;
  color:#fff!important;
  border:1px solid rgba(255,255,255,.18)!important;
}
/* 说明行：做成轻量半透明提示卡，和主题页头融为一体 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbNote{
  margin-top:8px!important;padding:8px 10px!important;
  border-radius:11px!important;
  background:rgba(255,255,255,.12)!important;
  border:1px solid rgba(255,255,255,.14)!important;
  color:rgba(255,255,255,.88)!important;
  font-size:10.5px!important;line-height:1.65!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbNote b{ color:#fff!important;font-weight:750!important; }
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbNote i{ color:rgba(255,255,255,.9)!important; }
/* 主体上移量与新页头高度对齐 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .NbBody{ margin-top:-2px!important; }

/* ============================================================
   18. P43 · 选项 / 标签 / 按钮 配色收尾
   ============================================================
   【问题】
   42 个页面各自定义选中态与标签色，出现三类不统一：
     · 同一语义有多种绿：#E8FFEA/#00B42A、#E7F9EF/#0BB35B、#E9FAF1/#12B76A，
       饱和度高、明度刺眼，与主色体系不协调；
     · 同一语义有多种蓝青：#0F8A7E/#14B39E（青绿）与主色 #1E8FD5 并列使用，
       视觉上像两套产品；
     · 按钮渐变端点不统一：有的用 --hs-primary-l（#5FB4E8），
       有的直接写 #1E8FD5 → #5FB4E8，浅色页面上深浅不一。

   【方案】
   建立「语义 → 令牌」映射，用 !important 统一收敛：
     · 主色实心态（Tab/Chip/Cat/勾选）→ 同一套靛蓝渐变 + 同一档阴影；
     · 成功态标签 → --hs-ok 的淡底 + 深字；
     · 青绿强调态 → 统一为 --hs-accent 家族的低饱和版本；
     · 描边态（浅底选中）→ 统一 var(--hs-primary-tint) 底 + 主色字。
   ============================================================ */

/* ---- 18.1 主色实心选中态：统一渐变端点与阴影 ---- */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HbCat.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeTab.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MbTab.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MbChip.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PgF.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .EvF.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CtChk.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdTab.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FrTab.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PcTab.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CpTab.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AcTab.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FkTab.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .JlChip.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GgChip.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdChip.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PjTab.on{
  background:var(--hs-primary)!important;
  color:#fff!important;
  border-color:transparent!important;
  box-shadow:0 6px 14px rgba(var(--hs-primary-rgb),.22)!important;
}

/* ---- 18.2 浅底描边选中态：统一淡靛蓝底 + 主色字 ---- */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeAmtIt.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdKdC.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MbQ.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FkLx.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .ZtSegI.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .TmPick span.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CkPayIt.on{
  border-color:rgba(var(--hs-primary-rgb),.42)!important;
  background:var(--hs-primary-tint)!important;
  color:var(--hs-primary-d)!important;
  box-shadow:0 0 0 3px rgba(var(--hs-primary-rgb),.09)!important;
}

/* ---- 18.3 成功态标签：去掉刺眼纯绿，统一到 --hs-ok ---- */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CpTag.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .TmTag.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdTag.on{
  background:rgba(18,183,106,.12)!important;
  color:#0E9F5E!important;
  border-color:rgba(18,183,106,.26)!important;
}

/* ---- 18.4 青绿强调态：降饱和，与品牌色协调 ---- */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .ZsChip.on,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CxTab.on{
  background:linear-gradient(135deg,#12A99C 0%,#2CC7B6 100%)!important;
  border-color:transparent!important;
  color:#fff!important;
  box-shadow:0 6px 14px rgba(18,169,156,.22)!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdPick span.on{
  background:rgba(0,200,180,.12)!important;
  border-color:rgba(0,200,180,.34)!important;
  color:#049E8E!important;
}

/* ---- 18.5 按钮渐变端点统一（.hs-btn 家族 + 页面内主按钮） ---- */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .hs-btn:not(.hs-btn--line):not(.hs-btn--gray):not(.hs-btn--ghost):not(.hs-btn--ok):not(.hs-btn--warn):not(.hs-btn--err):not(.hs-btn--wx){
  background:var(--hs-primary)!important;
  box-shadow:0 8px 18px rgba(var(--hs-primary-rgb),.22)!important;
}

/* ---- 18.6 卡片圆角统一（P58 起不再加投影：消除各页卡片浮起的观感） ---- */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PjCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .JlCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PcCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CpCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AcCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FrCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .StCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MlCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FkCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .ZtCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CtCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AdCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GgCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .TmCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .GyCard,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .WbCard{
  border-radius:18px!important;
  box-shadow:none!important;   /* P58：原来这里是 0 6px 20px rgba(11,20,40,.05) */
}

/* =========================================================
   19. P45 · 本轮 15 项整改的统一收口
   ========================================================= */

/* ---- 19.1 主色渐变端点统一（P45·第 6 项：文字颜色处理）
   天蓝 #1E8FD5 上压白字对比度 3.55，低于可读标准。
   渐变终点统一压到 --hs-primary-d(#0E6FA8)，最低一档对比 ≥4.0。 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .hs-btn:not(.hs-btn--line):not(.hs-btn--gray):not(.hs-btn--ghost):not(.hs-btn--ok):not(.hs-btn--warn):not(.hs-btn--err):not(.hs-btn--wx){
  background:var(--hs-primary)!important;
}
.hs-btn:not(.hs-btn--line):not(.hs-btn--gray):not(.hs-btn--ghost):not(.hs-btn--ok):not(.hs-btn--warn):not(.hs-btn--err):not(.hs-btn--wx){ background:var(--hs-primary)!important; }
/* P46：上面这条原来写成 `.hs-btn{...!important}`，把所有变体（ghost/line/gray/ok…）
   的背景全部刷成主色 —— 「去逛逛商城」这类浅底按钮变成「蓝底 + 深蓝字」，
   几乎看不清。这里补回各变体的底色，并把原来的渐变改成纯色（需求：按钮不要渐变）。 */
.hs-btn--ghost{ background:var(--hs-soft,#F7F9FE)!important;color:var(--hs-primary-d)!important;
  border:1px solid rgba(var(--hs-primary-rgb),.14)!important;box-shadow:none!important; }
.hs-btn--line{ background:#fff!important;color:var(--hs-ink2)!important;
  border:1px solid var(--hs-line)!important;box-shadow:none!important; }
.hs-btn--gray{ background:#EEF1F7!important;color:var(--hs-mut)!important;box-shadow:none!important; }
.hs-btn--ok{ background:#12B76A!important;box-shadow:0 8px 20px rgba(18,183,106,.24)!important; }
.hs-btn--warn{ background:#F79009!important;box-shadow:0 8px 20px rgba(247,144,9,.24)!important; }
.hs-btn--err{ background:#F04438!important;box-shadow:0 8px 20px rgba(240,68,56,.22)!important; }
.hs-btn--wx{ background:#07C160!important;box-shadow:0 8px 20px rgba(7,193,96,.26)!important; }

/* ---- 19.2 内容与顶部板块的间距（P45·第 7 项）
   用户诉求：「底部内容需要留出顶部导航栏及顶部板块的间距」。
   这里做两件事：
     a) 渐变头部（顶板）下方留白 —— 头部底部的负 margin 上提（卡片压头部）
        会让首行内容紧贴色块，视觉上像"缺一段"。统一补 6px。
     b) 主体内容容器顶部留白 —— 让首屏内容不顶到导航栏。 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PcBody,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CpBody,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .StBody,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FkBody,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .ZsBody,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .ZtBody,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AdList,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PjBody,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .JlBody,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdBody,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AcBody{
  margin-top:6px!important;
}
/* 头部色块本身也补一点底部内边距，让头部不至于"贴"着内容 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PcHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CpHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .StHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FkHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .ZtHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .AdHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PjHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .JlHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .MdHd{
  padding-bottom:12px!important;
}

/* ---- 19.3 客服浮球隐藏（P45·第 2 项）
   浮球在第三方挂件的 Shadow DOM 里，这里做常规选择器兜底，
   Shadow DOM 内部由 views/index.html 注入样式处理。 */
button[class*="-fab"],button[class*="kfx-pilai-fab"],
[class*="kfx-pilai-fab"]{ display:none!important; }

/* ---- 19.4 输入框聚焦静默（P45·第 13 项）
   聚焦时不新增边框、不加外发光 —— 与聚焦前完全一致。
   注意：这里刻意不覆盖 background —— 输入框的基础底色（白/浅灰）
   在聚焦时应当保持不变，而不是被强制改成 transparent。 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] input:focus,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] input:focus-visible,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] textarea:focus,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] select:focus{
  border-color:inherit!important;
  box-shadow:none!important;
  outline:none!important;
}

/* =========================================================================
   P46 · 主题适配（暗黑青绿）
   —— 仅覆盖「表面色 / 文字色 / 描边」，不改布局
   —— 页面里写死的 #fff / #0B1428 都由这里统一接管，避免逐页改 40 个文件
   ========================================================================= */
html[data-hs-theme="dark"] body,
html[data-hs-theme="dark"] .Ktancchuan,
html[data-hs-theme="dark"] [id^="indexaka"]{ background:var(--hs-bg)!important; }
html[data-hs-theme="dark"] #Dindexhang.hs-nav{
  background:rgba(15,22,24,.96)!important;border-top-color:#1E2A2C!important;
  box-shadow:0 -6px 26px rgba(0,0,0,.4)!important;
}
html[data-hs-theme="dark"] .hs-hd{ background:rgba(18,26,28,.94)!important;border-bottom-color:var(--hs-line)!important; }
html[data-hs-theme="dark"] .hs-hd-b{ background:#1B2628!important;color:var(--hs-ink)!important; }

/* 卡片 / 面板 / 弹层：白底 -> 深色卡 */
html[data-hs-theme="dark"] :is(.hs-card,.hs-sheet,.hs-dlg,.hs-act-sheet,.hs-pick-box,
  .StCard,.StFoot,.WbBoard,.WbList,.WbScan,.WbRoleChip,.HbIt,.HbHot,.HbMeta,.HbFoot,
  .CxCard,.CxBar,.MlIt,.OdIt,.OdCard,.HsCard,.GmCard,.CpCard,.ZxCard,.WlCard,
  [class$="Card"],[class$="card"]:not([class^="ri-"])){
  background:var(--hs-card)!important;
  border-color:var(--hs-line)!important;
  box-shadow:0 6px 20px rgba(0,0,0,.35)!important;
}
/* 文字：默认提到亮色，再按语义降级 */
html[data-hs-theme="dark"] .Ktancchuan_nk,
html[data-hs-theme="dark"] .Ktancchuan_nk *{ color:var(--hs-ink2); }
html[data-hs-theme="dark"] .Ktancchuan_nk :is(h1,h2,h3,h4,b,strong){ color:var(--hs-ink); }
html[data-hs-theme="dark"] .Ktancchuan_nk :is(span,em,small,time,label,i[class^="ri-"]:not([class*="fill"])){ color:var(--hs-mut); }
html[data-hs-theme="dark"] .Ktancchuan_nk :is(.hs-btn,.hs-btn *,.WbScan .big,.WbScan .big *,
  .hs-tag--p,.hs-tag--p *,.hs-badge,.hs-badge *,[class*="Btn--p"],[class*="Btn--p"] *){ color:var(--hs-on-primary)!important; }
/* 输入控件 */
html[data-hs-theme="dark"] .Ktancchuan_nk :is(input,textarea,select),
html[data-hs-theme="dark"] :is(.hs-sheet,.hs-dlg) :is(input,textarea,select){
  background:var(--hs-soft)!important;color:var(--hs-ink)!important;
  border-color:var(--hs-line)!important;
}
html[data-hs-theme="dark"] .Ktancchuan_nk :is(input,textarea)::placeholder{ color:var(--hs-faint)!important; }
/* 分割线 */
html[data-hs-theme="dark"] .Ktancchuan_nk :is(li,div)[style*="border-bottom"]{ border-color:var(--hs-line)!important; }

/* =========================================================================
   P46 · 顶部页头固定（页面自己的头不再跟着内容滚走）
   —— .hs-hd 本身已 sticky；这里兜住各页自定义的头部容器
   ========================================================================= */
.Ktancchuan_nk > .hs-sticky-hd{
  position:sticky!important;top:0!important;z-index:55!important;
}

/* P51：页头已由 hsui.js 的 HsAppBar 提到页面层顶部做成独立导航条，
   Hero 只是普通内容块 —— 原来的 sticky 规则会把幻灯片/统计块整块钉住，
   压住下面的卡片（用户反馈的「幻灯片固定、板块被遮挡」），这里全部撤掉。 */

/* ---- P46 · 页头图标按钮规范化 ----
   各页返回按钮宽高 30/32/36/40 混杂，图标字号 18–24 混杂，点起来手感不一致。
   这里统一成 40×40 触控区 + 22px 图标 + 12px 圆角，颜色继承页头（深底上自动白、浅底上自动墨）。 */
.Ktancchuan_nk [class*="Back"]{
  width:40px!important;height:40px!important;min-width:40px!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  border:0!important;background:transparent!important;box-shadow:none!important;
  border-radius:12px!important;color:inherit!important;
  font-size:22px!important;line-height:1!important;
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background .16s,transform .12s,opacity .16s;
}
.Ktancchuan_nk [class*="Back"] :is(i,svg,.icon,.iconfont){
  font-size:22px!important;width:22px!important;height:22px!important;color:inherit!important;
}
.Ktancchuan_nk [class*="Back"]:active{ opacity:.6;transform:scale(.94); }
/* 页头右侧的图标按钮（分享 / 更多 / 收藏 …）同样收到 40×40，避免大小不一 */
.Ktancchuan_nk :is(.hs-hd-r,[class*="Top"],[class*="Hd"]) > [class*="Ic"]:only-child{
  width:40px!important;height:40px!important;display:flex!important;
  align-items:center!important;justify-content:center!important;border-radius:12px!important;
}
/* ---- P46 · 彩色 Hero 页内的页头 ----
   这类页面（防伪查询 / 余额 / 地址 / 订单 …）的头部长在彩色 Hero 块内部，
   如果按「统一白色页头」处理，就会出现「蓝色 Hero 里面嵌一条白色圆角横条」，
   既不像导航条也不像卡片。这里让页头直接沿用 Hero 的主色（纯色、无渐变），
   与 Hero 连成一块，吸顶后也仍是主色底 + 白字，滚动时不会出现白字压白底。 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HbWrap > .HbTop,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeHd > .YeTop,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FwHero > .FwHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdTop > .OdHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CxHero > .CxHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .CtHero > .CtHd,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .PcHero > .PcHd{
  background:var(--hs-primary)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  border-bottom:0!important;box-shadow:none!important;
  color:#fff!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HbWrap > .HbTop b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeHd > .YeTop b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FwHero > .FwHd b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdTop > .OdHd b,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .HbWrap > .HbTop :is(i,span),
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .YeHd > .YeTop :is(i,span),
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .FwHero > .FwHd :is(i,span,b),
:is(.Ktancchuan,.indexka_ak)[data-hs-page] .OdTop > .OdHd :is(i,span,b){
  color:#fff!important;
}

/* ---- P46 · Hero 容器本身保持主色 ----
   §17.13 把「带内容的品牌头」整体浅色化了，连 .OdTop / .FwHero / .YeHd 这些
   Hero 容器也被刷成白色 —— 结果里面的页头（我们刚设成主色）变成一条「浮在
   白底上的蓝色圆角横条」，既不是页头也不是卡片。这里把容器本身恢复成主色，
   让页头与 Hero 重新连成一整块。 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(.OdTop,.FwHero,.YeHd,.HbWrap,.CtHero,.PcHero){
  background:var(--hs-primary)!important;
  color:#fff!important;
}
/* Hero 内的统计数字 / 标签在蓝底上必须转白（§17.14 会把它们压成墨色） */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(.OdTop,.FwHero,.YeHd,.HbWrap)
  :is(.OdSt b,.OdSt span,.OdCrumb span,.YeLb,.FwTitle b,.FwTitle span,.OdSt em){
  color:#fff!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(.OdTop,.FwHero,.YeHd,.HbWrap)
  :is(.OdSt b,.OdSt span,.YeLb,.FwTitle span){ opacity:.92; }


/* =========================================================================
   P51 · 二级页统一顶部导航条
   -------------------------------------------------------------------------
   各业务页原来的页头行（.HsPgHd / *HdRow / .CxNav / .nav-header …）长在
   彩色 Hero 里，滚不动、和下面的板块同色相连。P51 在运行时把这一行提到
   页面层顶部，做成一条独立的白色导航条：

     .Ktancchuan（flex 纵向）
       ├─ .hs-appbar        ← 固定条，不参与滚动
       └─ .Ktancchuan_nk    ← 唯一滚动区
            └─ 页面内容（Hero 也只在这里滚）

   这样「只有导航栏固定」，幻灯片 / 统计 / 卡片全部随内容滚动，且导航条
   有白底 + 分隔线 + 极轻投影，与下方任何板块都不会连成一片。
   ========================================================================= */
.Ktancchuan.hs-has-bar{
  display:flex!important;flex-direction:column!important;
}
.Ktancchuan.hs-has-bar > .Ktancchuan_nk{
  flex:1 1 auto!important;height:auto!important;min-height:0!important;
  /* 8px 灰缝：导航条与下方任何板块之间都有一条背景色分隔，
     不会出现「白条 + 白块」糊成一片 */
  padding-top:8px!important;
  padding-bottom:calc(var(--hs-nav-h) + 26px + env(safe-area-inset-bottom))!important;
}
.hs-appbar{
  position:relative;z-index:80;flex:0 0 auto;box-sizing:border-box;
  /* P52：导航条高度由 52px 提到需求指定的 68px；横向 14px、文字与按钮垂直居中 */
  height:calc(var(--hs-bar-h) + env(safe-area-inset-top));
  padding:env(safe-area-inset-top) 14px 0;
  background:rgba(255,255,255,.985);
  /* P68：底色已接近不透明，18px 模糊下面什么都看不到，只白吃 GPU —— 去掉 */
  border-bottom:1px solid rgba(11,20,40,.075);
  box-shadow:0 2px 12px rgba(11,20,40,.045);
}
.hs-appbar-in{display:flex;align-items:center;height:var(--hs-bar-h);min-width:0;}
/* 原页头行：不管原来是 sticky / 绝对定位 / 彩色底，进条后一律压成「条内一行」 */
.hs-appbar-in > *{
  position:static!important;display:flex!important;align-items:center!important;
  width:100%!important;max-width:none!important;height:var(--hs-bar-h)!important;min-height:0!important;
  margin:0!important;padding:0!important;gap:10px!important;
  background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;
  color:var(--hs-ink)!important;overflow:visible!important;
}
.hs-appbar-in > * > b,
.hs-appbar-in > * > div > b,
.hs-appbar-in > * > .HsPgTit{
  font-size:16.5px!important;font-weight:750!important;color:var(--hs-ink)!important;
  letter-spacing:.2px!important;text-shadow:none!important;
}
/* 右侧操作（刷新 / 新增 / 去查询 / 分享…）：一律主色文字，不再是白色药丸 */
.hs-appbar-in > * :is(.rt,.add,.more,.act,[class*="Action"],[class*="act-"],[class*="Role"],[class*="Kf"]) {
  color:var(--hs-primary)!important;background:transparent!important;
  border:0!important;box-shadow:none!important;height:auto!important;padding:0!important;
}
.hs-appbar-in > * :is(.rt,.add,.more,.act) :is(i,span,em){color:inherit!important;}
.hs-appbar-in > * :is(span,em,small){text-shadow:none!important;}
/* 返回按钮：40×40 触控区，深色图标 */
.hs-appbar :is(.hs-back,.HsPgBack,[class*="Back"]){
  width:40px!important;height:40px!important;min-width:40px!important;flex:0 0 40px!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  margin:0 0 0 -9px!important;border-radius:12px!important;background:transparent!important;
  color:var(--hs-ink)!important;font-size:22px!important;
}
.hs-appbar :is(.hs-back,.HsPgBack,[class*="Back"]) :is(i,svg,.icon,.iconfont){
  color:var(--hs-ink)!important;font-size:22px!important;text-shadow:none!important;
}
.hs-appbar .hs-back--on-dark{color:var(--hs-ink)!important;}
/* 顶部分隔线之上不允许有任何内容透出 */
.hs-appbar::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,rgba(11,20,40,0),rgba(11,20,40,.09),rgba(11,20,40,0));}
/* 导航条右侧标签 / 操作：不参与压缩，文字不换行不被裁切 */
.hs-appbar-in > * > :is(span,em,small,.tg,.rt,.add,.more,[class*="Tag"],[class*="Role"],[class*="Kf"],[class*="act"],[class*="Act"]){
  flex:0 0 auto!important;white-space:nowrap!important;max-width:none!important;
}
/* P51：保留主色的品牌 Hero（帮助中心 / 防伪 / 订单 / 余额）里，
   副标题必须仍是白字——§17.13 曾把它们统一压成灰字，压在主色上几乎看不清。 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(.HbWrap,.HbHero,.FwHero,.OdTop,.YeHd,.HHd)
  :is(.HbH1,.HbH2,.HbH3,.FwTitle b,.FwTitle span,.OdSub,.YeSub,.YeLb,.YeZh){
  color:#fff!important;opacity:.92!important;text-shadow:none!important;
}

/* =========================================================================
   P52 · 顶部导航条规范（68px / 微信隐藏 / 右侧按钮移到页面内）
   -------------------------------------------------------------------------
   需求第 7 项：
     · 导航条固定 68px，标题与功能按钮水平居中；
     · 浏览器场景显示导航条；微信内置浏览器**自动隐藏**导航条，
       隐藏时内容直接贴顶（只保留 8px 呼吸间距 + 安全区）；
     · 导航条右侧不再放任何功能按钮（退出 / 刷新 / 去查询…），
       这些入口统一落到页面内的工具条 .hs-ptool；
     · 导航条隐藏时，非首页子页显示可拖动的圆形返回按钮 .hs-fab-back。
   ========================================================================= */

/* 1) 微信内置浏览器：不显示顶部导航条，内容贴顶 */
html[data-hs-wx="1"] .hs-appbar{ display:none!important; }
html[data-hs-wx="1"] .Ktancchuan.hs-has-bar > .Ktancchuan_nk{
  padding-top:calc(8px + env(safe-area-inset-top))!important;
}

/* 2) 页面内工具条 —— P54（需求第 2 项）整体废弃
   导航条下面那条「客服 / 新增 / 去查询 / 分享 / 买家说 / 管理」快捷按钮条
   用户明确要求去掉，hsui.js 的 HsAppBar 已不再生成它，并把页头行里的
   这些元素直接移除。这里保留一条兜底规则，避免旧缓存里残留的节点露出来。 */
.hs-ptool{ display:none!important; }
/* 需求第 4 项：功能按钮「无需背景及边框」—— 只保留主色图标 + 文字 */
.hs-ptool > *{
  height:34px;padding:0;border-radius:0;
  background:transparent!important;border:0!important;box-shadow:none!important;
  color:var(--hs-primary);font-size:13px;font-weight:650;
  display:flex;align-items:center;gap:4px;cursor:pointer;white-space:nowrap;
}
.hs-ptool > * :is(i,svg,span,em){ color:inherit!important;font-size:14px; }
.hs-ptool > *:active{ opacity:.62; }
/* 纯文字标签（身份 / 状态）在工具条里弱化 */
.hs-ptool > .hs-ptool-tag{
  background:transparent!important;border:0!important;box-shadow:none!important;
  color:var(--hs-mut)!important;font-weight:600;padding:0 2px;
}

/* 3) 导航条隐藏时的全局圆形返回按钮（可拖动，位置记忆） */
.hs-fab-back{
  position:fixed;z-index:99996;width:46px;height:46px;border-radius:50%;box-sizing:border-box;
  background:rgba(255,255,255,.97);
  border:1px solid rgba(11,20,40,.09);
  box-shadow:0 8px 22px rgba(11,20,40,.18);
  display:flex;align-items:center;justify-content:center;
  color:var(--hs-ink);font-size:21px;line-height:1;
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  touch-action:none;user-select:none;-webkit-user-select:none;
  transition:box-shadow .18s ease,transform .12s ease;
}
.hs-fab-back i{ color:inherit!important;font-size:21px;pointer-events:none; }
.hs-fab-back.is-drag{ box-shadow:0 12px 30px rgba(11,20,40,.26);transform:scale(1.06); }
.hs-fab-back:active{ background:#F3F6FC; }

/* 4) 底部导航：左右外边距 + 项间距（需求第 6 项） */
#Dindexhang.hs-nav{ padding-left:10px!important;padding-right:10px!important; }
#Dindexhang.hs-nav .hs-nav-i{
  margin:5px 3px!important;border-radius:15px!important;
  transition:background .18s ease,color .18s ease;
}
#Dindexhang.hs-nav .hs-nav-i.on{ background:rgba(var(--hs-primary-rgb),.075)!important; }

/* ---- P52（需求第 8 项）· 深底暗字兜底 ----
   由 hsui.js 的 hsDarkFix() 打标：.hs-on-dark 是「自身深色背景块」，
   块内没有自己底色、且本来偏暗的文字统一刷白；页面特意用的强调色
   （青绿、金色等亮色）不会被覆盖。 */
.hs-on-dark{ color:#fff!important; }
/* P52：页面自己的规则（如 `[data-hs-page="fwk51"] .NbNote{color:--hs-mut}`）
   是「属性选择器 + 类」= 0,2,0，单类压不住；这里用重复类把优先级抬到 0,3,0，
   保证深底上的次要说明文字和强调字也一起转白。 */
.hs-on-dark-tx,
.hs-on-dark-tx.hs-on-dark-tx.hs-on-dark-tx{ color:#fff!important; text-shadow:none!important; }
.hs-on-dark-tx i,
.hs-on-dark-tx .icon{ color:inherit!important; }
/* 深底上的次要说明文字：白字降透明度，而不是压成灰色 */
.hs-on-dark .hs-on-dark-tx[class*="ub"],
.hs-on-dark .hs-on-dark-tx[class*="esc"]{ color:rgba(255,255,255,.82)!important; }

/* P52：弹层不再继承页面作用域标记后，box-sizing 需要自己兜住 ——
   业务页的 `*{box-sizing:border-box}` 不会再作用到弹层内部。 */
.hs-mask,.hs-mask *,.hs-mask *::before,.hs-mask *::after{ box-sizing:border-box; }

/* P52：工具条里的按钮来自各页页头，页头按钮自带的药丸底/描边要一并清掉 */
.hs-ptool > * *{
  background:transparent!important;border:0!important;box-shadow:none!important;
}

/* =========================================================================
   P53 · 文档页（需求第 1 项）
   -------------------------------------------------------------------------
   用户协议 / 隐私政策这类长文本，改用「页面」打开（走页面层栈、有导航条、
   可滚动、可返回），不再用 HsDialog 弹窗。
   层级：从登录弹窗里点进来时要盖住弹层（1000000），所以最高 1000002。
   ========================================================================= */
.hs-doc-page{ z-index:1000002; }
.hs-doc-wrap{ padding:14px 14px calc(28px + env(safe-area-inset-bottom)); }
.hs-doc-card{
  background:#fff;border-radius:16px;padding:18px 16px 20px;
  box-shadow:0 1px 2px rgba(11,20,40,.04);
}
.hs-doc-meta{
  display:flex;align-items:center;gap:8px;margin-bottom:14px;
  padding-bottom:12px;border-bottom:1px solid var(--hs-line2,#EEF1F7);
  font-size:11.5px;color:var(--hs-mut);
}
.hs-doc-meta i{ font-size:14px;color:var(--hs-primary); }
.hs-doc-body{ font-size:14px;line-height:1.92;color:var(--hs-ink2,#3A465E);word-break:break-word; }
.hs-doc-body p{ margin:0 0 12px; }
.hs-doc-body p:last-child{ margin-bottom:0; }
.hs-doc-body h4{
  margin:20px 0 10px;font-size:14.5px;font-weight:750;color:var(--hs-ink);
  display:flex;align-items:center;gap:7px;
}
.hs-doc-body h4::before{
  content:'';width:3px;height:14px;border-radius:2px;
  background:var(--hs-primary);flex:0 0 auto;
}
.hs-doc-body h4:first-child{ margin-top:0; }
.hs-doc-body b{ color:var(--hs-ink);font-weight:700; }
.hs-doc-empty{ text-align:center;padding:40px 0;color:var(--hs-mut);font-size:13px; }
/* 协议正文里的有序条目 */
.hs-doc-body .li{ display:flex;gap:8px;margin-bottom:10px; }
.hs-doc-body .li > em{
  flex:0 0 auto;min-width:18px;height:18px;margin-top:3px;border-radius:6px;
  background:rgba(var(--hs-primary-rgb),.08);color:var(--hs-primary);
  font-size:11px;font-weight:700;font-style:normal;
  display:flex;align-items:center;justify-content:center;
}
.hs-doc-body .li > div{ flex:1;min-width:0; }

/* 文档页导航条：返回靠左、标题居中 */
.hs-doc-hd{ position:relative;display:flex;align-items:center;width:100%;height:var(--hs-bar-h,68px); }
.hs-doc-back{
  flex:0 0 auto;width:32px;height:32px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:var(--hs-ink);font-size:20px;cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
.hs-doc-back:active{ background:#F1F4FA; }
.hs-doc-hd .hs-appbar-tit{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  max-width:66%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:15.5px;font-weight:700;color:var(--hs-ink);
}
/* 登录弹窗里的协议链接 */
.hs-lg-xy{ color:var(--hs-primary);font-weight:650;text-decoration:none; }
.hs-lg-xy:active{ opacity:.65; }

/* =========================================================================
   P54 · 按钮规范统一（需求第 5 项）
   -------------------------------------------------------------------------
   问题：各页自己写的主操作按钮尺寸不一 —— 高度 44 / 46 / 47 / 48 / 50，
   圆角 13 / 14 / 15，字号 13 / 14.5 / 15 / 16，同一个 App 里像拼出来的。

   规范（与设计系统 .hs-btn 对齐）：
     · 主操作按钮：高 46 / 圆角 14 / 字号 14.5 / 字重 700 / 图标 18
     · 所有按钮：字体继承、字重 700、box-sizing:border-box、去掉点击高亮
   只统一「尺寸与字重」，各页自己的主色不动（充值、成功、危险仍按语义走）。
   ========================================================================= */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(
  .FwGo,.FwA,.PcBtn,.MdRegBtn,.LgSubmit,.JlBtn,.FkSub,.EdSaveBtn,
  .ZtSub,.ZsSubmit,.YeFoot button,.HbFoot button
),
.YeFoot button,.HbFoot button{
  height:46px!important;
  min-height:0!important;
  border-radius:14px!important;
  font-size:14.5px!important;
  font-weight:700!important;
  box-sizing:border-box!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(
  .FwGo,.FwA,.PcBtn,.MdRegBtn,.LgSubmit,.JlBtn,.FkSub,.EdSaveBtn,
  .ZtSub,.ZsSubmit,.YeFoot button,.HbFoot button
) i,
.YeFoot button i,.HbFoot button i{ font-size:18px!important; }

/* 全站按钮底座：字体/字重/盒模型/点按反馈一致 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] button:not(.hs-btn),
.YeFoot button,.HbFoot button{
  font-family:inherit!important;
  font-weight:700;
  box-sizing:border-box;
  -webkit-tap-highlight-color:transparent;
  transition:background .18s ease,opacity .18s ease,transform .12s ease;
}
/* 小号行内按钮（列表里 27~32px 的药丸）统一圆角与字重，不改高度，避免挤压行高 */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(.OdB,.CpOp,.PgB,.JlOp,.HbBtn,.MbB,.NbScan,.ZsScanBtn){
  border-radius:10px!important;
  font-size:11.5px!important;
  font-weight:700!important;
}

/* =========================================================================
   P54 · 安全验证算式（需求第 1 项）
   -------------------------------------------------------------------------
   防伪查询 / 追溯查询的安全验证题统一成同一套样式，并且「可点击换一题」：
   点算式本身或下面那行小字，都会重新取题（服务端 /hyauyanzm 每次生成新题）。
   ========================================================================= */
.hs-quiz-tip{ font-size:12px;color:var(--hs-mut);margin-bottom:12px; }
.hs-quiz{
  display:inline-block;padding:12px 22px;border-radius:14px;
  background:var(--hs-soft,#F7F9FE);
  border:1px solid rgba(var(--hs-primary-rgb),.12);
  font-size:22px;font-weight:800;color:var(--hs-primary);
  letter-spacing:2px;font-family:ui-monospace,Menlo,monospace;
  cursor:pointer;user-select:none;-webkit-user-select:none;
  transition:background .16s ease,transform .12s ease;
}
.hs-quiz:active{ transform:scale(.96);background:rgba(var(--hs-primary-rgb),.08); }
.hs-quiz.is-load{ opacity:.45; }
.hs-quiz-x{
  display:inline-flex;align-items:center;justify-content:center;gap:4px;
  margin-top:9px;font-size:11.5px;font-weight:650;color:var(--hs-primary);cursor:pointer;
}
.hs-quiz-x i{ font-size:13px; }
.hs-quiz-x:active{ opacity:.6; }

/* =========================================================================
   P54 · 功能列表条目统一（需求第 5 项）
   -------------------------------------------------------------------------
   各页的「设置 / 我的服务 / 关于 / 我的」列表行，尺寸各自写死：
   内边距 12 或 14、图标块 30~36、标题 13~14.5、箭头 15~18，同一屏里能看出差别。
   这里统一成一套：
     · 行高最少 54，左右内边距 15，条目标题与图标间距 12
     · 图标块 34×34 / 圆角 11 / 图标 16
     · 主标题 14px/650，副标题 11.5px，右侧箭头 17px
   只统一尺寸与字重，颜色仍由各页自己的语义色决定（危险项仍是红的）。
   ========================================================================= */
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(.StRow,.GyRow,.AcRow,.WdLi,.WbLi){
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  padding:14px 15px!important;
  min-height:54px!important;
  box-sizing:border-box!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(.StRow,.GyRow,.AcRow,.WdLi,.WbLi) :is(.ic,.WdLi-ic,.WbIco,.AcIc){
  width:34px!important;height:34px!important;min-width:34px!important;border-radius:11px!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  font-size:16px!important;flex-shrink:0!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(.StRow,.GyRow,.AcRow,.WdLi,.WbLi) b{
  font-size:14px!important;
  font-weight:650!important;
  line-height:1.45!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(.StRow,.GyRow,.AcRow,.WdLi,.WbLi) span{
  font-size:11.5px!important;
  line-height:1.5!important;
}
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(.StRow,.GyRow,.AcRow,.WdLi,.WbLi) > i:last-child,
:is(.Ktancchuan,.indexka_ak)[data-hs-page] :is(.StRow,.GyRow,.AcRow,.WdLi,.WbLi) .ar{
  font-size:17px!important;
  color:#C9D0DE!important;
  flex-shrink:0;
}


/* =========================================================================
   P56 · 视觉收口（需求 1 / 2 / 5 / 6 / 7）
   -------------------------------------------------------------------------
   1) 板块不再有投影 —— 页面里所有卡片、统计块、列表项一律去掉 box-shadow，
      层次改由 1px 细边框 + 浅底色区分；只有真正悬浮在内容之上的
      （导航条、底部固定操作栏）保留一条极淡描边，不再「浮起来」。
   2) 内容区顶部不留灰缝 —— P51 给 .Ktancchuan_nk 加的 padding-top:8px
      本意是分隔导航条与首屏板块，实际效果是顶部多出一条背景色缝隙，
      现在归零，内容直接顶到导航条分隔线下方。
   3) 板块底部不再有圆角 —— Hero / 头部色块与下方内容连成通栏。
   4) 面包屑与筛选条一律可横向滑动，不换行、不被右缘裁切。
   5) 底部弹层给最小高度，内容少时也不会缩成一条。
   ========================================================================= */

/* ---------- 1. 去板块投影 ---------- */
:is(.Ktancchuan,.indexka_ak) *{ box-shadow:none!important; }
/* 导航条：用一条分隔线代替投影 */
.hs-appbar{ box-shadow:none!important; border-bottom:1px solid rgba(11,20,40,.07)!important; }
/* 底部固定操作栏：只要上边框，不再整条浮起 */
:is(.YeFoot,.OdFoot,[class*="Foot"][class*="-Foot"]){ box-shadow:none!important; }
/* 悬浮返回按钮是浮在内容上的操作件，保留极淡投影，避免与内容糊在一起 */
.hs-fab-back{ box-shadow:0 4px 14px rgba(11,20,40,.16)!important; }

/* ---------- 2. 顶部不留缝 ---------- */
.Ktancchuan.hs-has-bar > .Ktancchuan_nk{ padding-top:0!important; }
html[data-hs-wx="1"] .Ktancchuan.hs-has-bar > .Ktancchuan_nk{
  padding-top:env(safe-area-inset-top)!important;
}
/* 没有导航条的页面（联管首页等）同样不额外留白 */
.Ktancchuan:not(.hs-has-bar) > .Ktancchuan_nk{ padding-top:0; }

/* ---------- 3. 板块底部圆角归零 ---------- */
:is(.HbHero,.FwHero,.OdTop,.YeHd,.HbWrap,.CtHero,.PcHero,.HHd,.WbLgHd,.hs-guide-hd,
    [class*="Hero"],[class*="Banner"]){ border-radius:0!important; }

/* ---------- 4. 面包屑 / 筛选条横向可滑 ---------- */
/* 只挑「面包屑 / 分类胶囊 / 筛选 chips」这类本该横滑的条，
   不要碰等分页签（.YeTabs / .OdTabs 这类 flex:1 的分段控件）——
   把它们的子项设成 flex:0 0 auto 会让一排放不下，文字被压成窄块。 */
:is(.HbCats,.OdCrumb,.hs-crumb,[class*="Cats"],[class*="Crumb"],[class*="Chips"]){
  overflow-x:auto!important;
  overflow-y:hidden!important;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  flex-wrap:nowrap!important;
  max-width:100%!important;
  min-width:0;
  scrollbar-width:none;
}
:is(.HbCats,.OdCrumb,.hs-crumb,[class*="Cats"],[class*="Crumb"],[class*="Chips"])::-webkit-scrollbar{
  display:none;height:0;
}
/* 横滑容器内的子项不允许被压缩，否则一排胶囊会被挤成等宽短块 */
:is(.HbCats,.OdCrumb,.hs-crumb,[class*="Cats"],[class*="Crumb"],[class*="Chips"]) > *{
  flex:0 0 auto!important;
  white-space:nowrap;
}

/* ---------- 5. 底部弹层最小高度 ---------- */
.hs-sheet{
  min-height:min(48vh,420px);
}
/* 内容确实很少的确认类弹层（只有一句话 + 两个按钮）不受最小高度影响 */
.hs-sheet--mini{ min-height:0!important; }

/* 进站引导页（#HsYindao）不在 .Ktancchuan 内，单独收口一遍 */
.hs-guide, .hs-guide *{ box-shadow:none!important; }
.hs-guide-hd{ border-radius:0!important; }
.hs-guide-i{ border-color:#E6EBF5!important; }

/* P56（需求第 9 项）· 深色块里的「浅底小块」文字回到墨色
   -------------------------------------------------------------------------
   hsDarkFix 会给深色背景块打 .hs-on-dark，其 `color:#fff!important`
   会顺着继承把里面白底控件的文字也变白 —— 一旦某个页签切到非选中态
   （底色变回白），就成了「白字压白底」，用户完全看不到。
   这里把深色块内的浅底小块（未选中页签 / 金额格 / 分类胶囊）显式拉回墨色，
   选中态（.on，深底白字）不受影响。
   ========================================================================= */
.hs-on-dark :is(.YeTab,.YeAmtIt,.HbCat,.OdTab,.GlTab,.MbQ,.FkLx,.ZtSegI,.YeCust):not(.on){
  color:var(--hs-ink)!important;
}
.hs-on-dark :is(.YeTab,.YeAmtIt,.HbCat,.OdTab,.GlTab,.MbQ,.FkLx,.ZtSegI,.YeCust):not(.on) :is(b,span,em,i,strong){
  color:inherit!important;
  text-shadow:none!important;
}
.hs-on-dark :is(.YeTab.on,.YeAmtIt.on,.HbCat.on,.OdTab.on,.GlTab.on,.MbQ.on){
  color:#fff!important;
}

/* =========================================================================
   P62 · 三处系统性修正
   -------------------------------------------------------------------------
   1) 全宽固定条统一 border-box
      `.AdBar/.CtBar` 这类条用 left:0;right:0 + 左右 padding 定位，但页面里
      没有全局 `*{box-sizing:border-box}`，于是宽度 = 100% + 28px 内边距，
      在任何机型上都会撑出横向滚动（用户看到的「超出页面宽度」）。
   2) 可变色小控件自身被打上 hs-on-dark 后，非选中态回到墨色
      hsDarkFix 是按「当前背景色」打标的，页签一换选中态，旧标签的
      `color:#fff!important` 还留着，就成了白字压白底（余额页「全部」）。
   3) 页面进入过渡：子页从右侧轻微推入 + 淡入，返回时反过来
      只用 transform/opacity，不触发重排，低端机也不掉帧。
   ========================================================================= */

/* 1) 底部 / 顶部全宽条：把 padding 算进宽度里 */
.AdBar,.CtBar,.PcBar,.CkBar,.OrBar,.HbFoot,.YeFoot,.TmBar,.JlBar,.MdBar,.FkBar,.CxBar,
.hs-appbar,.hs-sheet,.hs-dialog{
  box-sizing:border-box!important;
}
.AdBar,.CtBar,.PcBar,.CkBar,.OrBar,.HbFoot,.YeFoot,.TmBar,.JlBar,.MdBar,.FkBar,.CxBar{
  max-width:100%;
}

/* 2) 自身被标成 hs-on-dark 的页签 / 胶囊，非选中态一律墨色 */
:is(.YeTab,.YeAmtIt,.HbCat,.OdTab,.GlTab,.MbQ,.FkLx,.ZtSegI,.YeCust).hs-on-dark:not(.on){
  color:var(--hs-ink)!important;
}
:is(.YeTab,.YeAmtIt,.HbCat,.OdTab,.GlTab,.MbQ,.FkLx,.ZtSegI,.YeCust).hs-on-dark:not(.on)
  :is(b,span,em,i,strong){
  color:inherit!important;
  text-shadow:none!important;
}
/* 选中态保持白字（深色底 / 主色底都成立） */
:is(.YeTab.on,.YeAmtIt.on,.HbCat.on,.OdTab.on,.GlTab.on,.MbQ.on,.FkLx.on,.ZtSegI.on).hs-on-dark{
  color:#fff!important;
}

/* ============================================================================
   P66（需求第 5 项）· 移动端视觉与动效升级
   ----------------------------------------------------------------------------
   范围：消费者端 / 运营端 / 追溯联管 共用样式（都是这套 hsui.css）。
   原则同后台：只叠加观感，不改结构、不动业务类名，老页面自动受益。
   ============================================================================ */

@keyframes HsRiseIn{ from{opacity:0; transform:translateY(10px);} to{opacity:1; transform:none;} }
@keyframes HsFadeIn{ from{opacity:0;} to{opacity:1;} }
@keyframes HsPopIn{ 0%{opacity:0; transform:scale(.96);} 100%{opacity:1; transform:none;} }

/* 页面内容错峰进场：只作用在页面直接子块上，避免影响内部滚动容器 */
.Ktancchuan_nk > .hs-page-head,
.Ktancchuan_nk > .hs-card,
.Ktancchuan_nk > .hs-hero,
.Ktancchuan_nk > .hs-sec{ animation:HsRiseIn .3s cubic-bezier(.22,.61,.36,1) both; }
.Ktancchuan_nk > *:nth-child(2){ animation-delay:.03s; }
.Ktancchuan_nk > *:nth-child(3){ animation-delay:.06s; }
.Ktancchuan_nk > *:nth-child(4){ animation-delay:.09s; }
.Ktancchuan_nk > *:nth-child(5){ animation-delay:.12s; }

/* 卡片：更大的圆角 + 更柔的投影，接近 iOS 18 观感 */
.hs-card{
  border-radius:18px;
  box-shadow:0 1px 2px rgba(15,26,46,.035), 0 10px 28px -20px rgba(15,26,46,.32);
  border:1px solid rgba(15,26,46,.05);
  transition:transform .18s cubic-bezier(.4,0,.2,1), box-shadow .18s;
}
.hs-card:active{ transform:scale(.995); }

/* 列表项：按压缩放 + 悬停染色 */
.hs-li, .hs-cell, .WdLi, .hs-guide-item, .hs-menu-row{
  transition:background .16s, transform .12s;
}
.hs-li:active, .hs-cell:active, .WdLi:active, .hs-guide-item:active{ transform:scale(.985); }

/* 主按钮：品牌渐变，按下回弹 */
.hs-btn--primary, .hs-btn.primary{
  background:linear-gradient(135deg, var(--hs-primary) 0%, rgba(var(--hs-primary-rgb),.82) 100%);
  box-shadow:0 8px 20px -10px rgba(var(--hs-primary-rgb),.9);
  transition:transform .14s, box-shadow .18s, filter .18s;
}
.hs-btn--primary:active, .hs-btn.primary:active{ transform:scale(.97); filter:brightness(.98); }

/* 底部导航：毛玻璃 + 顶部细线，滚动时层次更清楚 */
.hs-tabbar, .Fwxtaa{ backdrop-filter:saturate(1.6) blur(14px); -webkit-backdrop-filter:saturate(1.6) blur(14px); }

/* 分区标题：左侧短竖条更有节奏 */
.hs-sec-title, .hs-title{ letter-spacing:-.1px; }

/* 输入框聚焦：柔和光环 */
.hs-field:focus-within{ box-shadow:0 0 0 3.5px rgba(var(--hs-primary-rgb),.12); border-color:rgba(var(--hs-primary-rgb),.55); }

/* 弹层：进出场统一交给 .is-in 的 transition（.hs-sheet / .hs-dlg 各自已定义）。
   这里原来的 HsPopIn animation 与过渡重复：animation-fill-mode:both 会把
   opacity 锁死在 1，关闭时关掉 .is-in 也不再淡出，只能等 DOM 被移除 ——
   表现就是「弹窗啪一下就没了」。 */

/* 骨架屏：呼吸感 */
@keyframes HsBreathe{ 0%,100%{opacity:.55;} 50%{opacity:.9;} }
.hs-skeleton, .GlSkeleton i{ animation:HsBreathe 1.4s ease-in-out infinite; }

/* 「全部环节」这类分组小卡（追溯联管也用得到） */
.hs-group{ border:1px solid rgba(15,26,46,.06); border-radius:16px; overflow:hidden; background:#fff;
  box-shadow:0 1px 2px rgba(15,26,46,.03), 0 8px 22px -20px rgba(15,26,46,.3); }
.hs-group-hd{ display:flex; align-items:center; gap:8px; padding:11px 13px;
  background:linear-gradient(180deg,#FAFCFF,#F5F8FD); border-bottom:1px solid #EFF3FA; font-weight:800; font-size:13px; }

/* =========================================================
   P68 · 滚动期降级：底部导航 / 顶栏的毛玻璃在滚动时每帧都要重新模糊，
   低端机上表现就是「一滑就顿」。滚动期间临时换成不透明底色，
   停手 200ms 后自动恢复毛玻璃 —— 视觉几乎无差别，滚动明显跟手。
   ========================================================= */
/* 底部主导航：真实选择器是 #Dindexhang.hs-nav（.hs-tabbar / .Fwxtaa 并不是 class，
   早先那两条规则其实一直没命中）。滚动中把 20px 半径的全宽模糊换成不透明底。 */
body.hs-scrolling #Dindexhang.hs-nav{
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  background:rgba(255,255,255,.985)!important;
}
html[data-hs-theme="dark"] body.hs-scrolling #Dindexhang.hs-nav{
  background:rgba(15,22,24,.985)!important;
}

/* P77（需求第 8 项）：页面层铺满后，页头也跟随内容列居中，避免宽屏下
   标题贴在最左边、内容却在中间的割裂观感 */
.Ktancchuan > .hs-appbar{
  width:100%!important;
  max-width:var(--hs-w)!important;
  margin-left:auto!important; margin-right:auto!important;
  left:0!important; right:0!important;
}


/* P78：用户设置底部「清理缓存」入口 */
.HsCacheWrap{margin:20px 14px calc(26px + env(safe-area-inset-bottom));padding:14px 14px 12px;background:#fff;border:1px solid #EEF1F7;border-radius:16px;box-shadow:0 4px 16px rgba(15,26,46,.035);}
.HsCacheBtn{width:100%;height:44px;border:1px solid #F04438;background:#FFF6F5;color:#D92D20;border-radius:12px;font-family:inherit;font-size:13.5px;font-weight:750;display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;}
.HsCacheBtn:active{background:#FFE9E7;transform:scale(.985);}
.HsCacheBtn i{font-size:17px;}
.HsCacheTip{margin-top:9px;font-size:11px;line-height:1.7;color:#9AA3B5;text-align:center;}
.WbCache{margin:14px 12px 0;padding:13px 14px 11px;background:var(--hs-card,#fff);border:1px solid #EEF1F7;border-radius:15px;}
.WbCache .HsCacheBtn{height:42px;}
.WbCache .HsCacheTip{color:#8A94A6;}
