/* ============================================================================
   恒材盛达 · 学习系统后台 —— P4「整齐划一」归一覆盖层（**生成物，勿手改**）
   ----------------------------------------------------------------------------
   生成：python3 scripts/p4_normalize_css.py
   来源：admin.css / admin-shell.css / admin-comp*.css / style.css(后台 token 段)
         —— 逐条把裸色值、越界字号、超范围圆角收敛到 admin.css 的 token；
         结构性问题（栅格/内边距/等宽/等高）在手写层 src/p4_struct.css；
         压不过的 !important 收在残锁层 src/p4_lock.css（全站唯一允许 !important 处）。
   口径：文字三级 / 色相 6 种 / 字号 7 阶（≥11px）/ 圆角 6·8·10 / @media 内同样归一。
   本次生成统计：规则 610 条扫描（其中 @media 内 29 条）→ 改写 262 条
               （字号 24、颜色 314、圆角 52）；带 !important 声明保留权重换值 7 处；
               选择器非法丢弃 0 条。
   ============================================================================ */

/* ============================================================================
   恒材盛达 · 学习系统后台 —— P4「整齐划一」结构规范层（手写部分）
   ----------------------------------------------------------------------------
   加载顺序：admin.css → admin-shell.css → admin-comp.css → admin-comp-a2.css
             → admin-comp-acn.css → admin-comp-p3.css → admin-comp.css 之后
             【本文件 admin-comp-p4.css 最后加载】→ fontawesome
   作用域：所有规则带 `body.admin-view`（+ `#ap`）前缀 ⇒ 学员端零命中。
   写法纪律：不用 !important；靠「更高特异性 + 后加载」取胜（§9.1 反面清单①）。

   本文件的每一条都对应一处**实测偏差**（审计脚本 scripts/p4_audit_layout.py 量出的数字）：
   ----------------------------------------------------------------------------
   §1 面板内容盒 —— 实测各面板内边距 16/16/8/16、0/0/8/0、0/0/0/0 三种
                    ⇒ 内容左边界 264 / 280 / 298 三值不齐，满宽卡 1120 / 1124 / 1128 / 1152 四种宽
   §2 页面标题  —— 实测标题用自动外边距居中（x=625，margin-left 345/347/361 随页变化）
                    ⇒ 与卡片左边界错开 345px，整页「一个左边界」被破坏
   §3 卡片栅格  —— 实测模块卡 inline-block 33.333% + nth-child(3n) 清边距，被 h2 占位打乱
                    ⇒ 同排卡间距 8px / 0px 交替；模块卡宽 365 三列但不均
   §4 列表行宽  —— 实测展示排序行 .fg 被旧规则压成 1/3 宽（376px），右侧 2/3 全空白
   §5 按钮等宽  —— 实测商户卡同行 5×197px + 1×84px；操作列图标按钮 35×26 与 26×26 混用
   §6 看板卡    —— 实测同排统计卡高 94 / 111 不等高
   §7 表单行    —— 实测同一行内控件与按钮基线差（label 17px / 控件 32px）
   ============================================================================ */

/* ---------------------------------------------------------------------------
   §1 面板内容盒统一：所有面板同一内边距 ⇒ 全站一个左边界（280）一个右边界（1400）
   --------------------------------------------------------------------------- */
body.admin-view #ap > div{
  padding: var(--space-4);
}

/* ---------------------------------------------------------------------------
   §2 页面标题与内容左对齐（去掉自动外边距居中）
   --------------------------------------------------------------------------- */
body.admin-view #ap h2.st{
  margin-left: 0;
  margin-right: auto;
}

/* ---------------------------------------------------------------------------
   §3 模块管理三栏栅格：卡间距统一 16px，右边界与其它页对齐
       （容器 display:grid 由 app.js 在 at() 中把行内 display 写成 grid，见 p4_inline_normalize.py）
   --------------------------------------------------------------------------- */
body.admin-view #apMod{
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-4);
  align-items: start;
}
body.admin-view #apMod > .st,
body.admin-view #apMod > .br,
body.admin-view #apMod > .adSecBar{
  grid-column: 1 / -1;
}
body.admin-view #apMod > .fg{
  width: auto;
  margin-right: 0;
  margin-bottom: 0;
}

/* ---------------------------------------------------------------------------
   §4 面板内卡片恢复整行宽（旧规则把 .fg 压成 1/3 宽，只有模块页需要三栏）
   --------------------------------------------------------------------------- */
body.admin-view #ap > div .fg{
  width: 100%;
  margin-right: 0;
  display: block;
}
/* 说明：模块页的卡片被本节的 width:100% 命中时，在栅格内即「占满本列」，
   与 §3 的三栏栅格不冲突（grid 项 width:100% = 列宽），故无需额外覆盖。 */

/* ---------------------------------------------------------------------------
   §4b 展示排序：层级缩进 34 / 72px 是刻意的树形层级，保留；只把行宽恢复整行
   --------------------------------------------------------------------------- */
body.admin-view #apOrd .ad-ord-row-34,
body.admin-view #apOrd .ad-ord-row-72{
  width: 100%;
  box-sizing: border-box;
}

/* ---------------------------------------------------------------------------
   §5 按钮尺寸统一
   --------------------------------------------------------------------------- */
/* 同行次要按钮等宽（原 5×197 + 1×84 参差） */
body.admin-view #ap .drRow .btn.s,
body.admin-view #ap .drRow .drGo{
  flex: 1 1 0%;
  min-width: 0;
}
/* 表格操作列的小图标按钮统一 32×32（原 35×26 与 26×26 混用） */
body.admin-view #ap table td .am,
body.admin-view #ap .acn-10 td .am{
  width: 32px;
  min-width: 32px;
  min-height: 32px;
  padding: 0;
  justify-content: center;
}

/* ---------------------------------------------------------------------------
   §6 学习看板：统计卡等高 + 内边距统一（原 12px 10px，与其它卡 16px 不一）
   --------------------------------------------------------------------------- */
body.admin-view #apDash .dsh-cards{
  grid-auto-rows: 1fr;
}
body.admin-view #apDash .dsh-card{
  padding: var(--space-3) var(--space-4);
}
body.admin-view #apDash .dsh-sec{
  padding: var(--space-4);
}

/* ---------------------------------------------------------------------------
   §7 表单行基线对齐（标签与控件同一行时按控件高度对齐）
   --------------------------------------------------------------------------- */
body.admin-view #ap .adSecHead,
body.admin-view #ap .ac-display-flex-align-items-cen-1ec32{
  align-items: center;
}


/* ============================================================================
   恒材盛达 · 学习系统后台 —— P5「界面整齐与可用性修复」组件层（手写）
   ----------------------------------------------------------------------------
   本层只解决 BOSS 2026-10-11 报的 5 个具体问题，逐条对应、可逐条回退：
     F1 文字按钮被压成 32px 图标规格 → 文字溢出（.amtxt 专用规格）
     F3 测评面板子页签「大小不一、太 Low」→ 统一分段控件 .adseg
     F3 测评面板工具行按钮/输入框高度不齐 → #apExam 统一 32px 基线
     F4 学习看板卡片/文字过小 → 字号上到 7 阶的正文与标题档
     F4 看板卡片「默认被选中」→ 选中态只认非空筛选，纯展示卡永不选中
     F5 侧栏收起按钮位置 → 移到侧栏头部（不再挤在顶栏「保存」旁边）
   规则纪律：选择器一律带 body.admin-view 前缀（学员端零命中）；只引用 admin.css 的
   token 与阶内字号，不写裸色值；本层不需要 !important（残锁层另有）。
   ============================================================================ */

/* ---------- F1 · 含文字的 .am 按钮：恢复到按钮规格（图标型仍是 32×32） ---------- */
body.admin-view #ap .am.amtxt{
  width: auto;
  min-width: 0;
  height: 32px;
  min-height: 32px;
  padding: 0 var(--space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-1);
  white-space: nowrap;
  font-size: var(--fs-body);
  line-height: 1;
  box-sizing: border-box;
}

