@charset "UTF-8";
/* ==========================================================================
   战术中心 · 手机端主页专属样式（只服务 public/mobile.html）
   --------------------------------------------------------------------------
   命名约定（M1-309）：
     · assets/mobile-base.css = 全站手机端「基础层」（触控/安全区/按压反馈，43 页共用）
     · assets/mobile.css       = mobile.html 自己的专属布局与视觉（只有本页引用）
   两个文件同时加载，互不冲突：base 只写通用能力与 body:not([data-mb-native])
   的页面级覆盖，本文件只写 mb- 前缀的手机主页组件。

   令牌：浅色全部映射到 tokens.css（--bg / --card / --ink / --t1 / --t2 / --blue…）；
   深色由本文件的 [data-theme="dark"] 段成对提供（tokens.css 无深色段）。
   ========================================================================== */

/* ---------------- 令牌映射 ---------------- */
body[data-mb-native]{
  --mb-bg:var(--bg);
  --mb-wash:var(--wash);
  --mb-card:var(--card);
  --mb-ink:var(--ink);
  --mb-t1:var(--t1);
  --mb-t2:var(--t2);
  --mb-t3:var(--t2);
  --mb-line:var(--line);
  --mb-line-soft:var(--line-soft);
  --mb-blue:var(--blue);
  --mb-blue-soft:var(--blue-soft);
  --mb-blue-line:var(--blue-line);
  --mb-grad-1:var(--blue-deep-1);
  --mb-grad-2:var(--blue-deep-2);
  --mb-ok:var(--ok);
  --mb-ok-soft:var(--ok-soft);
  --mb-warn:var(--warn);
  --mb-warn-soft:var(--warn-soft);
  --mb-red:var(--red);
  --mb-red-soft:var(--red-soft);
  --mb-on-blue:#FCFDFF;
  --mb-r-l:var(--r-l);
  --mb-r-m:var(--r-m);
  --mb-r-s:var(--r-s);
  --mb-sh:var(--sh-1);
  --mb-font:var(--f-sans);
  --mb-pad:16px;
  --mb-tabbar-h:56px;
}
/* R4-003：深色跟随全站 data-theme；底 #141821 系，禁止纯黑 */
[data-theme="dark"] body[data-mb-native]{
  color-scheme:dark;
  --mb-bg:#141821;
  --mb-wash:#222B37;
  --mb-card:#1B222C;
  --mb-ink:#F2F6FA;
  --mb-t1:#CBD6E1;
  --mb-t2:#93A4B5;
  --mb-t3:#8296A8;
  --mb-line:#2A3542;
  --mb-line-soft:#232D38;
  /* R17：深色下蓝系同样跟随主题色（--blue 系由 tokens.css 深色段 + extra.css
     的 [data-theme=dark][data-accent=x] 提供），不再写死晨雾蓝。 */
  --mb-blue:var(--blue);
  --mb-blue-soft:var(--blue-soft);
  --mb-blue-line:var(--blue-line);
  /* R8-E：深色下 --mb-on-blue 是深墨色，原渐变 #3E7EA8→#275A7C 上只有 3.9:1；
     改用跟随主题色的浅蓝（--blue-lt → --blue），深墨字对比 7.8:1 / 5.7:1。 */
  --mb-grad-1:var(--blue-lt);
  --mb-grad-2:var(--blue);
  --mb-ok:#79B694;
  --mb-ok-soft:#1B2E24;
  --mb-warn:#D6AC5C;
  --mb-warn-soft:#2E2718;
  --mb-red:#D98A73;
  --mb-red-soft:#31201C;
  --mb-on-blue:#141821;
}

/* ---------------- 三段式手机壳：页头 / 滚动区 / tab 栏 ---------------- */
html{background:var(--bg)}
body[data-mb-native]{
  background:var(--mb-bg);
  color:var(--mb-t1);
  font-family:var(--mb-font);
  font-size:var(--m-fs-15);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  height:100dvh;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  padding-left:env(safe-area-inset-left,0px);
  padding-right:env(safe-area-inset-right,0px);
}

