/* ══════════════════════════════════════════════════════════════════════
   auth.css —— 账号域样式（2026-09-29 · 登录 + 用户与角色）

   ★★ 为什么「登录页的样式」会出现在**中台的样式目录**里（这是本文件存在的全部理由）：
      `app/_verify/appver.mjs` 判据 ⑦ 要求「index.html 的引用集合 ≡ css/ + js/ 目录集合」
      ——它是**双向**的：目录里多一件没人引的 css ⇒ 判据当场报红（"未挂 N 件"）。
      而登录页是**第二张 HTML**（`app/login.html`），判据**不扫它** ⇒ 单开一件
      `login.css` 只会让 ⑦ 永久变红。⇒ 出路只有两条：
        ① 把登录页样式塞进某个已被引用的件（等于把别人的域当垃圾场）；
        ② **一件 css 服务两处**：登录页（`body.lgpage` 子树）+ 中台内件（`.au-*`）。
      本文件走 ②。两处的类名**零交集**（见下方两段命名空间），所以它被两张页面
      同时引用**不会**产生任何覆盖关系 —— 这不是"共用"，是"同域打包"。

   ★ 边界（写死，防日后膨胀）：
     · 本文件**只管账号域**：登录页外观 + 中台里"当前登录 / 用户与角色"视图。
     · 四主题令牌一律 `var()` 取；**本文件零字面色值**（与 settings.css 同纪律）。
     · 不写任何 `body{}` 裸规则 —— 那会污染中台（见 `.lgpage` 那一段的说明）。

   ① 登录页命名空间 = `body.lgpage` 下的 `.lg-*`
   ② 中台内件命名空间 = `.au-*`（只出现在设置站的「账号与权限」视图里）
   ══════════════════════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════════════════════
   ① 登录页（app/login.html）
   ⚠ 全部规则**挂在 `body.lgpage` 之下**。为什么不写裸 `body{background:…}`：
     本文件同时被 index.html 引用 ⇒ 一条裸 body 规则会**渗进中台**，
     而中台的 body 背景由 `shell.css`（F 线）持有 ⇒ 两条规则打架，谁赢看加载顺序
     （本仓明令：优先级不许靠加载顺序承载）。加一个类名就等于加一道围栏。
   ★ 2026-10-02 双栏改造（居中单卡片 → 左品牌区 + 右表单）：本段新增的类名只有
     `.lg-panel` / `.lg-rem` 两个，仍走 `lg-` 前缀；全仓查过，与其它 css 顶层独立类
     **零占用**（A1 判据守护）。`.lg-foot` 三条规则整个移除（DOM 已搬进左栏）。
   ══════════════════════════════════════════════════════════════════════ */
body.lgpage{
  margin:0;height:100%;color:var(--t1);
  font-family:var(--font-ui);font-size:var(--fs-body);
  -webkit-font-smoothing:antialiased;
  /* 背景晕光（三层：两支强调色 + e0 底衬）—— **上提到 body.lgpage** 而不是留在 `.lg-wrap`。
     ⚠ 为什么上提（2026-10-02 · 出图实测，不是推测）：`.lg-wrap` 有 `max-width:1120px`
       ⇒ 背景被**裁在 1120px 的盒子内** ⇒ 在 wrap 左右边界上裁出一条**硬竖边**
       （4× 放大件实测：盒子外是纯 e0、盒子内是带青绿晕的 e0，边界一眼可见 = 瑕疵）。
       挂到 `body.lgpage` 后随 body 背景**铺满整个画布** ⇒ 无缝、纯氛围。
       ⚠ `body.lgpage` 只命中登录页那张 body（中台 body 无 `lgpage` 类）⇒ **不渗进中台**，
         仍守住本文件「登录页规则全部挂在 `body.lgpage` 之下」的铁律。 */
  background:
    radial-gradient(1080px 480px at 12% -8%, var(--bevel-acc), transparent 62%),
    radial-gradient(900px 420px at 92% 108%, var(--veil), transparent 60%),
    var(--e0);
}
body.lgpage *{box-sizing:border-box}

/* ★ 2026-10-02 双栏改造：`.lg-wrap` 由「flex 居中」改为「双栏 grid」——
   左栏品牌区（1.05fr，min 0）+ 右栏表单卡（360–420px，宽度由列控，不再靠 .lg-card 的 max-width）。 */