/* ---------- F3 · 统一分段控件（测评 6 页签 / 积分中心 4 页签共用） ---------- */
body.admin-view .adseg{
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: var(--space-2);
  margin: var(--space-3) 0;
}
body.admin-view .adseg-i{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-1);
  height: 36px;
  min-width: 0;
  padding: 0 var(--space-2);
  background: var(--color-surface);
  color: var(--color-text-2);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: var(--fs-body);
  font-weight: var(--fw-medium);
  font-family: inherit;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
}
body.admin-view .adseg-i:hover{
  border-color: var(--color-border-strong);
  color: var(--color-text-1);
}
body.admin-view .adseg-i.on,
body.admin-view .adseg-i.on:hover{
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-on-primary);
  box-shadow: var(--shadow-1);
}
body.admin-view .adseg-i .adseg-ic{
  font-size: var(--fs-h3);
  line-height: 1;
  font-style: normal;
  flex: 0 0 auto;
}
body.admin-view .adseg-i .adseg-t{
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* 4 格（积分中心）与手机 3 格分两行 */
body.admin-view .adseg.adseg-4{ grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* ---------- F3 · 测评面板工具行：按钮/下拉/输入同一 32px 基线 ---------- */
body.admin-view #apExam .adbar{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
}
body.admin-view #apExam .adbar > *{
  flex: 0 1 auto;
  min-width: 0;
}
body.admin-view #apExam .btn{
  height: 32px;
  min-height: 32px;
  padding: 0 var(--space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-1);
  border-radius: var(--radius-md);
  font-size: var(--fs-body);
  line-height: 1;
  box-sizing: border-box;
}
body.admin-view #apExam select,
body.admin-view #apExam input:not([type="checkbox"]):not([type="radio"]) {
  height: 32px;
  padding: 0 var(--space-2);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-md);
  font-size: var(--fs-body);
  font-family: inherit;
  color: var(--color-text-1);
  background: var(--color-surface);
  box-sizing: border-box;
}

/* ---------- F4 · 学习看板：字号、选中态、筛选提示 ---------- */
body.admin-view #apDash .dsh-cards{
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-3);
}
body.admin-view #apDash .dsh-card .dsh-ic{ font-size: 20px; line-height: 1.2; }  /* P6：22px 不在 P4 七阶内（11/12/13/15/17/20/24），归 20px */
body.admin-view #apDash .dsh-card .dsh-n{ font-size: var(--fs-caption); }
body.admin-view #apDash .dsh-card .dsh-v{ font-size: var(--fs-h2); }
body.admin-view #apDash .dsh-card.dsh-plain{ cursor: default; }
body.admin-view #apDash .dsh-card.dsh-plain:active{ transform: none; }
body.admin-view #apDash .dsh-sec-t{ font-size: var(--fs-h3); }
body.admin-view #apDash .dsh-chip{
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0 0 var(--space-3);
  padding: var(--space-1) var(--space-3);
  background: var(--color-accent-bg);
  color: var(--color-accent);
  border: 1px solid var(--color-accent);
  border-radius: var(--radius-pill);
  font-size: var(--fs-caption);
  font-weight: var(--fw-medium);
}
body.admin-view #apDash .dsh-chip b{ cursor: pointer; font-weight: var(--fw-semibold); }

/* ---------- F5 · 侧栏收起按钮：移到侧栏头部右侧 ---------- */
body.admin-view .adSd-h{ gap: var(--space-2); }
body.admin-view .adSd-h .adSdToggle{
  margin-left: auto;
  width: 26px;
  height: 26px;
  min-width: 26px;
  border-radius: var(--radius-sm);
}
body.admin-view .adSdToggle i{ transition: transform .15s; }
body.admin-view.adSd-collapsed .adSd-h{ padding: 0 var(--space-1); justify-content: center; }
body.admin-view.adSd-collapsed .adSd-h > i{ display: none; }
body.admin-view.adSd-collapsed .adSd-h .adSdToggle{ margin-left: 0; }
body.admin-view.adSd-collapsed .adSdToggle i{ transform: rotate(180deg); }

/* ---------- 手机档：分段控件 3 格两行 + 触摸高度 40 ---------- */
@media (max-width: 640px), (max-width: 1100px) and (pointer: coarse){
  body.admin-view #ap .am.amtxt{
    height: 40px;
    min-height: 40px;
  }
  /* 模块管理：三栏栅格在手机上每格仅 ~98px，卡内按钮文字必然溢出（改前实测 74/81 > 64）
     → 手机档改单列，卡宽=内容宽，按钮文字不再挤爆 */
  body.admin-view #apMod{ grid-template-columns: 1fr; }
  body.admin-view .adseg{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
  body.admin-view .adseg.adseg-4{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.admin-view .adseg-i{ height: var(--touch-min); }
  body.admin-view #apExam .btn,
  body.admin-view #apExam select,
  body.admin-view #apExam input:not([type="checkbox"]):not([type="radio"]) {
    height: var(--touch-min);
    min-height: var(--touch-min);
  }
  body.admin-view #apDash .dsh-cards{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}


/* ============================================================================
   恒材盛达 · 学习系统后台 —— P4「整齐划一」残锁层（手写，最后由生成器并入 admin-comp-p4.css）
   ----------------------------------------------------------------------------
   本层唯一职责：压过**源文件里带 !important 或变量别名**的声明 —— 后加载的普通声明赢不了它们。
   本层是全站唯一允许出现 !important 的地方，且每一处都对应一条实测偏差：
   ----------------------------------------------------------------------------
   L1 变量别名：style.css :root 第二段(V2 视觉) 把 --text 定为 #111827 / --text-secondary #6b7280 /
      --text-light #9ca3af，被 body{color:var(--text)} 继承到整个后台（实测：非 token 文字色 201 处）
   L2 字号继承：layui.css body{font-size:14px} 被面板内元素继承（实测 161 处 14px，不在 7 阶内）
   L3 底部操作栏 .br：style.css `#ap .br{ margin:14px -12px -12px!important; padding:12px 16px!important }`
      使底栏左右各外溢 12px（实测 268..1412，内容区是 280..1400）
   L4 展示排序行：层级缩进 34/72px 是刻意保留的「子模块树形」，但 width:100% 会让行尾溢出右边界 34px
      （实测 314..1434）；改为 width:auto 后既保住缩进又不越界
   L5 小图标按钮：非表格行的 .am（展示排序等）仍是 31×26，与表格行 32×32 不齐（实测两者混用）
   L6 按钮圆角：style.css V2 段 `.btn{ border-radius:12px!important }` 压过 a2 的 --radius-md(8px)
      （实测 10 个按钮 12px，越出圆角阶梯）；`.drBar-x` 高 28px，与其它按钮 32px 不齐
   ============================================================================ */

/* L1 · 旧变量别名 → admin.css token（一改全站继承链，含 .st/.sec-t/.at 等用 var() 的规则） */
body.admin-view{
  --text: var(--color-text-1);
  --text-secondary: var(--color-text-2);
  --text-light: var(--color-text-3);
}

/* L2 · 断开 layui 14px 继承：面板根统一 13px（7 阶里的正文档） */
body.admin-view #ap{
  font-size: var(--fs-body);
}

/* L3 · 底部操作栏与卡面同边界（源声明带 !important，只能同级压） */
body.admin-view #ap .br{
  margin: 14px 0 -12px !important;
  padding: 12px 16px !important;
  border-radius: var(--radius-lg) !important;   /* 源也是 12px!important，必须同级压 */
}

/* L4 · 缩进行不再越出右边界 */
body.admin-view #ap > div .fg.ad-ord-row-34,
body.admin-view #ap > div .fg.ad-ord-row-72{
  width: auto;
  margin-right: 0;
  box-sizing: border-box;
}

/* L5 · 全部小图标按钮统一 32×32（不仅表格内）
   ⚠️ P5 修正：只作用于「纯图标」按钮 —— 含文字的 .am（.amtxt）曾被一起压成 32px，
      文字溢出容器（BOSS 2026-10-11 报「上架/编辑内容 文字超出容器」）。 */
body.admin-view #ap .am:not(.amtxt){
  width: 32px;
  min-width: 32px;
  min-height: 32px;
  padding: 0;
  box-sizing: border-box;
  justify-content: center;
}

/* L6 · 按钮圆角回落 --radius-md(8px) + 底栏动作按钮与其它按钮同高 32px */
body.admin-view #ap .btn{
  border-radius: var(--radius-md) !important;
  padding: 0 var(--space-3);
}
body.admin-view .drBar-x{
  height: 32px;
  min-height: 32px;
}

/* L7 · 学员与权限表：权限列长文本不再撑宽整表
   （原表宽 1231 > 内容框 1120，导致最右「操作」列有 110px 被挡在滚动区外） */
body.admin-view #ap .utab{
  width: 100%;
}
body.admin-view #ap .utab th:nth-child(7),
body.admin-view #ap .utab td:nth-child(7){
  max-width: 280px;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* L8 · 手机端（≤640px）触摸目标统一 40px（原先只有课程内容页的工具按钮是 40，
   其余全是 32，同屏两种；统一到 40 = 触摸标准，也与 a2 的 --touch-min 一致） */