/* ---------------- 页头 ---------------- */
.mb-hd{
  flex-shrink:0;
  display:flex;
  align-items:center;
  gap:10px;
  height:56px;
  padding:0 12px 0 16px;
  background:var(--mb-card);
  border-bottom:1px solid var(--mb-line);
  position:relative;
  z-index:5;
}
.mb-brand{display:flex;align-items:center;gap:9px;flex:1;min-width:0}
.mb-logo{
  width:30px;height:30px;border-radius:9px;flex-shrink:0;
  background:linear-gradient(158deg,var(--mb-grad-1),var(--mb-grad-2));
  color:var(--mb-on-blue);
  display:grid;place-items:center;
}
.mb-logo svg{width:17px;height:17px;stroke:currentColor;stroke-width:2;fill:none}
.mb-brand-t{display:flex;flex-direction:column;justify-content:center;min-width:0}
.mb-brand-t b{font-size:var(--m-fs-16);font-weight:600;color:var(--mb-ink);line-height:1.25}
.mb-brand-t small{font-size:12px;color:var(--mb-t3);line-height:1.3}
.mb-icobtn{
  width:44px;height:44px;border-radius:12px;flex-shrink:0;
  border:1px solid var(--mb-line);background:var(--mb-card);
  display:grid;place-items:center;
}
.mb-icobtn svg{width:19px;height:19px;stroke:var(--mb-t1);stroke-width:1.8;fill:none}

/* ---------------- 滚动区 ---------------- */
.mb-screen{
  flex:1 1 auto;min-height:0;
  overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-y:contain;
  background:var(--mb-bg);
  padding-bottom:8px;
}
.mb-screen::-webkit-scrollbar{width:0}
/* 弹层/抽屉打开时锁住内容区滚动（M1-313） */
.mb-screen.mb-noscroll{overflow:hidden}

.mb-sec{
  padding:18px 16px 8px;
  font-size:12px;font-weight:600;color:var(--mb-t3);
  letter-spacing:.04em;
}
.mb-card{
  background:var(--mb-card);
  border-radius:var(--mb-r-l);
  box-shadow:var(--mb-sh);
  margin:0 16px 12px;
  padding:16px;
}

/* ---------------- 品牌卡 ---------------- */
.mb-hero{
  margin:14px 16px 12px;
  padding:18px;
  background:linear-gradient(158deg,var(--mb-grad-1),var(--mb-grad-2));
  color:var(--mb-on-blue);
  box-shadow:var(--sh-2);
}
.mb-hero-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mb-hero-title{margin:0;font-size:var(--m-fs-19);font-weight:600;line-height:1.35;color:var(--mb-on-blue)}
.mb-hero-season{
  font-size:12px;font-weight:500;
  padding:3px 9px;border-radius:999px;
  background:rgba(252,253,255,.18);
  color:var(--mb-on-blue);
  box-shadow:inset 0 0 0 1px rgba(252,253,255,.28);
}
.mb-hero-lead{
  margin-top:8px;font-size:var(--m-fs-13);line-height:1.7;
  color:var(--mb-on-blue);opacity:.9;
}

/* ---------------- 一步查询 ---------------- */
.mb-query{padding:16px}
/* R14：联想下拉以 .mb-sbox 为定位父级（绝对定位的子元素不参与 flex 布局） */
.mb-sbox{
  position:relative;
  display:flex;align-items:center;gap:8px;
  background:var(--mb-wash);
  border-radius:var(--mb-r-m);
  padding:4px 4px 4px 12px;
  box-shadow:inset 0 0 0 1px var(--mb-line);
}
.mb-sbox input{
  flex:1;min-width:0;height:48px;
  border:0;background:transparent;outline:none;
  font-family:var(--mb-font);font-size:var(--m-fs-16);color:var(--mb-ink);
}
.mb-sbox input::placeholder{color:var(--mb-t3);font-size:var(--m-fs-14)}
.mb-sbox input:disabled{color:var(--mb-t2)}
.mb-go{
  min-height:44px;padding:0 18px;flex-shrink:0;
  border-radius:10px;
  background:var(--mb-blue);color:var(--mb-on-blue);
  font-size:var(--m-fs-15);font-weight:500;font-family:var(--mb-font);
  display:inline-flex;align-items:center;gap:6px;
}
.mb-go svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none}