.lg-wrap{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(360px,420px);
  align-items:center;
  gap:clamp(28px,5vw,76px);
  min-height:100vh;max-width:1120px;margin:0 auto;
  padding:var(--s8) var(--s6);
  /* ⚠ 背景晕光**不在这里** —— 已上提到 `body.lgpage`（理由见那一段：留在 max-width 盒子里
     会被裁出一条硬竖边）。本盒子只负责布局，背景交给全屏的 body。 */
}

/* ── 左栏：品牌区 ─────────────────────────────────────────────────────
   ⚠ 只承载 品牌 / 一句话 / 三枚角色胶囊 三块。本仓「受控术语上屏 = 0」
     ⇒ 这里**不新造任何文案**，饱满度全部由排版层级、尺寸与留白承载。 */
.lg-panel{display:flex;flex-direction:column;gap:var(--s5);min-width:0}

/* 品牌块：logo 由 34px 放大到 54px、字号由 fs-small(13px) 提到 24px、名字提到 fs-h2 一级。 */
.lg-brand{display:flex;align-items:center;gap:var(--s4)}
.lg-logo{
  width:54px;height:54px;flex:none;border-radius:var(--r-lg);
  background:linear-gradient(140deg,var(--accent),var(--data));
  display:flex;align-items:center;justify-content:center;
  color:var(--on-accent);font-weight:700;font-size:24px;letter-spacing:.5px;
  box-shadow:0 10px 30px var(--sh-2);
}
.lg-name{font-size:var(--fs-h2);font-weight:600;letter-spacing:.2px;line-height:1.25}
/* ⚠ 去掉了旧的 `margin-left:46px`：那是为对齐 34px 小 logo 写的，logo 放大后不再需要。
   改成自然流 + 限宽，避免在宽左栏里拉成超长单行。
   ★ 限宽取 46ch（≈ 360px）：实测该句「一个微信号由一位教练负责 · 教练只看自己的号与客户」
     在此宽度内**恰好一行**；取窄（首版按建议的 38ch）会折成两行，且因中文可任意断行
     会把「负责」劈成「负」/「责」（实测），加 `text-wrap:balance` 只是换成另一个断点。
     ⇒ 宁可放宽到"整句一行"，也不制造一个劈开的词。 */
.lg-sub{color:var(--t3);font-size:var(--fs-body);margin:0;max-width:46ch;line-height:1.7}

/* 角色胶囊：三枚并排（旧版是竖排等宽小字 ⇒ 横向胶囊更省纵向、也更像「能力标签」）。 */
.lg-role{display:flex;flex-wrap:wrap;gap:var(--s2);font-size:var(--fs-micro);color:var(--t3)}
.lg-role i{
  color:var(--t2);font-style:normal;
  padding:3px 10px;border:1px solid var(--line2);border-radius:var(--r-full);background:var(--e2);
}

/* ── 右栏：表单卡 ─────────────────────────────────────────────────────
   ⚠ 去掉了旧的 `max-width:396px` —— 宽度改由 grid 右列（minmax(360px,420px)）控。
   ★ 描边用「双背景渐变」实现：第一层 padding-box 铺底（e1）、第二层 border-box 出彩边
     （accent→data）。配合 `border:1px solid transparent` ⇒ 彩边落在 border 区。
     全文零字面色值（与 settings.css 同纪律）。 */
.lg-card{
  width:100%;
  background:
    linear-gradient(var(--e1),var(--e1)) padding-box,
    linear-gradient(140deg,var(--accent),var(--data)) border-box;
  border:1px solid transparent;border-radius:var(--r-lg);
  box-shadow:0 18px 48px var(--sh-2);
  padding:var(--s8) var(--s6) var(--s6);
}

.lg-f{display:block;margin-bottom:var(--s4)}
.lg-f > span{display:block;color:var(--t2);font-size:var(--fs-caption);margin-bottom:var(--s2)}
.lg-f input{
  width:100%;height:42px;padding:0 var(--s3);
  background:var(--e2);color:var(--t1);
  border:1px solid var(--line2);border-radius:var(--r-md);
  font-family:var(--font-ui);font-size:var(--fs-body);outline:none;
  transition:border-color var(--dur-1),box-shadow var(--dur-1);
}
.lg-f input:focus{border-color:var(--focus);box-shadow:0 0 0 3px var(--sel)}
.lg-f input::placeholder{color:var(--t3)}

