/* =====================================================================
   Rabbit Leads — SuperAdmin AI 控制台样式（eds3 = eds1 + Visual Polish）
   =====================================================================
   2026-09-30 起并入《Rabbit Leads Enterprise Intelligence Design System》：
   · 定位 = 高级浅色企业 B2B SaaS + 完整深色映射 —— 本区域不再存在
     「局部永久深色工作区」，Light/Dark 全部跟随 html[data-theme]。
   · 本文件不定义任何颜色字面量（遮罩/阴影黑除外），一律消费
     theme.css 语义 token：--bg-page/--bg-surface/--bg-subtle/--bg-sunken/
     --text-*/--border-*/--line-soft/--brand-*/--status-*。
   · 层级最多三层：Page → Surface(.a-card/.a-sum) → Sunken(内嵌区)；
     边框只做必要结构（1px --border-default / 分隔 --line-soft），
     层级主要靠间距、背景差与字重。
   · 状态表达：只有异常用黄/红（Degraded/Down/No fallback）；
     正常与继承态用中性 badge / 小状态点，不铺绿色或黄色底。
   · 按钮分级：主动作（保存/新增/导入）= Brand 实底；查看模型/测试/编辑
     = ghost(.sec)；删除/回滚/锁定 = danger ghost(.warn)。
   作用域 #v-admin / .a-drawer / .mroot .a-card（drawer 与 modal 挂 body 下），
   命中全局浅色皮肤（theme.css html[data-theme="light"] 前缀）的特异性。 */

/* ---------- 页面骨架 ---------- */
#v-admin h1 { font-size: 21px; font-weight: 600; color: var(--text-primary); }
#v-admin h2, .a-card h2, .mroot .a-card h1 {
  font-size: 15.5px; font-weight: 600; color: var(--text-primary);
}
#v-admin .badge {
  background: var(--bg-sunken); color: var(--text-secondary);
  border: 0; white-space: nowrap;   /* eds3：元信息 chip 降噪去边框 */
}
#v-admin .adm-hint, .a-drawer .adm-hint, .mroot .a-card .adm-hint,
#v-admin .adm-note, .a-drawer .adm-note, .mroot .a-card .adm-note {
  color: var(--text-secondary); font-size: 12px;
}
.a-src { color: var(--text-faint); font-size: 11.5px; }
.a-clip { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- 卡片（Surface 层）---------- */
.a-card {
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: 12px;
  padding: 18px 20px;
  color: var(--text-primary);
  box-shadow: var(--shadow-card);
}
.mroot .a-card { box-shadow: var(--shadow-pop); }
.a-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
  gap: 16px;
}
@media (max-width: 900px) { .a-grid { grid-template-columns: 1fr; } }
.a-card-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.a-name { color: var(--text-primary); font-weight: 600; font-size: 14.5px; }
.a-lbl {
  display: block; margin: 10px 0 4px;
  font-size: 12px; font-weight: 600; color: var(--text-secondary);
}
.a-stats {
  display: flex; flex-wrap: wrap; gap: 4px 18px;
  margin-top: 12px; font-size: 12px; color: var(--text-secondary);
}
.a-stats b { color: var(--text-primary); font-weight: 600; }

/* ---------- 状态 pill（小、克制；仅异常用黄/红）---------- */
.a-pill {
  display: inline-block; padding: 1px 9px; border-radius: 999px;
  font-size: 11.5px; font-weight: 500; line-height: 1.8;
  border: 1px solid transparent; white-space: nowrap; vertical-align: middle;
}
.a-pill.g {
  color: var(--status-success); background: var(--status-success-bg);
  border-color: var(--status-success-border);
}
.a-pill.a {
  color: var(--status-warning); background: var(--status-warning-bg);
  border-color: var(--status-warning-border);
}
.a-pill.r {
  color: var(--status-danger); background: var(--status-danger-bg);
  border-color: var(--status-danger-border);
}
/* eds3 中性信息降噪：无数据/Inherited Global 等正常态 = 平文本 + 状态点，
   无底色无边框；只有 Degraded/Down 才有 pill 强调。 */