/* R14 · 昵称联想下拉（共用组件 assets/nickname-dropdown.js）：
   只把组件的 --nd-* 令牌重映射到手机端 --mb-*，深色随 --mb-* 一起生效，
   不新增配色、不改组件定位（组件自己绝对定位在 .mb-sbox 下方）。 */
body[data-mb-native] .nd-list{
  --nd-bg:var(--mb-card);
  --nd-line:var(--mb-line);
  --nd-ink:var(--mb-ink);
  --nd-sub:var(--mb-t2);
  --nd-on:var(--mb-blue-soft);
  --nd-badge-bg:var(--mb-blue-soft);
  --nd-badge-fg:var(--mb-blue);
  --nd-ban-bg:var(--mb-red-soft);
  --nd-ban-fg:var(--mb-red);
  --nd-radius:var(--mb-r-m);
  max-height:min(46vh,320px);
}
body[data-mb-native] .nd-opt{font-size:var(--m-fs-15)}
body[data-mb-native] .nd-p{font-size:11px;letter-spacing:.02em}
.mb-go:disabled{opacity:.6;cursor:progress}
.mb-chips{display:flex;gap:8px;margin-top:10px}
.mb-chip{
  flex:1 1 0;min-width:0;min-height:44px;padding:0 14px;
  border-radius:999px;
  background:var(--mb-wash);color:var(--mb-t2);
  font-size:var(--m-fs-125);font-family:var(--mb-font);
  box-shadow:inset 0 0 0 1px var(--mb-line);
}
.mb-chip.on{
  background:var(--mb-blue-soft);color:var(--mb-blue);
  font-weight:600;
  box-shadow:inset 0 0 0 1px var(--mb-blue-line);
}
.mb-chip:disabled{opacity:.55}
.mb-hint{
  display:none;margin-top:8px;
  font-size:var(--m-fs-125);color:var(--mb-red);
}
.mb-hint.on{display:block}

/* ---------------- 服务器状态卡（照小程序 index.wxss .status-card） ---------------- */
.ms-status{
  position:relative;
  display:block;width:calc(100% - 32px);text-align:left;
  margin:14px 16px 12px;padding:18px 18px 30px;
  box-sizing:border-box;
  background:var(--mb-card);
  border-radius:var(--mb-r-l);
  box-shadow:var(--mb-sh);
  overflow:hidden;
  font-family:var(--mb-font);
  color:var(--mb-t1);
}
.ms-status::before{
  content:"";position:absolute;inset:0;border-radius:inherit;
  box-shadow:inset 0 0 0 1px var(--mb-line);pointer-events:none;
}
.ms-s-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.ms-s-label{font-size:var(--m-fs-125);color:var(--mb-t2)}
.ms-s-ver{
  font-size:11px;color:var(--mb-t2);
  background:var(--mb-wash);padding:2px 9px;border-radius:999px;
  font-variant-numeric:tabular-nums;
}
.ms-s-state{display:flex;align-items:center;gap:8px;margin-top:9px}
.ms-s-dot{width:10px;height:10px;border-radius:50%;background:var(--mb-t3);flex-shrink:0}
.ms-s-state-t{font-size:var(--m-fs-26);font-weight:600;line-height:1.2;color:var(--mb-t3)}
.ms-status.is-ok .ms-s-dot{background:var(--mb-ok);box-shadow:0 0 6px var(--mb-ok)}
.ms-status.is-ok .ms-s-state-t{color:var(--mb-ok)}
.ms-status.is-warn .ms-s-dot{background:var(--mb-warn)}
.ms-status.is-warn .ms-s-state-t{color:var(--mb-warn)}
.ms-status.is-bad .ms-s-dot{background:var(--mb-red)}
.ms-status.is-bad .ms-s-state-t{color:var(--mb-red)}
.ms-s-online-label{display:block;font-size:var(--m-fs-125);color:var(--mb-t2);margin-top:12px}
.ms-s-online-num{
  display:block;font-size:var(--m-fs-28);font-weight:600;color:var(--mb-warn);
  line-height:1.25;font-variant-numeric:tabular-nums;letter-spacing:-.02em;
}
.ms-s-peak{display:block;font-size:var(--m-fs-115);color:var(--mb-t2);margin-top:2px}
.ms-s-wave{
  position:absolute;left:0;right:0;bottom:-2px;height:22px;
  background:radial-gradient(120% 100% at 50% 100%,var(--mb-wash) 60%,transparent 61%);
  pointer-events:none;
}