/* 记住账号密码（2026-10-02 新增，默认勾选）。
   ⚠ 本域**只出 DOM 与样式** —— localStorage 的读写与回填逻辑归 `js/auth.js`（另一写者）。
   ★ 勾选框自绘（`appearance:none`）：浏览器默认那枚**白方块**在深色主题上极扎眼
     （两张出图实测 = 一块纯白补丁）。⚠ 选择器仍是 `.lg-rem input` 一族 ——
     **不新增任何类名**（A1 判据盯的是裸类名）。勾形用 border 拼（零字面色值）。 */
.lg-rem{
  display:flex;align-items:center;gap:var(--s2);margin:0 0 var(--s4);
  color:var(--t2);font-size:var(--fs-caption);cursor:pointer;user-select:none;
}
.lg-rem input{
  appearance:none;-webkit-appearance:none;
  width:15px;height:15px;flex:none;margin:0;
  border:1px solid var(--line2);border-radius:var(--r-xs);
  background:var(--e2);display:grid;place-items:center;cursor:pointer;
  transition:background var(--dur-1),border-color var(--dur-1);
}
.lg-rem input:checked{background:var(--accent);border-color:transparent}
.lg-rem input:checked::after{
  content:'';width:4px;height:8px;
  border:solid var(--on-accent);border-width:0 2px 2px 0;
  transform:rotate(45deg) translate(-1px,-1px);
}
.lg-rem input:focus-visible{outline:2px solid var(--focus);outline-offset:2px}

.lg-btn{
  width:100%;height:42px;margin-top:var(--s2);
  background:linear-gradient(140deg,var(--accent),var(--data));
  color:var(--on-accent);
  border:0;border-radius:var(--r-md);
  font-family:var(--font-ui);font-size:var(--fs-body);font-weight:600;letter-spacing:.5px;
  cursor:pointer;transition:filter var(--dur-1),box-shadow var(--dur-1);
  box-shadow:0 8px 22px var(--sh-2);
}
.lg-btn:hover{filter:brightness(1.08)}
.lg-btn:disabled{opacity:.55;cursor:default}
.lg-btn:focus-visible{outline:2px solid var(--focus);outline-offset:2px}

/* 错误条：**必须上屏**（R10 同族 —— 失败不能长得像"我点了但没反应"）。
   ⚠ 它平时 `hidden`，只有真有话说时才出现 —— 一个空的错误框会被读成"有个错我不知道"。 */
.lg-err{
  display:none;margin:0 0 var(--s4);padding:var(--s2) var(--s3);
  background:var(--danger-bg);border:1px solid var(--danger-line);
  border-left:3px solid var(--danger);border-radius:var(--r-sm);
  color:var(--danger-text);font-size:var(--fs-small);line-height:1.55;
}
.lg-err.on{display:block}

/* 提示条（非错误）：用来讲"这个部署的登录状态"——例如"后端未开启强制登录"
   或"库里还没有管理员，请先跑 seed"。三者形态**必须可辨**，故与 .lg-err 分色。 */
.lg-hint{
  margin:0 0 var(--s5);padding:var(--s2) var(--s3);
  background:var(--info-bg);border:1px solid var(--line);border-left:3px solid var(--info);
  border-radius:var(--r-sm);color:var(--t2);font-size:var(--fs-small);line-height:1.6;
}
.lg-hint b{color:var(--t1)}
.lg-hint code{
  font-family:var(--font-num);font-size:11px;color:var(--accent-text);
  background:var(--accent-wash);padding:1px 5px;border-radius:var(--r-xs);
}

/* 演示账号快捷填充条：只在「库里已有管理员 + 后端没开强制登录」时出现。
   ⚠ **不显示密码本身** —— 默认口令印在页面上 = 把它交给每一个能打开这个地址的人。 */
.lg-demo{
  display:none;align-items:center;gap:var(--s2);flex-wrap:wrap;
  margin-top:var(--s4);padding:var(--s2) var(--s3);
  background:var(--amber-bg);border:1px solid var(--amber-line);border-radius:var(--r-sm);
  color:var(--t2);font-size:var(--fs-caption);line-height:1.6;
}
.lg-demo a{color:var(--amber);cursor:pointer;text-decoration:none}
.lg-demo a:hover{text-decoration:underline}

/* ⚠★ 2026-10-02 双栏改造时**整个移除**了 `.lg-foot` / `.lg-foot a` / `.lg-foot .sp`
   三条规则 —— 那一段的 DOM（含「访客入口已撤除」的历史注释）已搬进左栏 `.lg-panel`。
   `.lg-role` **改写而非删除**（由竖排等宽小字 → 横向胶囊），见上方品牌区那一段。 */