@media (max-width: 640px){
  body.admin-view #ap .am:not(.amtxt),
  body.admin-view #ap .utab .am:not(.amtxt),
  body.admin-view #ap .acn-6 .am:not(.amtxt){
    width: 40px !important;
    height: 40px !important;
    min-width: 40px !important;
    min-height: 40px !important;
  }
  body.admin-view #ap .btn,
  body.admin-view #ap .drBar-x{
    height: 40px !important;
    min-height: 40px !important;
  }
}

/* ============================================================================
   P6 · 手机档（≤767px）滚动修复（BOSS 2026-10-11 报「后台任何模块页面都无法下滑」）
   M1 改回文档滚动：微信 X5 内核对「html,body{overflow:hidden} + position:fixed 滚动容器」
      的触摸滚动支持不可靠（学员端 .page 是 absolute 容器，后台 #ap 是 fixed 容器，
      后者在部分安卓 WebView 上滑不动）→ 手机档回到原生文档滚动，最稳。
   M2 让出底部五格：底部五格高 56px + 安全区；固定容器 bottom:0 会把这一截内容永久压住，
      连 sticky 的「保存/新增课程节」动作条也一起压住 → 手机档给内容区留出这段高度。
   ============================================================================ */
/* P6b：条件放宽 —— 窄屏 或「触屏设备且宽度≤1100」（覆盖宽屏手机/平板；桌面鼠标不命中）*/
@media (max-width: 767px), (max-width: 1100px) and (pointer: coarse){
  /* M1a 关键：body 只要 overflow 非 visible 就自成滚动容器 → 用户手势（触摸/滚轮）
     全被吃掉，只剩 window.scrollTo 能滚（实测 wheel=0/touch=0；改成 visible 后
     wheel=500/touch=180）。横向裁切因此挪到 html 上（html 本身就是视口滚动元素，安全）。 */
  html.ad-docscroll{ height:auto; overflow-x:hidden; overflow-y:auto; }
  html.ad-docscroll body, html.ad-docscroll body.admin-view{ height:auto; min-height:0; overflow:visible; }
  body.admin-view #ap{
    position:static !important;
    top:auto !important; bottom:auto !important; left:auto !important; right:auto !important;
    height:auto !important; min-height:0 !important; overflow:visible !important;
    padding: calc(var(--topbar-h) + var(--space-4)) var(--space-4)
             calc(56px + env(safe-area-inset-bottom) + var(--space-4)) !important;
  }
  body.admin-view #ap .br{
    bottom: calc(56px + env(safe-area-inset-bottom)) !important;
    margin-bottom: 0 !important;
  }
}

/* ===========================================================================
   P6c · 手机档：学员与权限「用户表」9 列 → 一卡一人
   背景：9 列横表在窄屏必然挤爆（实测 #uList 只能横滚、列宽不均、按钮文字挤）。
   做法：纯 CSS 改造（不动 JS 结构）——表头行隐藏、每行成卡片、单元格改「左标签 + 右值」、
        操作列独占一行右对齐；标签用 ::before + nth-child 注入（列序固定：ID/用户名/姓名/
        手机号/角色/状态/权限/绑定/操作），第 2 行是「操作说明」提示行单独放行。
   !important 仅用于压过 JS 写在单元格上的行内样式（max-width / text-align / white-space）。
   桌面档（>900px 且非粗指针）完全不命中，仍是原表格。
   =========================================================================== */
@media (max-width: 900px), (max-width: 1100px) and (pointer: coarse){
  body.admin-view #uList > div{ overflow-x:visible !important; }
  body.admin-view #uList table.utab,
  body.admin-view #uList table.utab tbody{ display:block; width:100%; }
  body.admin-view #uList table.utab tr{
    display:block; margin:0 0 10px; padding:2px 0;
    background:var(--color-surface); border:1px solid var(--color-border);
    border-radius:10px; box-shadow:var(--shadow-1);
  }
  body.admin-view #uList table.utab tr:nth-child(1){ display:none; }            /* 表头行 */
  body.admin-view #uList table.utab tr:nth-child(2){                            /* 操作说明提示行 */
    margin:0 0 10px; padding:0; background:transparent; border:none; box-shadow:none;
  }
  body.admin-view #uList table.utab th{ display:none; }
  body.admin-view #uList table.utab td{
    display:flex; align-items:flex-start; justify-content:space-between; gap:10px;
    padding:7px 12px; border:none; text-align:right;
    white-space:normal !important; max-width:none !important;
    font-size:var(--fs-body); line-height:1.5;
  }
  body.admin-view #uList table.utab td::before{
    flex:0 0 auto; color:var(--color-text-3); font-size:var(--fs-caption); line-height:1.6;
  }
  body.admin-view #uList table.utab tr:nth-child(n+3) td:nth-child(1)::before{ content:'ID'; }
  body.admin-view #uList table.utab tr:nth-child(n+3) td:nth-child(2)::before{ content:'用户名'; }
  body.admin-view #uList table.utab tr:nth-child(n+3) td:nth-child(3)::before{ content:'姓名'; }
  body.admin-view #uList table.utab tr:nth-child(n+3) td:nth-child(4)::before{ content:'手机号'; }
  body.admin-view #uList table.utab tr:nth-child(n+3) td:nth-child(5)::before{ content:'角色'; }
  body.admin-view #uList table.utab tr:nth-child(n+3) td:nth-child(6)::before{ content:'状态'; }
  body.admin-view #uList table.utab tr:nth-child(n+3) td:nth-child(7)::before{ content:'权限'; }
  body.admin-view #uList table.utab tr:nth-child(n+3) td:nth-child(8)::before{ content:'绑定'; }
  body.admin-view #uList table.utab tr:nth-child(n+3) td:nth-child(9){          /* 操作列 */
    justify-content:flex-end; flex-wrap:wrap; gap:6px;
    padding-top:9px; border-top:1px dashed var(--color-border);
  }
  body.admin-view #uList table.utab tr:nth-child(n+3) td:nth-child(9)::before{ display:none; }
  body.admin-view #uList table.utab tr:nth-child(2) td{
    display:block; text-align:left; padding:8px 10px; border-radius:8px;
    background:#fafbfc; color:var(--color-text-3); font-size:var(--fs-mini);
    white-space:normal !important; max-width:none !important;
  }
  body.admin-view #uList table.utab tr:nth-child(2) td::before{ display:none; }
}

/* ===========================================================================
   P6c · 手机档：动作按钮行允许换行（防页面横向溢出）
   实测：#ap 里 A2 归一化出来的动作行（class 含 ac-display-flex-gap-…）默认 flex-wrap:nowrap，
        商户管理「开通新商户/套餐管理/收款流水/扩容申请」四按钮一行 417px，把 body.scrollWidth
        撑到 463px（视口 390）→ 页面横向溢出、末个按钮被裁。手机档放开换行即归位。
   =========================================================================== */
@media (max-width: 900px), (max-width: 1100px) and (pointer: coarse){
  body.admin-view #ap [class*="ac-display-flex-gap-"]{ flex-wrap:wrap; }
  body.admin-view #ap [class*="ac-display-flex-gap-"] > .btn{ flex:0 1 auto; min-width:0; }
}


/* ============================================================================
   以下为「值归一」自动生成段：只列出确有改动的规则。
   ============================================================================ */