/* ---------------- 2×2 功能格（照小程序 .grid / .g-item） ---------------- */
.ms-grid{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;margin:0 16px 12px;
}
.ms-g{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  width:100%;box-sizing:border-box;
  min-height:78px;padding:15px 14px;
  background:var(--mb-card);border-radius:var(--mb-r-l);
  box-shadow:var(--mb-sh);
  font-family:var(--mb-font);text-align:left;
  color:var(--mb-t1);
}
.ms-g-l{display:flex;flex-direction:column;min-width:0}
.ms-g-name{font-size:var(--m-fs-15);font-weight:500;color:var(--mb-ink);line-height:1.35}
.ms-g-desc{font-size:var(--m-fs-115);color:var(--mb-t2);margin-top:4px;line-height:1.4}
.ms-g-i{width:26px;height:26px;flex-shrink:0;display:grid;place-items:center}
.ms-g-i svg{width:22px;height:22px;stroke:var(--mb-blue);stroke-width:1.7;fill:none}
.ms-g:active{transform:scale(.98)}

/* ---------------- 视频举报文案获取（照小程序 .report-btn） ---------------- */
.ms-report{
  display:flex;align-items:center;gap:12px;
  margin:0 16px 12px;padding:15px 16px;
  background:var(--mb-card);border-radius:var(--mb-r-l);
  box-shadow:var(--mb-sh);
  color:var(--mb-t1);
}
.ms-r-i{
  width:38px;height:38px;border-radius:12px;flex-shrink:0;
  background:var(--mb-blue-soft);display:grid;place-items:center;
}
.ms-r-i svg{width:20px;height:20px;stroke:var(--mb-blue);stroke-width:1.7;fill:none}
.ms-r-l{flex:1;min-width:0;display:flex;flex-direction:column}
.ms-r-name{font-size:var(--m-fs-15);font-weight:500;color:var(--mb-ink)}
.ms-r-desc{font-size:var(--m-fs-115);color:var(--mb-t2);margin-top:3px}
.ms-r-arrow{color:var(--mb-blue);font-size:var(--m-fs-19);line-height:1;flex-shrink:0}