/* 窄窗降单栏：品牌区居中、表单卡落其下。⚠ 不许横向溢出。
   ★ 单栏下 `.lg-card` 若不封顶会吃满整幅（800px 视口实测 = 752px 宽、input 702px）
     —— 那不像表单、像宽表格。故给一个卡宽上限并居中（`justify-self:center`）。 */
@media (max-width:900px){
  .lg-wrap{grid-template-columns:1fr;align-content:center;gap:var(--s6)}
  .lg-panel{align-items:center;text-align:center}
  .lg-sub{max-width:none}
  .lg-role{justify-content:center}
  .lg-card{max-width:440px;justify-self:center}
}

/* ══════════════════════════════════════════════════════════════════════
   ② 中台内件（设置站 →「账号与权限」视图）
   仅在 `.set-mid` 里出现（渲染器 = js/auth.js 的 usersView()）。
   ⚠ 这里**不定义布局骨架**（页头/左轨/右栏）—— 那些归 settings.css。
     本段只负责账号表本身。
   ══════════════════════════════════════════════════════════════════════ */
.au-wrap{display:flex;flex-direction:column;gap:var(--s4);padding-bottom:var(--s8)}

/* 当前登录条 */
.au-who{
  display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;
  padding:var(--s3) var(--s4);
  background:var(--e2);border:1px solid var(--line);border-left:3px solid var(--accent);
  border-radius:var(--r-md);
}
.au-who .au-l{color:var(--t3);font-size:var(--fs-caption)}
.au-who b{color:var(--t1);font-size:var(--fs-small)}
.au-who .au-role{
  font-size:var(--fs-micro);color:var(--on-accent);background:var(--accent);
  padding:1px 7px;border-radius:var(--r-full);font-weight:600;
}
.au-who .au-role.admin{background:var(--data);color:var(--on-accent)}
.au-who .au-role.sales{background:var(--info);color:var(--on-accent)}
.au-who .sp{flex:1}
.au-who select{
  height:30px;padding:0 var(--s2);background:var(--e3);color:var(--t1);
  border:1px solid var(--line2);border-radius:var(--r-sm);
  font-family:var(--font-ui);font-size:var(--fs-caption);outline:none;
}
.au-who select:focus{border-color:var(--focus)}

/* 通用小按钮（本视图内） */
.au-btn{
  height:30px;padding:0 var(--s3);
  background:var(--e3);color:var(--t1);
  border:1px solid var(--line2);border-radius:var(--r-sm);
  font-family:var(--font-ui);font-size:var(--fs-caption);
  cursor:pointer;transition:background var(--dur-1);
}
.au-btn:hover{background:var(--e4)}
.au-btn:disabled{opacity:.5;cursor:default}
.au-btn.pri{background:var(--accent);color:var(--on-accent);border-color:transparent;font-weight:600}
.au-btn.gh{background:transparent}
.au-btn.dg{color:var(--danger-text);border-color:var(--danger-line)}
.au-btn.mini{height:26px;padding:0 var(--s2);font-size:var(--fs-micro)}

.au-err{
  padding:var(--s2) var(--s3);background:var(--danger-bg);
  border:1px solid var(--danger-line);border-left:3px solid var(--danger);
  border-radius:var(--r-sm);color:var(--danger-text);font-size:var(--fs-small);line-height:1.55;
}
.au-ok{
  padding:var(--s2) var(--s3);background:var(--accent-wash);
  border:1px solid var(--accent-line);border-left:3px solid var(--accent);
  border-radius:var(--r-sm);color:var(--accent-text);font-size:var(--fs-small);
}
.au-note{color:var(--t3);font-size:var(--fs-caption);line-height:1.65}
.au-note b{color:var(--t2)}

/* 角色能力对照表（回答"三个角色分别能看什么"） */
.au-caps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s3)}
.au-cap{
  background:var(--e2);border:1px solid var(--line);border-radius:var(--r-md);
  padding:var(--s3);
}
.au-cap h5{
  margin:0 0 var(--s2);font-size:var(--fs-small);color:var(--t1);
  display:flex;align-items:center;gap:var(--s2);
}
.au-cap p{margin:0 0 var(--s2);color:var(--t3);font-size:var(--fs-micro);line-height:1.6}
.au-cap ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:3px}
.au-cap li{font-size:var(--fs-micro);color:var(--t2);display:flex;gap:5px;align-items:baseline}
.au-cap li.no{color:var(--t3);text-decoration:line-through;text-decoration-color:var(--line3)}
.au-cap li em{font-style:normal;width:12px;flex:none;text-align:center}
.au-cap li.yes em{color:var(--accent-text)}
.au-cap li.no em{color:var(--t3)}