.a-pill.x {
  color: var(--text-secondary); background: transparent;
  border: 0; padding-left: 2px; padding-right: 2px;
}
/* 小状态点（健康态只用点，不铺色底） */
.a-dot {
  display: inline-block; width: 8px; height: 8px; border-radius: 50%;
  margin-right: 7px; vertical-align: 1px; background: var(--text-faint);
}
.a-dot.g { background: var(--status-success); }
.a-dot.a { background: var(--status-warning); }
.a-dot.r { background: var(--status-danger); }

/* ---------- AI Health Summary ----------
   Qualification = 第一 KPI（主区），其余为次级小 tile；
   数值正常态 = text-primary，只有异常数值用状态色。 */
.a-sum {
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: 12px; padding: 16px 20px; color: var(--text-primary);
  box-shadow: var(--shadow-card);
}
.a-sum-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 12px; }
.a-sum-head b { color: var(--text-primary); font-size: 15px; font-weight: 600; letter-spacing: .02em; }
.a-sum-note { color: var(--text-secondary); font-size: 12px; }
/* 第一 KPI：Qualification —— eds3 去嵌套：主 Surface 内不做「卡中卡」，
   主信息区只用轻分隔（无边框、无底色），层级靠字阶与分隔线。 */
.a-sum-hero {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--line-soft);
  border-radius: 0; padding: 2px 2px 12px; margin-bottom: 12px;
}
.a-hero-l { font-size: 11.5px; color: var(--text-secondary); letter-spacing: .04em; }
.a-hero-v { margin-top: 3px; font-size: 19px; font-weight: 600; color: var(--text-primary); }
.a-hero-v.tone-r { color: var(--status-danger); }
.a-hero-v.tone-a { color: var(--status-warning); }
.a-hero-sub { margin-top: 4px; font-size: 12.5px; color: var(--text-secondary); }
/* 次级 KPI */
.a-sum-grid {
  display: grid; gap: 10px;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}
.a-tile {
  background: var(--bg-subtle);   /* eds3：仅弱背景、无边框 —— 不再形成卡片套卡片 */
  border: 0;
  border-radius: 8px; padding: 8px 10px; min-width: 0;
}
.a-tile-l {
  font-size: 11px; color: var(--text-secondary); margin-bottom: 2px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.a-tile-v { font-size: 16px; font-weight: 600; color: var(--text-primary); }
.a-tile-v.vg { color: var(--text-primary); }        /* 正常不铺绿 */
.a-tile-v.va { color: var(--status-warning); }      /* 异常数值才上色 */
.a-tile-v.vr { color: var(--status-danger); }
.a-tile-v .a-pill { font-size: 11px; }

/* ---------- 告警横幅：浅色底 + 状态字/图标（无大面积纯红）---------- */
.a-alert {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 10px 14px; border-radius: 8px; font-size: 13px;
}
.a-alert b { font-weight: 600; }
.a-alert.r {
  color: var(--status-danger);
  border: 1px solid var(--status-danger-border);
  background: var(--status-danger-bg);
}
.a-alert.a {
  color: var(--status-warning);
  border: 1px solid var(--status-warning-border);
  background: var(--status-warning-bg);
}
.a-alert .adm-sm { margin-left: auto; }

/* ---------- Tab 行：中性 pill，选中 = brand-soft + 品牌字 ---------- */
.adm-tabs { display: flex; gap: 8px; flex-wrap: wrap; }
#v-admin .adm-tabs button, #v-admin .adm-tabs button.sec {
  border-radius: 999px; padding: 6px 16px; font-size: 13px; font-weight: 500;
  background: transparent; color: var(--text-secondary);
  border: 1px solid var(--border-default); box-shadow: none;
}
#v-admin .adm-tabs button:hover {
  color: var(--text-primary); border-color: var(--border-strong);
  background: var(--bg-hover);
}
#v-admin .adm-tabs button.adm-on, #v-admin .adm-tabs button.sec.adm-on {
  color: var(--brand-primary); font-weight: 600;
  background: var(--brand-soft); border-color: transparent; box-shadow: none;
}