/* ---------------- 最近查询 ---------------- */
.mb-recent{padding:6px 16px}
.mb-row{
  display:flex;align-items:center;gap:11px;
  padding:12px 0;
  border-bottom:1px solid var(--mb-line-soft);
}
.mb-row:last-child{border-bottom:0}
.mb-row-n{min-width:0;flex:1}
.mb-row-n b{
  display:block;font-size:var(--m-fs-14);font-weight:500;color:var(--mb-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.mb-row-n span{font-size:12px;color:var(--mb-t3)}
.mb-row-v{
  font-size:var(--m-fs-13);font-weight:500;flex-shrink:0;
  font-variant-numeric:tabular-nums;
}
.mb-row-go{
  flex-shrink:0;width:32px;height:32px;border-radius:9px;
  display:grid;place-items:center;background:var(--mb-wash);
}
.mb-row-go svg{width:15px;height:15px;stroke:var(--mb-t2);stroke-width:2;fill:none}
.mb-empty{text-align:center;padding:22px 12px}
.mb-empty h4{font-size:var(--m-fs-14);font-weight:600;color:var(--mb-ink)}
.mb-empty p{margin-top:6px;font-size:var(--m-fs-125);color:var(--mb-t2);line-height:1.7}

/* ---------------- 桌面站入口卡 ---------------- */
.mb-deskcard{display:flex;flex-direction:column;gap:8px}
.mb-deskcard b{font-size:var(--m-fs-14);font-weight:600;color:var(--mb-ink)}
.mb-deskcard p{font-size:var(--m-fs-125);color:var(--mb-t2);line-height:1.7}
.mb-btn{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:48px;padding:0 18px;border-radius:var(--mb-r-m);
  background:var(--mb-blue);color:var(--mb-on-blue);
  font-size:var(--m-fs-15);font-weight:500;font-family:var(--mb-font);
}
.mb-btn.ghost{
  background:transparent;color:var(--mb-blue);
  box-shadow:inset 0 0 0 1px var(--mb-blue-line);
}

/* ---------------- 我的（照小程序 profile.wxml） ---------------- */
#viewMe{padding-top:14px}
.ms-me-card{
  margin:0 16px 12px;padding:16px;
  background:var(--mb-card);border-radius:var(--mb-r-l);
  box-shadow:var(--mb-sh);
}
.ms-login{
  display:flex;align-items:center;justify-content:center;
  min-height:48px;border-radius:999px;
  background:var(--mb-blue);color:var(--mb-on-blue);
  font-size:var(--m-fs-16);font-weight:500;
}
.ms-login-tip{
  margin-top:10px;font-size:var(--m-fs-115);line-height:1.7;
  color:var(--mb-t2);text-align:center;
}
.ms-me-acts{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.ms-me-acts .mb-btn{width:100%;padding:0 14px}
.ms-user{display:flex;align-items:center;gap:12px}
.ms-avatar{
  width:50px;height:50px;border-radius:50%;flex-shrink:0;
  background:var(--mb-blue-soft);color:var(--mb-blue);
  font-size:var(--m-fs-20);font-weight:600;
  display:grid;place-items:center;
}
.ms-user-b{flex:1;min-width:0}
.ms-u-name{
  font-size:var(--m-fs-16);font-weight:600;color:var(--mb-ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ms-u-mail{
  font-size:12px;color:var(--mb-t2);margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.mb-tag.is-ok{background:var(--mb-ok-soft);color:var(--mb-ok);flex-shrink:0}
.ms-kv{
  display:flex;justify-content:space-between;gap:12px;
  padding:9px 0;border-top:1px solid var(--mb-line-soft);
  font-size:var(--m-fs-13);
}
.ms-me-card .ms-kv:first-of-type{margin-top:14px}
.ms-kv span{color:var(--mb-t3);flex-shrink:0}
.ms-kv b{
  color:var(--mb-ink);font-weight:500;text-align:right;
  font-variant-numeric:tabular-nums;
}
.ms-menu{
  margin:0 16px 12px;padding:0 16px;
  background:var(--mb-card);border-radius:var(--mb-r-l);
  box-shadow:var(--mb-sh);
}
.ms-m-item{
  display:flex;align-items:center;gap:12px;
  min-height:52px;padding:12px 0;
  border-bottom:1px solid var(--mb-line-soft);
  color:var(--mb-ink);font-size:var(--m-fs-145);
  background:transparent;width:100%;text-align:left;
  font-family:var(--mb-font);
}
.ms-m-item:last-child{border-bottom:0}
.ms-m-item svg{width:19px;height:19px;stroke:var(--mb-blue);stroke-width:1.7;fill:none;flex-shrink:0}
.ms-m-name{flex:1;min-width:0}
.ms-m-arrow{color:var(--mb-t3);font-size:var(--m-fs-18);line-height:1;flex-shrink:0}
.ms-ver{
  text-align:center;color:var(--mb-t3);
  font-size:12px;margin:22px 0 8px;
}

/* ---------------- 结果页 ---------------- */
.mb-crumb{
  display:flex;align-items:center;gap:6px;
  font-size:var(--m-fs-125);color:var(--mb-t3);
  padding:12px 16px 2px;
}
.mb-crumb b{color:var(--mb-t1);font-weight:500}
.mb-back{
  display:inline-flex;align-items:center;gap:4px;
  min-height:44px;padding:0 10px;border-radius:10px;
  background:transparent;color:var(--mb-blue);
  font-family:var(--mb-font);font-size:var(--m-fs-13);font-weight:500;
}
.mb-back::before{content:"\2039";font-size:var(--m-fs-17);line-height:1}
.mb-requery{padding:12px;margin:8px 16px 4px}
.mb-requery .mb-sbox{padding:3px 3px 3px 10px}
.mb-requery .mb-sbox input{height:44px;font-size:var(--m-fs-15)}
.mb-requery .mb-go{min-height:44px;padding:0 14px;font-size:var(--m-fs-14)}
.mb-requery .mb-chips{margin-top:8px;gap:6px}

.mb-pcard{display:flex;gap:12px;align-items:center}
.mb-av{
  width:48px;height:48px;border-radius:var(--r-m);flex-shrink:0;
  background:linear-gradient(158deg,var(--mb-grad-1),var(--mb-grad-2));
  color:var(--mb-on-blue);
  display:grid;place-items:center;font-size:var(--m-fs-17);font-weight:600;
}
.mb-pcard h3{font-size:var(--m-fs-16);font-weight:600;color:var(--mb-ink)}
.mb-pcard p{margin-top:3px;font-size:12px;color:var(--mb-t2);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.mb-tag{
  display:inline-flex;align-items:center;gap:3px;
  font-size:12px;padding:2px 7px;border-radius:6px;
  background:var(--mb-blue-soft);color:var(--mb-blue);font-weight:600;
}
.mb-kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.mb-kpi{
  background:var(--mb-wash);
  border-radius:var(--mb-r-m);
  padding:12px 13px;
}
.mb-kpi em{display:block;font-style:normal;font-size:12px;color:var(--mb-t3);margin-bottom:4px}
.mb-kpi b{
  display:block;font-size:var(--m-fs-23);font-weight:600;color:var(--mb-ink);
  letter-spacing:-.02em;font-variant-numeric:tabular-nums;
}
.mb-kpi s{display:block;text-decoration:none;font-size:12px;color:var(--mb-t3);margin-top:2px}

.mb-verdict{display:flex;gap:13px;align-items:flex-start}
.mb-verdict i{
  width:42px;height:42px;border-radius:13px;flex-shrink:0;
  background:var(--mb-ok-soft);display:grid;place-items:center;
}
.mb-verdict i svg{width:22px;height:22px;stroke:var(--mb-ok);stroke-width:2;fill:none}
.mb-verdict.bad i{background:var(--mb-red-soft)}
.mb-verdict.bad i svg{stroke:var(--mb-red)}
.mb-verdict.warn i{background:var(--mb-warn-soft)}
.mb-verdict.warn i svg{stroke:var(--mb-warn)}
.mb-verdict h3{font-size:var(--m-fs-16);font-weight:600;color:var(--mb-ink);line-height:1.45}
.mb-verdict p{margin-top:4px;font-size:var(--m-fs-125);color:var(--mb-t2);line-height:1.7}

.mb-kv{
  display:flex;justify-content:space-between;gap:12px;
  padding:9px 0;border-bottom:1px solid var(--mb-line-soft);
  font-size:var(--m-fs-13);
}
.mb-kv:last-child{border-bottom:0}
.mb-kv span{color:var(--mb-t3)}
.mb-kv b{color:var(--mb-ink);font-weight:500;font-variant-numeric:tabular-nums}

.mb-state{display:flex;gap:13px;align-items:flex-start}
.mb-state i{
  width:42px;height:42px;border-radius:13px;flex-shrink:0;
  background:var(--mb-blue-soft);display:grid;place-items:center;
}
.mb-state i svg{width:21px;height:21px;stroke:var(--mb-blue);stroke-width:1.9;fill:none}
.mb-state.err i{background:var(--mb-red-soft)}
.mb-state.err i svg{stroke:var(--mb-red)}
.mb-state h3{font-size:var(--m-fs-15);font-weight:600;color:var(--mb-ink)}
.mb-state p{margin-top:4px;font-size:var(--m-fs-125);color:var(--mb-t2);line-height:1.7}
.mb-spin{
  width:20px;height:20px;border-radius:50%;
  border:2.5px solid var(--mb-blue-soft);border-top-color:var(--mb-blue);
  animation:mb-rot .8s linear infinite;
}
@keyframes mb-rot{to{transform:rotate(360deg)}}
.mb-acts{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.mb-acts .mb-btn{width:auto;flex:1 1 auto;min-width:120px}

/* ---------------- 底部 tab 栏（本页唯一一套，base 层不再注入） ---------------- */
.mb-nav{
  flex-shrink:0;
  display:flex;
  background:var(--mb-card);
  border-top:1px solid var(--mb-line);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
.mb-nav a{
  flex:1 1 0;min-width:0;min-height:56px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  font-size:12px;line-height:1.2;color:var(--mb-t3);
}
.mb-nav a svg{width:22px;height:22px;stroke:currentColor;stroke-width:1.7;fill:none}
.mb-nav a.on{color:var(--mb-blue);font-weight:600}

/* ---------------- toast ---------------- */
.mb-toast{
  position:fixed;left:50%;bottom:calc(var(--mb-tabbar-h) + 28px + env(safe-area-inset-bottom,0px));
  transform:translateX(-50%) translateY(8px);
  background:rgba(31,46,61,.94);color:var(--on-blue);
  font-size:var(--m-fs-13);padding:10px 16px;border-radius:12px;
  opacity:0;pointer-events:none;z-index:60;
  transition:opacity .2s,transform .2s;
  max-width:80vw;text-align:center;line-height:1.5;
}
.mb-toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------------- 在线详情弹层（照小程序 index.wxml .mask / .sheet） ---------------- */
.ms-mask{
  position:fixed;inset:0;z-index:70;
  background:rgba(31,46,61,.45);
  display:flex;align-items:flex-end;
  padding-left:env(safe-area-inset-left,0px);
  padding-right:env(safe-area-inset-right,0px);
}
.ms-mask[hidden]{display:none}
.ms-sheet{
  width:100%;box-sizing:border-box;
  background:var(--mb-card);
  border-radius:20px 20px 0 0;
  padding:22px 18px calc(22px + env(safe-area-inset-bottom,0px));
  box-shadow:var(--mb-sh-sheet);
}
.ms-sheet-title{font-size:var(--m-fs-16);font-weight:600;color:var(--mb-ink);margin-bottom:14px}
.ms-sheet-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:12px}
.ms-kpi{
  background:var(--mb-wash);border-radius:var(--mb-r-m);
  padding:12px;text-align:center;
}
.ms-kpi b{
  display:block;font-size:var(--m-fs-21);font-weight:600;color:var(--mb-ink);
  font-variant-numeric:tabular-nums;
}
.ms-kpi span{display:block;font-size:var(--m-fs-115);color:var(--mb-t2);margin-top:3px}
.ms-sheet-row{
  display:flex;justify-content:space-between;gap:12px;
  padding:11px 0;font-size:var(--m-fs-13);color:var(--mb-t1);
  border-bottom:1px solid var(--mb-line-soft);
}
.ms-sheet-row span{flex-shrink:0;color:var(--mb-t3)}
.ms-sheet-row b{
  font-weight:400;color:var(--mb-t2);font-size:12px;
  text-align:right;overflow-wrap:anywhere;
}
.ms-sheet-close{
  width:100%;min-height:48px;margin-top:16px;
  border-radius:999px;background:var(--mb-wash);
  color:var(--mb-blue);font-size:var(--m-fs-15);font-weight:500;
  font-family:var(--mb-font);
}

.mb-desk-modal{
  width:calc(100% - 48px);max-width:340px;margin:auto;
  background:var(--mb-card);border-radius:var(--mb-r-l);
  padding:20px 18px 16px;box-shadow:var(--sh-2);
}
.mb-desk-modal h3{font-size:var(--m-fs-16);font-weight:600;color:var(--mb-ink)}
.mb-desk-modal p{margin-top:8px;font-size:var(--m-fs-13);line-height:1.7;color:var(--mb-t2)}
.mb-desk-acts{display:flex;gap:10px;margin-top:16px}
.mb-desk-acts .mb-btn{flex:1;min-width:0;padding:0 10px;font-size:var(--m-fs-14)}

/* ---------------- 按压反馈（mobile-base.css 已全局提供，这里补本页组件） ---------------- */
.ms-g:active,.ms-m-item:active,.ms-report:active,.ms-status:active,
.mb-tile:active,.mb-row:active,.mb-back:active,
.mb-icobtn:active{
  box-shadow:inset 0 0 0 999px rgba(31,46,61,.09);
}
[data-theme="dark"] .ms-g:active,[data-theme="dark"] .ms-m-item:active,
[data-theme="dark"] .ms-report:active,[data-theme="dark"] .ms-status:active,
[data-theme="dark"] .mb-tile:active,[data-theme="dark"] .mb-row:active,
[data-theme="dark"] .mb-back:active,[data-theme="dark"] .mb-icobtn:active{
  box-shadow:inset 0 0 0 999px rgba(255,255,255,.11);
}

/* ---------------- M1-309：桌面浏览器打开本页 ----------------
   收成 480px 手机宽度的居中列，三段结构与手机端一致，不再左右拉满错版。 */
@media (min-width:769px){
  html{background:var(--mb-desk-bg)}
  body[data-mb-native]{
    width:480px;max-width:480px;margin:0 auto;height:100dvh;
    box-shadow:0 0 0 1px var(--mb-line),0 30px 70px -36px rgba(26,42,58,.45);
  }
  .ms-mask{left:50%;transform:translateX(-50%);width:480px}
  .mb-toast{left:auto;right:50%;transform:translateX(50%) translateY(8px)}
  .mb-toast.on{transform:translateX(50%) translateY(0)}
}
[data-theme="dark"] html{background:var(--mb-dark-bg)}

@media (prefers-reduced-motion:reduce){
  .mb-spin{animation:none}
  .mb-toast{transition:none}
}

/* ---------------- 我的页：问题反馈区（我的反馈列表 + 菜单分组标题） ---------------- */
.ms-me-h{
  display:flex;align-items:baseline;gap:8px;
  padding:16px 16px 6px;
}
.ms-me-h h2{margin:0;font-size:clamp(13px,3.6vw,14px);font-weight:600;color:var(--mb-ink)}
.ms-me-h span{font-size:clamp(11px,3.2vw,12px);color:var(--mb-t3)}
.ms-m-name em{
  display:block;font-style:normal;font-size:clamp(11px,3.2vw,12px);
  color:var(--mb-t3);margin-top:2px;
}
.ms-more{
  display:block;margin:0 16px 12px;padding:12px 0;
  text-align:center;font-size:clamp(13px,3.6vw,14px);font-weight:500;color:var(--mb-blue);
  background:var(--mb-wash);border-radius:999px;
  box-shadow:inset 0 0 0 1px var(--mb-blue-line);
}