/* ---- 来源：admin.css（4 条值归一） ---- */
body.admin-view /* --------------------------------------------------------------------------- 2 · 壳层：body / 内容区 --------------------------------------------------------------------------- */ body.admin-view{ background-image:linear-gradient(165deg,#f8fafc 0%,#eef2f7 55%,#e9eef5 100%); background-color:#f5f7fa; font-family:var(--font-sans); }
body.admin-view #ab > span:first-child{ color:var(--color-on-primary); font-size:13px; font-weight:var(--fw-semibold); margin-right:var(--space-4); white-space:nowrap; }
body.admin-view #ap .br{ position:sticky; bottom:0; left:0; right:0; transform:none; width:auto; max-width:none; margin:14px -12px -12px; padding:12px var(--space-4); border-radius:10px; z-index:5; box-shadow:0 -4px 16px rgba(79,70,229,.08); }
body.admin-view /* --------------------------------------------------------------------------- 5 · 桌面端（≥900px）：双列表单、内容区宽度 --------------------------------------------------------------------------- */ @media (min-width: 900px){ body.admin-view .page{ max-width:1100px; margin:0 auto; }
  body.admin-view .fg{
    background:var(--color-surface); border:1px solid var(--color-border); border-radius:10px; padding:14px; margin-bottom:var(--space-2); box-shadow:var(--shadow-1); width:calc(50% - 8px); display:inline-block; vertical-align:top; margin-right:var(--space-2); box-sizing:border-box; }
  body.admin-view .fg:nth-child(2n){ margin-right:0; }
  body.admin-view .st{
    width:100%; font-size:var(--fs-h2); color:#1f2d3d; letter-spacing:.3px; border-bottom:2px solid #eef1fb; padding-bottom:var(--space-2); margin-bottom:14px; }
  body.admin-view .btn{
    transition:transform .12s ease, box-shadow .12s ease, opacity .12s ease; }
  body.admin-view .btn:hover{
    transform:translateY(-1px); box-shadow:0 6px 16px rgba(79,70,229,.16); }
  body.admin-view #abel{ padding:6px var(--space-2); }
  body.admin-view #abel .abt{ padding:7px 14px; font-size:var(--fs-body); }; }

/* ---- 来源：admin-shell.css（2 条值归一） ---- */
body.admin-view .adSd-h{ height:var(--topbar-h); flex:0 0 auto; box-sizing:border-box; display:flex; align-items:center; gap:var(--space-2); padding:0 var(--space-4); background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-light) 100%); color:var(--color-on-primary); font-size:13px; font-weight:var(--fw-semibold); white-space:nowrap; overflow:hidden; }
body.admin-view .adAct.primary:hover{ background:#3949ab; }

/* ---- 来源：admin-comp.css（220 条值归一） ---- */
body.admin-view .ac-sub{ font-size:12px; color:#5a6b7c; }
body.admin-view .ac-inp-b{ width:100%; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; margin-top:3px; box-sizing:border-box; }
body.admin-view .ac-x{ font-size:20px; color:#8a97a8; cursor:pointer; }
body.admin-view .ac-inp{ width:100%; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; margin-top:3px; }
body.admin-view .ac-h2{ font-size:15px; color:#1f2d3d; }
body.admin-view .ac-width-100-padding-8px-border-1px-solid{ width:100%; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; margin:3px 0 8px; box-sizing:border-box; }
body.admin-view .ac-tx13{ font-size:13px; color:#1f2d3d; }
body.admin-view .ac-color{ color:#c74a63; }
body.admin-view .ac-err{ color:#c74a63; font-size:12px; }
body.admin-view .ac-empty{ background:#fff; border-radius:10px; text-align:center; color:#8a97a8; padding:30px; }
body.admin-view .ac-font-size-11px-color{ font-size:11px; color:#8a97a8; }
body.admin-view .ac-width-100-border-none-background-color{ width:100%; border:none; background:#2f9e6a; color:#fff; padding:11px; border-radius:8px; font-size:13px; }
body.admin-view .ac-color-81bf2{ color:#3949ab; }
body.admin-view .ac-flex-1-border-1px-solid-border-radius-{ flex:1; border:1px solid #cfd8e3; border-radius:8px; padding:8px; background:#eef1fb; color:#3949ab; font-size:13px; }
body.admin-view .ac-padding-4px-10px-border-1px-solid-bord{ padding:4px 10px; border:1px solid #cfd8e3; border-radius:6px; background:#fff; cursor:pointer; font-size:11px; }
body.admin-view .ac-tx{ font-size:13px; color:#1f2d3d; }
body.admin-view .ac-font-size-20px-cursor-pointer-color{ font-size:20px; cursor:pointer; color:#8a97a8; }
body.admin-view .ac-font-size-12px-color{ font-size:12px; color:#8a97a8; }
body.admin-view .ac-font-size-14px{ font-size:13px; }
body.admin-view .ac-font-size-12px-color-padding-8px-2px-l{ font-size:12px; color:#5a6b7c; padding:8px 2px; line-height:1.6; }
body.admin-view .ac-background-border-radius-14p-04cbe{ background:#fff; border-radius:10px; width:100%; max-width:430px; padding:16px; }
body.admin-view .ac-background-border-radius-14p-f91c7{ background:#fff; border-radius:10px; width:100%; max-width:440px; padding:16px; }
body.admin-view .ac-font-size-13px-color-display-flex-alig{ font-size:13px; color:#5a6b7c; display:flex; align-items:center; gap:4px; }
body.admin-view .ac-background-border-radius-14px-width-10{ background:#fff; border-radius:10px; width:100%; max-width:420px; padding:16px; }
body.admin-view .ac-color-d4ac9{ color:#2f9e6a; }
body.admin-view .ac-font-size-12px-color-margin-bottom-10p{ font-size:12px; color:#5a6b7c; margin-bottom:10px; }
body.admin-view .ac-flex-1-font-size-13px-color{ flex:1; font-size:13px; color:#1f2d3d; }
body.admin-view .ac-cursor-pointer-color{ cursor:pointer; color:#5a6b7c; }
body.admin-view .ac-font-size-11px-color-margin-top-2px{ font-size:11px; color:#8a97a8; margin-top:2px; }
body.admin-view .ac-width-100-box-sizing-border-box-paddin{ width:100%; box-sizing:border-box; padding:8px; border:1px solid #cfd8e3; border-radius:8px; margin:3px 0 10px; }
body.admin-view .ac-color-text-align-center-padding-14px{ color:#8a97a8; text-align:center; padding:14px; }
body.admin-view .ac-font-size-13px-color{ font-size:13px; color:#1f2d3d; }
body.admin-view .ac-mute2{ color:#8a97a8; }
body.admin-view .ac-flex-1-min-width-78px-padding-8px-bord{ flex:1; min-width:78px; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; }
body.admin-view .ac-btn-pri{ border:none; background:#3949ab; color:#fff; padding:9px 12px; border-radius:8px; }
body.admin-view .ac-font-size-11px-color-margin-top-3px{ font-size:11px; color:#8a97a8; margin-top:3px; }
body.admin-view .ac-background-border-radius-14p-cfd75{ background:#fff; border-radius:10px; width:100%; max-width:400px; padding:16px; }
body.admin-view .ac-flex-1-padding-8px-border-1px-solid-bo{ flex:1; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; }
body.admin-view .ac-width-100-border-none-backgr-edb76{ width:100%; border:none; background:#3949ab; color:#fff; padding:11px; border-radius:8px; font-size:13px; }
body.admin-view .ac-color-font-size-13px{ color:#c74a63; font-size:13px; }
body.admin-view .ac-width-100-padding-9px-border-1px-solid{ width:100%; padding:9px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; margin:3px 0 8px; }
body.admin-view .ac-font-size-12px-color-margin-top-6px{ font-size:12px; color:#5a6b7c; margin-top:6px; }
body.admin-view .ac-max-width-80px-max-height-40px-border-{ max-width:80px; max-height:40px; border-radius:6px; border:1px solid #e6ebf2; background:#fff; }
body.admin-view .ac-background-border-radius-12px-padding-{ background:#fff; border-radius:10px; padding:12px; margin-bottom:10px; }
body.admin-view .ac-background-color{ background:#eee; color:#8a97a8; }
body.admin-view .ac-text-align-center-padding-30px-color-f{ text-align:center; padding:30px; color:#8a97a8; font-size:13px; }
body.admin-view .ac-font-size-12px-color-width-20px{ font-size:12px; color:#5a6b7c; width:20px; }
body.admin-view .ac-flex-1-font-size-12px-color-overflow-h{ flex:1; font-size:12px; color:#5a6b7c; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
body.admin-view .ac-color-padding-30px-text-align-center{ color:#8a97a8; padding:30px; text-align:center; }
body.admin-view .ac-background-border-1px-solid--c24f4{ background:#fff; border:1px solid #e6ebf2; border-radius:10px; padding:14px; margin-bottom:10px; }
body.admin-view .ac-font-size-11px-color-background-border{ font-size:11px; color:#3949ab; background:#eef1fb; border-radius:6px; padding:1px 6px; margin-left:4px; }
body.admin-view .ac-font-size-11px-color-margin-left-6px{ font-size:11px; color:#8a97a8; margin-left:6px; }
body.admin-view .ac-font-size-12px-color-margin-top-8px{ font-size:12px; color:#5a6b7c; margin-top:8px; }
body.admin-view .ac-background-border-radius-16px-width-10{ background:#fff; border-radius:10px; width:100%; max-width:400px; max-height:92vh; overflow:auto; padding:18px; }
body.admin-view .ac-width-100-box-sizing-border--6a9f5{ width:100%; box-sizing:border-box; padding:8px; border:1px solid #cfd8e3; border-radius:8px; margin-top:3px; }
body.admin-view .ac-width-100-padding-8px-border-21d06{ width:100%; padding:8px; border:1px solid #cfd8e3; border-radius:8px; margin-top:3px; }
body.admin-view .ac-font-size-12px-color-text-align-center{ font-size:12px; color:#8a97a8; text-align:center; padding:14px; border:1px dashed #e6ebf2; border-radius:8px; }
body.admin-view .ac-display-flex-align-items-cen-8c6da{ display:flex; align-items:center; gap:6px; background:#f5f7fa; border:1px solid #e6ebf2; border-radius:8px; padding:7px 9px; margin-bottom:6px; }
body.admin-view .ac-cursor-pointer-color-f8bde{ cursor:pointer; color:#c74a63; }
body.admin-view .ac-background-border-radius-16p-671fb{ background:#fff; border-radius:10px; width:100%; max-width:420px; max-height:90vh; overflow:auto; padding:16px; }
body.admin-view .ac-font-size-11px-color-margin-bottom-4px{ font-size:11px; color:#8a97a8; margin-bottom:4px; }
body.admin-view .ac-font-size-12px-font-weight-700-color-m{ font-size:12px; font-weight:700; color:#3949ab; margin:10px 0 4px; }
body.admin-view .ac-font-size-13px-color-padding-6px-4px-b{ font-size:13px; color:#8a97a8; padding:6px 4px; border-bottom:1px solid #f5f7fa; }
body.admin-view .ac-font-size-10px-color{ font-size:11px; color:#2f9e6a; }
body.admin-view .ac-display-flex-align-items-cen-992e5{ display:flex; align-items:center; gap:6px; padding:6px 4px; border-bottom:1px solid #f5f7fa; }
body.admin-view .ac-font-size-11px-padding-3px-border-1px-{ font-size:11px; padding:3px; border:1px solid #cfd8e3; border-radius:6px; background:#fff; }
body.admin-view .ac-color-padding-20px-text-align-center{ color:#8a97a8; padding:20px; text-align:center; }
body.admin-view .ac-background-border-1px-solid--9fd55{ background:#fff; border:1px solid #e6ebf2; border-radius:10px; padding:12px; margin-bottom:8px; display:flex; align-items:center; gap:10px; }
body.admin-view .ac-width-40px-height-40px-border-radius-1{ width:40px; height:40px; border-radius:10px; background:#fdf3e6; display:flex; align-items:center; justify-content:center; font-size:20px; }
body.admin-view .ac-font-size-14px-font-weight-700-color{ font-size:13px; font-weight:700; color:#1f2d3d; }
body.admin-view .ac-modal{ background:#fff; border-radius:10px; width:100%; max-width:340px; padding:18px; }
body.admin-view .ac-width-100-box-sizing-border--0619f{ width:100%; box-sizing:border-box; padding:8px; border:1px solid #cfd8e3; border-radius:8px; margin:3px 0 12px; }
body.admin-view .ac-mute{ color:#8a97a8; }
body.admin-view .ac-background-border-1px-solid--0d3f2{ background:#fff; border:1px solid #e6ebf2; border-radius:10px; padding:10px; margin-bottom:6px; }
body.admin-view .ac-font-size-12px-color-margin-4px-0{ font-size:12px; color:#5a6b7c; margin:4px 0; }
body.admin-view .ac-color-padding-20px{ color:#c74a63; padding:20px; }
body.admin-view .ac-width-100-padding-8px-border-23443{ width:100%; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; box-sizing:border-box; }
body.admin-view .ac-display-none-position-absolute-z-index{ display:none; position:absolute; z-index:120; top:100%; left:0; right:0; background:#fff; border:1px solid #e6ebf2; border-radius:8px; max-height:200px; overflow-y:auto; margin-top:2px; box-shadow:0 6px 20px rgba(15,23,42,.12); }
body.admin-view .ac-flex-1-4-min-width-90px-padding-8px-bo{ flex:1.4; min-width:90px; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; }
body.admin-view .ac-border-none-background-color-padding-9{ border:none; background:#2f9e6a; color:#fff; padding:9px 12px; border-radius:8px; }
body.admin-view .ac-border-1px-solid-border-radi-416ab{ border:1px solid #3949ab; border-radius:8px; padding:8px 12px; background:#eef1fb; color:#3949ab; }
body.admin-view .ac-border-1px-solid-border-radi-7e14d{ border:1px solid #d08a2f; border-radius:8px; padding:8px 12px; background:#fdf3e6; color:#d08a2f; }
body.admin-view .ac-border-1px-solid-border-radi-8a86f{ border:1px solid #3949ab; border-radius:8px; padding:8px 12px; background:#eef1fb; color:#3949ab; }
body.admin-view .ac-background-border-radius-12p-b1060{ background:#fff; border-radius:10px; padding:4px; }
body.admin-view .ac-text-align-center-color-padding-26px{ text-align:center; color:#8a97a8; padding:26px; }
body.admin-view .ac-display-flex-align-items-flex-start-ga{ display:flex; align-items:flex-start; gap:8px; padding:10px; border-bottom:1px solid #f5f7fa; }
body.admin-view .ac-font-size-12px-border-1px-so-f05f3{ font-size:12px; border:1px solid #cfd8e3; border-radius:6px; padding:4px 8px; background:#fff; }
body.admin-view .ac-font-size-12px-border-1px-so-2c438{ font-size:12px; border:1px solid #fbeaee; border-radius:6px; padding:4px 8px; background:#fff; }
body.admin-view .ac-border-1px-solid-border-radius-8px-pad{ border:1px solid #3949ab; border-radius:8px; padding:0 10px; background:#eef1fb; color:#3949ab; font-size:12px; flex-shrink:0; }
body.admin-view .ac-width-100-padding-8px-border-09f62{ width:100%; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; margin-top:3px; min-height:52px; box-sizing:border-box; }
body.admin-view .ac-width-100-padding-8px-border-1ad37{ width:100%; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; margin-top:3px; min-height:80px; box-sizing:border-box; }
body.admin-view .ac-flex-1-border-none-backgroun-dca07{ flex:1; border:none; background:#3949ab; color:#fff; padding:11px; border-radius:8px; font-size:13px; }
body.admin-view .ac-padding-8px-border-1px-solid-border-ra{ padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; }
body.admin-view .ac-border-none-background-color-padding-8{ border:none; background:#2f9e6a; color:#fff; padding:8px 14px; border-radius:8px; }
body.admin-view .ac-color-text-align-center-padding-16px{ color:#8a97a8; text-align:center; padding:16px; }
body.admin-view .ac-display-flex-justify-content-087da{ display:flex; justify-content:space-between; align-items:center; padding:8px 0; border-bottom:1px solid #f5f7fa; }
body.admin-view .ac-font-size-11px-border-1px-solid-border{ font-size:11px; border:1px solid #fbeaee; border-radius:6px; padding:3px 8px; background:#fff; color:#c74a63; }
body.admin-view .ac-width-100-padding-8px-border-99fcb{ width:100%; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:12px; }
body.admin-view .ac-display-flex-align-items-cen-a5664{ display:flex; align-items:center; gap:6px; font-size:12px; color:#5a6b7c; margin-bottom:10px; background:#f5f7fa; border:1px solid #e6ebf2; border-radius:8px; padding:9px; }
body.admin-view .ac-flex-1-border-1px-solid-bord-a840e{ flex:1; border:1px solid #3949ab; border-radius:8px; padding:8px; background:#eef1fb; color:#3949ab; font-size:12px; }
body.admin-view .ac-flex-1-border-1px-solid-bord-925d4{ flex:1; border:1px solid #2f9e6a; border-radius:8px; padding:8px; background:#e8f5ef; color:#2f9e6a; font-size:12px; }
body.admin-view .ac-font-size-11px-color-margin-bottom-6px{ font-size:11px; color:#8a97a8; margin-bottom:6px; line-height:1.6; }
body.admin-view .ac-width-100-padding-8px-border-ecbc3{ width:100%; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; min-height:150px; box-sizing:border-box; }
body.admin-view .ac-width-100-margin-top-10px-border-none-{ width:100%; margin-top:10px; border:none; background:#d08a2f; color:#fff; padding:11px; border-radius:8px; font-size:13px; }
body.admin-view .ac-color-font-weight-600-margin-bottom-4p{ color:#2f9e6a; font-weight:600; margin-bottom:4px; }
body.admin-view .ac-color-margin-top-4px{ color:#c74a63; margin-top:4px; }
body.admin-view .ac-width-100-padding-8px-border-fbd03{ width:100%; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; min-height:90px; box-sizing:border-box; }
body.admin-view .ac-display-flex-align-items-cen-3cf6c{ display:flex; align-items:center; gap:6px; font-size:12px; color:#5a6b7c; margin-bottom:12px; background:#f5f7fa; border:1px solid #e6ebf2; border-radius:8px; padding:9px; }
body.admin-view .ac-width-100-border-none-backgr-5f543{ width:100%; border:none; background:#3949ab; color:#fff; padding:11px; border-radius:8px; font-size:13px; }
body.admin-view .ac-font-size-13px-color-font-weight-600-m{ font-size:13px; color:#2f9e6a; font-weight:600; margin-bottom:6px; }
body.admin-view .ac-font-size-12px-color-padding-6px-0-bor{ font-size:12px; color:#1f2d3d; padding:6px 0; border-bottom:1px solid #f5f7fa; }
body.admin-view .ac-color-31549{ color:#3949ab; }
body.admin-view .ac-margin-top-10px-width-100-border-none-{ margin-top:10px; width:100%; border:none; background:#2f9e6a; color:#fff; padding:11px; border-radius:8px; font-size:13px; }
body.admin-view .ac-color-font-weight-600{ color:#2f9e6a; font-weight:600; }
body.admin-view .ac-border-none-background-color-6da5d{ border:none; background:#2f9e6a; color:#fff; padding:9px 14px; border-radius:8px; }
body.admin-view .ac-card{ background:#fff; border-radius:10px; padding:12px; margin-bottom:8px; }
body.admin-view .ac-font-size-12px-color-margin-top-4px{ font-size:12px; color:#5a6b7c; margin-top:4px; }
body.admin-view .ac-font-size-12px-border-1px-so-0c833{ font-size:12px; border:1px solid #cfd8e3; border-radius:6px; padding:5px 10px; background:#fff; }
body.admin-view .ac-font-size-12px-border-1px-solid-border{ font-size:12px; border:1px solid #3949ab; border-radius:6px; padding:5px 10px; background:#eef1fb; color:#3949ab; }
body.admin-view .ac-font-size-12px-border-1px-so-cb6ee{ font-size:12px; border:1px solid #fbeaee; border-radius:6px; padding:5px 10px; background:#fff; color:#c74a63; }
body.admin-view .ac-display-flex-align-items-cen-dfb39{ display:flex; align-items:center; gap:6px; font-size:13px; color:#5a6b7c; background:#f5f7fa; border:1px solid #e6ebf2; border-radius:8px; padding:9px; }
body.admin-view .ac-font-size-13px-color-background-border{ font-size:13px; color:#3949ab; background:#eef1fb; border-radius:8px; padding:8px; margin-bottom:8px; }
body.admin-view .ac-font-size-13px-color-display-48b3a{ font-size:13px; color:#5a6b7c; display:flex; align-items:center; gap:5px; }
body.admin-view .ac-border-none-background-color-3b459{ border:none; background:#3949ab; color:#fff; padding:9px 14px; border-radius:8px; }
body.admin-view .ac-flex-1-min-width-120px-padding-8px-bor{ flex:1; min-width:120px; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; }
body.admin-view .ac-padding-10px-border-1px-solid-border-r{ padding:10px; border:1px solid #e6ebf2; border-radius:8px; margin-bottom:6px; display:flex; justify-content:space-between; align-items:center; }
body.admin-view .ac-border-none-background-color-padding-6{ border:none; background:#3949ab; color:#fff; padding:6px 12px; border-radius:8px; font-size:12px; }
body.admin-view .ac-background-border-radius-14p-ff63c{ background:#fff; border-radius:10px; width:100%; max-width:410px; padding:16px; }
body.admin-view .ac-background-border-radius-12px-text-ali{ background:#fff; border-radius:10px; text-align:center; color:#8a97a8; padding:26px; }
body.admin-view .ac-color-font-size-11px{ color:#8a97a8; font-size:11px; }
body.admin-view .ac-font-size-12px-border-1px-so-1868a{ font-size:12px; border:1px solid #fbeaee; border-radius:6px; padding:4px 8px; background:#fff; color:#c74a63; }
body.admin-view .ac-border-1px-solid-border-radi-b6891{ border:1px solid #cfd8e3; border-radius:8px; padding:8px 12px; background:#fff; color:#5a6b7c; }
body.admin-view .ac-background-border-radius-12p-67ac2{ background:#fff; border-radius:10px; padding:10px; margin-bottom:8px; }
body.admin-view .ac-font-size-13px-color-font-weight-600{ font-size:13px; color:#1f2d3d; font-weight:600; }
body.admin-view .ac-flex-1-border-none-backgroun-85d0c{ flex:1; border:none; background:#3949ab; color:#fff; padding:9px; border-radius:8px; font-size:13px; }
body.admin-view .ac-flex-1-border-1px-solid-bord-b8bea{ flex:1; border:1px solid #fbeaee; border-radius:8px; padding:9px; background:#fff; color:#c74a63; font-size:13px; }
body.admin-view .ac-background-border-radius-14p-5d41e{ background:#fff; border-radius:10px; width:100%; max-width:520px; padding:16px; }
body.admin-view .ac-text-align-center-color-padding-24px{ text-align:center; color:#8a97a8; padding:24px; }
body.admin-view .ac-background-border-1px-solid--4322a{ background:#f5f7fa; border:1px solid #e6ebf2; border-radius:10px; padding:10px; margin-bottom:8px; }
body.admin-view .ac-font-size-12px-color-margin-top-5px{ font-size:12px; color:#5a6b7c; margin-top:5px; }
body.admin-view .ac-color-71ff8{ color:#3949ab; }
body.admin-view .ac-flex-1-border-none-background-color-pa{ flex:1; border:none; background:#2f9e6a; color:#fff; padding:8px; border-radius:8px; font-size:13px; }
body.admin-view .ac-flex-1-border-1px-solid-bord-27046{ flex:1; border:1px solid #fbeaee; border-radius:8px; padding:8px; background:#fff; color:#c74a63; font-size:13px; }
body.admin-view .ac-flex-1-border-none-backgroun-0c8ef{ flex:1; border:none; background:#3949ab; color:#fff; padding:11px; border-radius:8px; }
body.admin-view .ac-btn-sec{ flex:1; border:1px solid #cfd8e3; border-radius:8px; padding:11px; background:#fff; color:#5a6b7c; }
body.admin-view .ac-flex-1-border-1px-solid-bord-e9e91{ flex:1; border:1px solid #cfd8e3; border-radius:8px; padding:11px; background:#fff; color:#2f9e6a; }
body.admin-view .ac-flex-1-border-1px-solid-bord-8ac9b{ flex:1; border:1px solid #cfd8e3; border-radius:8px; padding:11px; background:#fff; color:#3949ab; }
body.admin-view .ac-width-100-padding-9px-border-42b1a{ width:100%; padding:9px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; margin:3px 0 10px; }
body.admin-view .ac-color-font-size-13px-24f6e{ color:#8a97a8; font-size:13px; }
body.admin-view .ac-background-border-1px-solid-border-rad{ background:#f5f7fa; border:1px solid #e6ebf2; border-radius:10px; padding:10px; font-size:13px; color:#1f2d3d; }
body.admin-view .ac-color-font-size-12px{ color:#8a97a8; font-size:12px; }
body.admin-view .ac-width-220px-height-220px-border-1px-so{ width:220px; height:220px; border:1px solid #e6ebf2; border-radius:10px; background:#fff; }
body.admin-view .ac-font-size-11px-color-word-break-break-{ font-size:11px; color:#8a97a8; word-break:break-all; margin-top:6px; }
body.admin-view .ac-width-100-border-none-backgr-f9685{ width:100%; border:none; background:#3949ab; color:#fff; padding:10px; border-radius:8px; font-size:13px; margin-top:10px; }
body.admin-view .ac-color-font-size-13px-margin-top-8px{ color:#2f9e6a; font-size:13px; margin-top:8px; }
body.admin-view .ac-color-font-size-13px-margin--2437d{ color:#c74a63; font-size:13px; margin-top:8px; }
body.admin-view .ac-background-border-1px-solid--8d73c{ background:#f5f7fa; border:1px solid #e6ebf2; border-radius:8px; padding:8px 10px; font-size:12px; color:#5a6b7c; margin-bottom:10px; }
body.admin-view .ac-display-flex-gap-6px-margin-6px-0-10px{ display:flex; gap:6px; margin:6px 0 10px; background:#f5f7fa; border-radius:8px; padding:4px; }
body.admin-view .ac-flex-1-text-align-center-padding-7px-b{ flex:1; text-align:center; padding:7px; border-radius:8px; font-size:13px; cursor:pointer; background:#3949ab; color:#fff; }
body.admin-view .ac-flex-1-text-align-center-pad-e21fe{ flex:1; text-align:center; padding:7px; border-radius:8px; font-size:13px; cursor:pointer; background:transparent; color:#5a6b7c; }
body.admin-view .ac-font-size-12px-color-margin-8px-0-4px-{ font-size:12px; color:#5a6b7c; margin:8px 0 4px; background:#eef1fb; border-radius:8px; padding:8px; }
body.admin-view .ac-width-100-border-none-backgr-5af0b{ width:100%; border:none; background:#d08a2f; color:#fff; padding:11px; border-radius:8px; font-size:13px; }
body.admin-view .ac-padding-8px-color-font-size-12px{ padding:8px; color:#8a97a8; font-size:12px; }
body.admin-view .ac-padding-8px-font-size-13px-cursor-poin{ padding:8px; font-size:13px; cursor:pointer; border-bottom:1px solid #f5f7fa; }
body.admin-view .ac-background-border-1px-solid--310a5{ background:#fff7ed; border:1px solid #fdf3e6; border-radius:10px; padding:10px 12px; margin-bottom:10px; font-size:12px; }
body.admin-view .ac-color-margin-3px-0-8924e{ color:#c74a63; margin:3px 0; }
body.admin-view .ac-color-margin-3px-0-a6fcd{ color:#d08a2f; margin:3px 0; }
body.admin-view .ac-color-margin-3px-0{ color:#d08a2f; margin:3px 0; }
body.admin-view .ac-font-size-12px-color-margin-top-6px-li{ font-size:12px; color:#5a6b7c; margin-top:6px; line-height:1.7; }
body.admin-view .ac-flex-1-min-width-70px-border-df12d{ flex:1; min-width:70px; border:1px solid #cfd8e3; border-radius:8px; padding:8px; background:#fff; color:#3949ab; }
body.admin-view .ac-flex-1-min-width-70px-border-807e6{ flex:1; min-width:70px; border:1px solid #cfd8e3; border-radius:8px; padding:8px; background:#fff; color:#2f9e6a; }
body.admin-view .ac-flex-1-min-width-70px-border-a92e7{ flex:1; min-width:70px; border:1px solid #cfd8e3; border-radius:8px; padding:8px; background:#fff; color:#d08a2f; }
body.admin-view .ac-flex-1-min-width-70px-border-c4f64{ flex:1; min-width:70px; border:1px solid #cfd8e3; border-radius:8px; padding:8px; background:#fff; color:#5a6b7c; }
body.admin-view .ac-flex-1-min-width-70px-border-0500b{ flex:1; min-width:70px; border:1px solid #fbeaee; border-radius:8px; padding:8px; background:#fff; color:#c74a63; }
body.admin-view .ac-flex-1-min-width-70px-border-1px-solid{ flex:1; min-width:70px; border:1px solid #e8f5ef; border-radius:8px; padding:8px; background:#fff; color:#2f9e6a; }
body.admin-view .ac-flex-1-min-width-70px-border-ed2ba{ flex:1; min-width:70px; border:1px solid #fbeaee; border-radius:8px; padding:8px; background:#fff; color:#c74a63; }
body.admin-view .ac-color-font-weight-600-5cbd2{ color:#c74a63; font-weight:600; }
body.admin-view .ac-color-font-weight-600-4b3bd{ color:#d08a2f; font-weight:600; }
body.admin-view .ac-max-height-150px-overflow-auto-border-{ max-height:150px; overflow:auto; border:1px solid #e6ebf2; border-radius:8px; margin-top:4px; background:#fff; display:none; }
body.admin-view .ac-background-border-1px-solid--41598{ background:#f5f7fa; border:1px solid #e6ebf2; border-radius:10px; padding:8px 10px; margin:4px 0 8px; }
body.admin-view .ac-font-size-12px-color-font-weight-600-m{ font-size:12px; color:#5a6b7c; font-weight:600; margin-bottom:6px; }
body.admin-view .ac-border-none-background-color-9acce{ border:none; background:#3949ab; color:#fff; padding:8px 12px; border-radius:8px; font-size:12px; white-space:nowrap; }
body.admin-view .ac-flex-1-padding-8px-border-1p-7843c{ flex:1; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; box-sizing:border-box; }
body.admin-view .ac-font-size-11px-color-margin-bottom-8px{ font-size:11px; color:#8a97a8; margin-bottom:8px; }
body.admin-view .ac-width-80px-padding-6px-border-1px-soli{ width:80px; padding:6px; border:1px solid #cfd8e3; border-radius:8px; font-size:12px; margin:3px 0 6px; box-sizing:border-box; }
body.admin-view .ac-width-100-padding-8px-border-55f85{ width:100%; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:13px; margin:3px 0 4px; box-sizing:border-box; }
body.admin-view .ac-font-size-12px-color-background-border{ font-size:12px; color:#5a6b7c; background:#eef1fb; border-radius:8px; padding:7px; margin-bottom:6px; }
body.admin-view .ac-border-1px-solid-border-radius-9px-pad{ border:1px solid #cfd8e3; border-radius:8px; padding:8px 12px; background:#fff; color:#5a6b7c; }
body.admin-view .ac-width-100-border-none-backgr-8c5fb{ width:100%; border:none; background:#3949ab; color:#fff; padding:11px; border-radius:8px; margin-bottom:12px; }
body.admin-view .ac-flex-1-border-1px-solid-bord-b1f6e{ flex:1; border:1px solid #cfd8e3; border-radius:8px; padding:8px; background:#fff; color:#3949ab; }
body.admin-view .ac-flex-1-border-1px-solid-bord-9d46a{ flex:1; border:1px solid #fbeaee; border-radius:8px; padding:8px; background:#fff; color:#c74a63; }
body.admin-view .ac-border-1px-solid-border-radi-486e3{ border:1px solid #cfd8e3; border-radius:8px; padding:8px 12px; margin:3px 0 8px; }
body.admin-view .ac-border-bottom-1px-solid-padding-8px-0{ border-bottom:1px solid #e6ebf2; padding:8px 0; }
body.admin-view .ac-flex-1-font-size-13px-color-font-weigh{ flex:1; font-size:13px; color:#1f2d3d; font-weight:500; }
body.admin-view .ac-font-size-11px-color-cursor-pointer-pa{ font-size:11px; color:#5a6b7c; cursor:pointer; padding:4px 6px; border:1px solid #cfd8e3; border-radius:6px; user-select:none; }
body.admin-view .ac-font-size-11px-color-padding-2px-0-6px{ font-size:11px; color:#8a97a8; padding:2px 0 6px; }
body.admin-view .ac-border-left-2px-solid-padding-2px-0-2p{ border-left:2px solid #e6ebf2; padding:2px 0 2px 10px; margin:2px 0; }
body.admin-view .ac-flex-1-font-size-12px-color-font-weigh{ flex:1; font-size:12px; color:#5a6b7c; font-weight:600; }
body.admin-view .ac-font-size-11px-color-cursor--d7b30{ font-size:11px; color:#8a97a8; cursor:pointer; padding:2px 5px; user-select:none; }
body.admin-view .ac-display-flex-align-items-cen-4ff30{ display:flex; align-items:center; gap:6px; font-size:12px; color:#5a6b7c; padding:5px 0; cursor:pointer; border-top:1px dashed #f5f7fa; }
body.admin-view .ac-color-font-size-10px{ color:#8a97a8; font-size:11px; }
body.admin-view .ac-font-size-10px-color-3dcec{ font-size:11px; color:#8a97a8; }
body.admin-view .ac-font-size-12px-color-padding-6px-backg{ font-size:12px; color:#5a6b7c; padding:6px; background:#f5f7fa; border-radius:6px; margin-top:3px; }
body.admin-view .ac-font-size-14px-margin-0-0-8px-color{ font-size:13px; margin:0 0 8px; color:#3949ab; }
body.admin-view .ac-border-2px-solid-border-bottom-none-bo{ border:2px solid #e0e0e0; border-bottom:none; border-radius:8px 8px 0 0; padding:4px; background:#f5f7fa; display:flex; gap:2px; flex-wrap:wrap; }
body.admin-view .ac-padding-4px-10px-border-1px--f1458{ padding:4px 10px; border:1px solid #cfd8e3; border-radius:6px; background:#fff; cursor:pointer; font-weight:600; }
body.admin-view .ac-padding-4px-10px-border-1px--ef9f3{ padding:4px 10px; border:1px solid #cfd8e3; border-radius:6px; background:#fff; cursor:pointer; font-style:italic; }
body.admin-view .ac-padding-4px-10px-border-1px--cc50f{ padding:4px 10px; border:1px solid #cfd8e3; border-radius:6px; background:#fff; cursor:pointer; text-decoration:underline; }
body.admin-view .ac-padding-4px-10px-border-1px--98453{ padding:4px 10px; border:1px solid #3949ab; border-radius:6px; background:#eef1fb; cursor:pointer; font-size:11px; color:#3949ab; font-weight:600; }
body.admin-view .ac-padding-4px-10px-border-1px--5e55b{ padding:4px 10px; border:1px solid #2f9e6a; border-radius:6px; background:#e8f5ef; cursor:pointer; font-size:11px; color:#2f9e6a; font-weight:600; }
body.admin-view .ac-padding-4px-10px-border-1px--02ce6{ padding:4px 10px; border:1px solid #d08a2f; border-radius:6px; background:#fdf3e6; cursor:pointer; font-size:11px; color:#d08a2f; font-weight:600; }
body.admin-view .ac-border-2px-solid-border-radius-0-0-8px{ border:2px solid #e0e0e0; border-radius:0 0 8px 8px; padding:12px; min-height:250px; font-size:13px; line-height:1.8; background:#fff; overflow-y:auto; }
body.admin-view .ac-font-size-11px-color-margin-left-4px{ font-size:11px; color:#8a97a8; margin-left:4px; }
body.admin-view .ac-display-flex-align-items-cen-1ec32{ display:flex; align-items:center; gap:6px; background:#eef1fb; border-radius:8px; padding:8px; margin:10px 0 2px; }
body.admin-view .ac-font-size-14px-font-weight-700-color-w{ font-size:13px; font-weight:700; color:#3949ab; width:24px; }
body.admin-view .ac-flex-1-font-size-13px-font-weight-600-{ flex:1; font-size:13px; font-weight:600; color:#1f2d3d; }
body.admin-view .ac-display-flex-align-items-cen-a7124{ display:flex; align-items:center; gap:6px; margin-left:34px; background:#eef1fb; border-radius:8px; padding:7px 8px; margin-top:2px; cursor:pointer; }
body.admin-view .ac-font-size-12px-font-weight-700-color-w{ font-size:12px; font-weight:700; color:#3949ab; width:22px; }
body.admin-view .ac-flex-1-font-size-13px-font-weight-700-{ flex:1; font-size:13px; font-weight:700; color:#3949ab; }
body.admin-view .ad-zebra{ background:#f5f7fa; }

/* ---- 来源：admin-comp-a2.css（1 条值归一） ---- */
body.admin-view #ap .adEm-ico{ font-size:24px; line-height:1; }

/* ---- 来源：admin-comp-acn.css（9 条值归一） ---- */
body.admin-view #ap .acn-1{ background:#f5f7fa; }
body.admin-view #ap .acn-2{ color:#2f9e6a; }
body.admin-view #ap .acn-3{ font-size:12px; color:#5a6b7c; max-width:200px; white-space:normal; line-height:1.5; }
body.admin-view #ap .acn-5{ color:#8a97a8; }
body.admin-view #ap .acn-7{ flex:1; min-width:48px; padding:9px 2px; border-radius:10px; font-size:12px; border:none; cursor:pointer; align-items:center; justify-content:center; gap:3px; white-space:nowrap; background:#fff; color:#5a6b7c; border:1px solid #e6ebf2; }
body.admin-view #ap .acn-11{ font-size:12px; color:#5a6b7c; }
body.admin-view #ap .acn-14{ padding:8px 10px; font-size:11px; color:#8a97a8; background:#f5f7fa; border-bottom:1px solid #e6ebf2; white-space:normal; line-height:1.8; }
body.admin-view #ap .acn-15{ flex:1; min-width:48px; padding:9px 2px; border-radius:10px; font-size:12px; border:none; cursor:pointer; align-items:center; justify-content:center; gap:3px; white-space:nowrap; background:#3949ab; color:#fff; }
body.admin-view #ap .acn-19{ font-size:11px; color:#fff; background:#2f9e6a; padding:3px 8px; border-radius:9999px; }

/* ---- 来源：style.css（26 条值归一） ---- */
body.admin-view .dsh-card{ background:#fff; border:1px solid #e6ebf2; border-radius:10px; padding:12px 10px; text-align:center; box-shadow:0 1px 3px rgba(0,0,0,.04); }
body.admin-view .dsh-card .dsh-n{ font-size:11px; color:#8a97a8; margin:3px 0; }
body.admin-view .dsh-card .dsh-v{ font-size:13px; font-weight:700; color:#1f2d3d; }
body.admin-view .dsh-sec{ background:#fff; border:1px solid #e6ebf2; border-radius:10px; padding:12px; margin-bottom:14px; }
body.admin-view .dsh-sec-t{ font-size:13px; font-weight:700; color:#1f2d3d; margin-bottom:8px; }
body.admin-view .dsh-rank{ display:flex; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid #f5f7fa; }
body.admin-view .dsh-pos{ width:26px; height:26px; border-radius:50%; background:#eef1fb; color:#3949ab; font-weight:700; font-size:12px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
body.admin-view .dsh-rank:nth-child(2) .dsh-pos{ background:#fdf3e6; color:#d08a2f; }
body.admin-view .dsh-rank:nth-child(3) .dsh-pos{ background:#e6ebf2; color:#5a6b7c; }
body.admin-view .dsh-un{ font-size:13px; font-weight:400; color:#1f2d3d; }
body.admin-view .dsh-sub{ font-size:11px; color:#8a97a8; margin-top:2px; }
body.admin-view .dsh-tm{ font-size:12px; font-weight:400; color:#3949ab; flex-shrink:0; }
body.admin-view .dsh-unrow{ padding:8px 4px; font-size:13px; color:#c62828; border-bottom:1px solid #f5f7fa; }
body.admin-view .dsh-sel{ flex:1; min-width:90px; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:12px; background:#fff; }
body.admin-view .dsh-kw{ flex:1.6; min-width:120px; padding:8px; border:1px solid #cfd8e3; border-radius:8px; font-size:12px; }
body.admin-view .dsh-tip{ font-size:11px; color:#8a97a8; margin:2px 0 10px; }
body.admin-view .dsh-card.act{ border:2px solid #3949ab; background:#eef1fb; }
body.admin-view .dsh-dp{ font-size:11px; color:#3949ab; background:#eef1fb; border-radius:6px; padding:1px 6px; margin-left:4px; }
body.admin-view .dsh-daterow{ display:flex; align-items:center; gap:8px; margin:6px 0 8px; padding:8px 10px; background:#f5f7fa; border:1px dashed #cbd5e1; border-radius:8px; }
body.admin-view .dsh-date{ flex:1; padding:7px; border:1px solid #cfd8e3; border-radius:8px; font-size:12px; background:#fff; }
body.admin-view .dsh-dsep{ font-size:12px; color:#5a6b7c; }
body.admin-view @media (min-width: 900px){ body.admin-view .page{ max-width:1100px !important; }
  body.admin-view #abel .abt{ padding:8px 16px; font-size:13px; }
  
  body.admin-view .fg{ width:calc(50% - 8px); display:inline-block; vertical-align:top; margin-right:8px; box-sizing:border-box; }
  body.admin-view .fg:nth-child(2n){ margin-right:0; }
  body.admin-view .st{ width:100%; }; }
body.admin-view{ background:linear-gradient(165deg,#f5f7fa 0%,#f5f7fa 55%,#e9eef5 100%); }
@media (min-width: 900px){ body.admin-view .fg{ background:#fff; border:1px solid #e6ebf2; border-radius:10px; padding:14px; margin-bottom:8px; box-shadow:0 1px 3px rgba(15,23,42,.05); } }
@media (min-width: 900px){ body.admin-view .st{ font-size:17px; color:#1f2d3d; letter-spacing:.3px; border-bottom:2px solid #eef1fb; padding-bottom:8px; margin-bottom:14px; } }
@media (min-width: 900px){ body.admin-view #abel .abt{ padding:8px 18px; font-size:13px; } }