/* ---------- 数据表：成熟 SaaS 表格（无外框套框、极轻分隔）---------- */
.a-tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.a-tbl th {
  text-align: left; font-size: 11px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--text-faint); font-weight: 600; padding: 6px 10px;
  border-bottom: 1px solid var(--border-default);
}
.a-tbl td {
  padding: 10px 10px; border-bottom: 1px solid var(--line-soft);
  color: var(--text-primary); vertical-align: middle;
}
.a-tbl tbody tr:last-child td { border-bottom: 0; }
.a-tbl tbody tr:hover td { background: var(--brand-soft); }  /* hover 不改文字色 */
.a-route-tbl td { vertical-align: middle; }
.a-route-tbl .a-name { font-size: 13px; }
tr.a-row-bad td:first-child { box-shadow: inset 3px 0 0 var(--status-danger); }

/* ---------- Provider 卡内模型区（Sunken 分隔，不加框）---------- */
.a-models {
  margin-top: 14px; padding-top: 12px;
  border-top: 1px solid var(--line-soft);
}
.a-models.hidden { display: none; }

/* ---------- Drawer（右侧滑出，不跳页；跟随主题）----------
   eds3 层级修正：Backdrop 只负责 dim 背景；Drawer 恒在 overlay 之上、
   完整不透明 Surface。挂载点在 main.content（z-index:0 堆叠上下文）内，
   z 提到 90/91 保证压过页面内一切层。入场动画只做位移、不做透明度渐变
   （旧 opacity .4 起始帧会造成「半透明 Drawer」假象）。 */
.a-drawer-mask {
  position: fixed; inset: 0; background: rgba(15, 23, 42, .4);
  z-index: 90;
}
.a-drawer {
  position: fixed; top: 0; right: 0; bottom: 0;
  width: min(520px, 94vw);
  background: var(--bg-surface);
  border-left: 1px solid var(--border-default);
  border-radius: 12px 0 0 12px;
  box-shadow: var(--shadow-pop);
  z-index: 91; display: flex; flex-direction: column;
  color: var(--text-primary);
  animation: aDrawerIn .18s ease-out;
}
@keyframes aDrawerIn { from { transform: translateX(24px); } to { transform: none; } }
.a-drawer-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px 10px; border-bottom: 1px solid var(--line-soft);
}
.a-eyebrow {
  font-size: 10.5px; letter-spacing: .14em; color: var(--text-faint); font-weight: 600;
}
.a-drawer-body { flex: 1; overflow-y: auto; padding: 12px 20px 16px; }
.a-drawer-foot {
  display: flex; gap: 8px; flex-wrap: wrap; align-items: center;
  padding: 12px 20px; border-top: 1px solid var(--line-soft);
  background: var(--bg-subtle);
  border-radius: 0 0 0 12px;
}
.a-drawer-foot #dw-save { margin-left: auto; }

/* ---------- Failover 只读策略组（Sunken 内嵌，不加层框）---------- */
.a-policy {
  margin-top: 14px; padding: 12px 14px;
  background: var(--bg-sunken);
  border: 1px solid var(--line-soft);
  border-radius: 10px; font-size: 12.5px; color: var(--text-primary);
}
.a-ck { display: flex; align-items: center; gap: 8px; padding: 2px 0; color: var(--text-secondary); }
.a-ck input { accent-color: var(--brand-primary); }

/* ---------- 危险区（编辑 modal 底部，浅红提示底）---------- */
.a-danger-zone {
  margin-top: 16px; padding: 10px 12px;
  border: 1px solid var(--status-danger-border);
  background: var(--status-danger-bg);
  border-radius: 10px;
}

/* ---------- 区域内控件（跟随主题 token）---------- */
#v-admin input, #v-admin select, #v-admin textarea,
.a-drawer input, .a-drawer select,
.mroot .a-card input, .mroot .a-card select {
  background: var(--input-bg); color: var(--text-primary);
  border: 1px solid var(--input-border);
  border-radius: 6px; padding: 7px 10px; font-size: 13px;
}
#v-admin input:focus, #v-admin select:focus, #v-admin textarea:focus,
.a-drawer input:focus, .a-drawer select:focus,
.mroot .a-card input:focus, .mroot .a-card select:focus {
  outline: none; border-color: var(--brand-primary);
  box-shadow: 0 0 0 3px var(--primary-weak);
}
.adm-inp { width: 100%; box-sizing: border-box; }
/* 全局 inline 样式表给 input,select,textarea 设了 width:100%，会把 checkbox
   拉成整行宽 —— 复选框一律收回原生尺寸。 */