/* 账号表 */
.au-tblwrap{border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.au-th,.au-tr{
  display:grid;
  grid-template-columns:minmax(150px,1.4fr) 84px minmax(96px,.9fr) minmax(150px,1.5fr) 66px minmax(120px,1fr) 128px;
  align-items:center;gap:var(--s3);padding:0 var(--s3);
}
.au-th{
  height:34px;background:var(--e3);color:var(--t3);
  font-size:var(--fs-micro);letter-spacing:.3px;
}
.au-tr{
  min-height:44px;background:var(--e2);border-top:1px solid var(--line);
  font-size:var(--fs-caption);color:var(--t2);
}
.au-tr:hover{background:var(--face-hover)}
/* ⚠★ 类名是 `au-mine`，**不是** `me`（2026-09-29 修）——
   `css/shell.css:174` 已全局占用裸类名 `.me`（左栏「我」头像：
   `width:38px;height:38px;border-radius:50%`）。用 `me` 会让这一行被那条规则接管：
   实测 行的计算宽度从 922px 掉到 38px、圆角变 50%，7 列网格的 `fr` 拿不到可用宽度
   ⇒ 退化成 min 轨道、首格溢出到父容器左侧外面（而 `.au-tblwrap{overflow:hidden}` 把人眼看的东西也剪掉一半）。
   ⇒ 本域一切类名走 `au-` 前缀，**不与全局类名共享字面量**。 */
.au-tr.au-mine{background:var(--accent-wash)}
.au-tr .au-nm{display:flex;flex-direction:column;gap:2px;min-width:0}
.au-tr .au-nm b{color:var(--t1);font-size:var(--fs-small);font-weight:600}
.au-tr .au-nm code{
  font-family:var(--font-num);font-size:10px;color:var(--t3);overflow:hidden;text-overflow:ellipsis;
}
.au-tag{
  display:inline-block;padding:1px 6px;border-radius:var(--r-xs);
  font-size:var(--fs-micro);border:1px solid var(--line2);color:var(--t2);white-space:nowrap;
}
.au-tag.admin{color:var(--on-accent);background:var(--data);border-color:transparent}
.au-tag.coach{color:var(--accent-text);border-color:var(--accent-line);background:var(--accent-wash)}
.au-tag.sales{color:var(--info);border-color:var(--line2);background:var(--info-bg)}
.au-tag.off{color:var(--t3)}
.au-scopes{display:flex;flex-wrap:wrap;gap:4px;min-width:0}
.au-scope{
  font-size:var(--fs-micro);color:var(--t2);background:var(--e3);
  border:1px solid var(--line);border-radius:var(--r-xs);padding:1px 5px;
}
.au-scope.owner{color:var(--accent-text);border-color:var(--accent-line)}
.au-scope.v{color:var(--info)}
.au-scope.none{color:var(--t3);background:transparent;border-style:dashed}
.au-acts{display:flex;gap:var(--s2);justify-content:flex-end}
.au-empty{padding:var(--s5);text-align:center;color:var(--t3);font-size:var(--fs-caption)}

/* 行内编辑器（新建 / 编辑共用一套 DOM） */
.au-edit{
  grid-column:1 / -1;
  background:var(--e1);border-top:1px solid var(--line2);
  padding:var(--s4);
}
.au-frow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3) var(--s4)}
.au-f{display:flex;flex-direction:column;gap:5px;min-width:0}
.au-f > span{color:var(--t3);font-size:var(--fs-micro)}
.au-f input,.au-f select{
  height:32px;padding:0 var(--s2);background:var(--e3);color:var(--t1);
  border:1px solid var(--line2);border-radius:var(--r-sm);
  font-family:var(--font-ui);font-size:var(--fs-caption);outline:none;width:100%;
}
.au-f input:focus,.au-f select:focus{border-color:var(--focus)}
.au-f input:disabled,.au-f select:disabled{opacity:.5}
.au-f .au-fh{color:var(--t3);font-size:10px;line-height:1.5}
/* 「教练身份」只读格（2026-10-13）—— 原先是一个必选下拉，撤掉后改成只读展示。
   ⚠ 与输入框**同高同底**（32px）：格子高度不齐会让整行 `au-frow` 看起来裂开；
   但**不能**给 `cursor` / `hover` 之类"可点"的暗示 —— 本仓明令禁止
   "加了 hover 才知道能点"与"看着能点其实不能"。 */