#v-admin input[type="checkbox"], .a-drawer input[type="checkbox"],
.mroot .a-card input[type="checkbox"] {
  width: auto; height: auto; flex: 0 0 auto;
  padding: 0; margin: 0; accent-color: var(--brand-primary);
}
/* 主按钮 = Brand 实底（无渐变）；.sec = ghost；.warn = danger ghost */
#v-admin .adm-sm, .a-drawer .adm-sm, .mroot .a-card .adm-sm {
  border-radius: 6px; padding: 6px 14px; font-size: 12.5px; font-weight: 500;
  background: var(--brand-primary); color: #fff; border: none; cursor: pointer;
}
#v-admin .adm-sm:hover, .a-drawer .adm-sm:hover, .mroot .a-card .adm-sm:hover {
  background: var(--brand-primary-hover);
}
#v-admin .adm-sm.sec, .a-drawer .adm-sm.sec, .mroot .a-card .adm-sm.sec {
  background: transparent; color: var(--text-secondary);
  border: 1px solid var(--border-default);
}
#v-admin .adm-sm.sec:hover, .a-drawer .adm-sm.sec:hover, .mroot .a-card .adm-sm.sec:hover {
  border-color: var(--border-strong); color: var(--text-primary); background: var(--bg-hover);
}
#v-admin .adm-sm.warn, .a-drawer .adm-sm.warn, .mroot .a-card .adm-sm.warn {
  background: transparent; color: var(--status-danger);
  border: 1px solid var(--status-danger-border);
}
#v-admin .adm-sm.warn:hover, .a-drawer .adm-sm.warn:hover, .mroot .a-card .adm-sm.warn:hover {
  border-color: var(--status-danger); background: var(--status-danger-bg); color: var(--status-danger);
}
#v-admin .adm-sm:disabled, .a-drawer .adm-sm:disabled, .mroot .a-card .adm-sm:disabled {
  opacity: .45; cursor: not-allowed;
}

/* ---------- 测试结果条（token 化，替代 cockpit 浅色硬编码）---------- */
#v-admin .adm-test, .a-drawer .adm-test {
  border-radius: 8px; padding: 10px 12px; font-size: 12.5px; margin-top: 8px;
  border: 1px solid var(--border-default); background: var(--bg-subtle);
  color: var(--text-primary); line-height: 1.6;
}
#v-admin .adm-test.run, .a-drawer .adm-test.run {
  border-color: var(--status-info-border); background: var(--status-info-bg);
}
#v-admin .adm-test.okd, .a-drawer .adm-test.okd {
  border-color: var(--status-success-border); background: var(--status-success-bg);
}
#v-admin .adm-test.errd, .a-drawer .adm-test.errd {
  border-color: var(--status-danger-border); background: var(--status-danger-bg);
}
.adm-testbox { margin-top: 8px; }

/* ---------- 账号管理 tab（AdminAccounts 渲染区沿用全局卡片体系）---------- */
#v-admin .card { color: var(--text-primary); }
#v-admin table { color: var(--text-primary); }
/* accounts.js 把 .tbl-sm 渲染进 #adm-body（#v-admin 作用域）——
   theme.css 的表格皮肤只覆盖 #v-adminusers/.mroot，这里补齐本作用域，
   替换 index.html inline 的浅色硬编码分隔线，双主题跟随。 */
#v-admin .tbl-sm th, #v-admin .tbl-sm td { border-bottom-color: var(--line-soft); }
#v-admin .tbl-sm thead th {
  background: var(--thead-bg); color: var(--text-secondary);
}
#v-admin :where(.tbl-sm tbody tr:nth-child(even)) td { background: var(--zebra); }
#v-admin .tbl-sm tbody tr:hover td { background: var(--row-hover); }
#v-admin .tbl-sm td b { color: var(--text-primary); }
#v-admin .adm-inp {
  background: var(--input-bg); border: 1px solid var(--input-border);
  color: var(--text-primary);
}