.au-f .au-static{
  height:32px;display:flex;align-items:center;padding:0 var(--s2);
  background:var(--e2);color:var(--t2);border:1px dashed var(--line2);
  border-radius:var(--r-sm);font-size:var(--fs-caption);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.au-f .au-static b{color:var(--t1);font-weight:600}
/* 与显示名不一致 = 这个 BUG 的形态，必须显眼（生产 `songjiaolian` 就这么错配着） */
.au-f .au-static.warn{background:var(--danger-bg);color:var(--danger-text);
  border-color:var(--danger-line);border-style:solid}

.au-scbox{margin-top:var(--s4);border-top:1px solid var(--line);padding-top:var(--s3)}
.au-scbox > h5{
  margin:0 0 var(--s2);font-size:var(--fs-caption);color:var(--t2);
  display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;
}
.au-scbox > h5 em{font-style:normal;color:var(--t3);font-size:var(--fs-micro)}
/* 「可选」徽标（2026-10-12）—— 让"不是必填"这件事**上屏**，而不是只存在于代码里
   （用户看不到的规则 = 不存在的规则；他被"看起来要勾"挡住过）。 */
.au-scbox > h5 .au-opt{
  flex:none;font-size:var(--fs-micro);color:var(--accent-text);
  border:1px solid var(--accent-line);border-radius:var(--r-full);
  padding:0 var(--s2);line-height:1.7;
}
/* 留空的**后果预告**（不是错误 —— 左边一条 danger 竖条，底与字仍走中性） */
.au-scwarn{
  margin-top:var(--s2);padding:var(--s2) var(--s3);background:var(--e2);
  border:1px solid var(--line);border-left:3px solid var(--danger);
  border-radius:var(--r-sm);color:var(--t2);font-size:var(--fs-caption);line-height:1.7;
}
.au-scwarn b{color:var(--t1)}
.au-scwarn .au-scwarn-bad{color:var(--danger-text)}
.au-scgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(216px,1fr));gap:var(--s2)}
.au-sc{
  display:flex;align-items:center;gap:var(--s2);
  background:var(--e2);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:var(--s2);font-size:var(--fs-micro);color:var(--t2);min-width:0;
}
.au-sc input{accent-color:var(--accent);flex:none}
.au-sc .au-scn{color:var(--t1);font-size:var(--fs-caption);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.au-sc select{
  margin-left:auto;flex:none;height:24px;background:var(--e3);color:var(--t1);
  border:1px solid var(--line2);border-radius:var(--r-xs);
  font-size:10px;font-family:var(--font-ui);
}
.au-sc input:disabled,.au-sc select:disabled{opacity:.45}
.au-sc.owner{background:var(--accent-wash);border-color:var(--accent-line)}
.au-sc.unavail{opacity:.6}

.au-editfoot{
  display:flex;align-items:center;gap:var(--s3);margin-top:var(--s4);
  padding-top:var(--s3);border-top:1px solid var(--line);
}
.au-editfoot .sp{flex:1}
.au-editfoot .au-msg{font-size:var(--fs-caption);color:var(--t3)}
.au-editfoot .au-msg.bad{color:var(--danger-text)}
.au-editfoot .au-msg.good{color:var(--accent-text)}

/* 未登录 / 未开通时的整页提示（与"表是空的"必须可辨） */
.au-block{
  padding:var(--s6);text-align:center;
  background:var(--e2);border:1px dashed var(--line2);border-radius:var(--r-md);
  color:var(--t2);font-size:var(--fs-small);line-height:1.8;
}
.au-block b{color:var(--t1)}
.au-block a{color:var(--accent-text);cursor:pointer;text-decoration:none}
.au-block a:hover{text-decoration:underline}
.au-block code{
  font-family:var(--font-num);font-size:11px;color:var(--accent-text);
  background:var(--accent-wash);padding:1px 5px;border-radius:var(--r-xs);
}

/* 窄窗：两张表降列（保持可读，不横向溢出） */
@media (max-width:1180px){
  .au-th,.au-tr{grid-template-columns:minmax(130px,1.4fr) 78px minmax(130px,1.5fr) 62px 120px}
  .au-th > :nth-child(3),.au-tr > :nth-child(3),
  .au-th > :nth-child(6),.au-tr > :nth-child(6){display:none}
  .au-caps{grid-template-columns:1fr}
}
