/* 黑暗主题（默认）—— 暖色深灰，参考 Claude Desktop */
:root,
:root[data-theme="dark"] {
  --bg: #1f1e1d;
  --bg2: #262624;
  --bg3: #30302e;
  --line: #3a3a37;
  --fg: #f5f4ee;
  --fg-dim: #a8a29a;
  --accent: #d97757;   /* Claude 珊瑚色 */
  --green: #5a9e6f;
  --red: #d9676b;
  --orange: #d6a04a;
  --st-wait: #5bb4d6;   /* 状态药丸：等待中（青） */
  --mono: "Cascadia Code", "Consolas", "Menlo", monospace;
}

/* 明亮主题 —— 暖米白 + 珊瑚色 */
:root[data-theme="light"] {
  --bg: #ffffff;
  --bg2: #f5f4ee;
  --bg3: #ecebe2;
  --line: #e3e1d8;
  --fg: #1f1e1d;
  --fg-dim: #6b6862;
  --accent: #c2603f;
  --green: #4a8a5e;
  --red: #c5505a;
  --orange: #b8842f;
  --st-wait: #2f8fb3;
}

* { box-sizing: border-box; }

/* 覆盖 Chromium 自动填充的浅色背景（暗色主题下从下拉选值后会变白） */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
  -webkit-text-fill-color: var(--fg);
  -webkit-box-shadow: 0 0 0 1000px var(--bg) inset;
  caret-color: var(--fg);
  transition: background-color 9999s ease-in-out 0s;
}

/* 统一聚焦高亮环 */
input:focus, select:focus, textarea:focus {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);
}

/* 浮动提示 toast */
#toast-container {
  position: fixed;
  top: 18px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 9999;
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: center;
  pointer-events: none;
}
.toast {
  background: var(--bg3);
  color: var(--fg);
  border: 1px solid var(--line);
  border-left: 3px solid var(--accent);
  border-radius: 8px;
  padding: 9px 16px;
  font-size: 13px;
  max-width: 70vw;
  box-shadow: 0 6px 20px rgba(0,0,0,.32);
  opacity: 0;
  transform: translateY(-8px);
  transition: opacity .2s ease, transform .2s ease;
}
.toast.show { opacity: 1; transform: translateY(0); }
.toast.warn { border-left-color: var(--orange); }
.toast.error { border-left-color: var(--red); }
.toast.success { border-left-color: var(--green); }

html, body {
  margin: 0;
  height: 100%;
  background: var(--bg);
  color: var(--fg);
  font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
  font-size: 13px;
  overflow: hidden;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.spacer { flex: 1; }

/* ---------- 单窗口外壳 + Excel 风标签 ---------- */
#app-shell {
  display: flex;
  flex-direction: column;
  height: 100vh;
}
#shell-top {
  background: var(--bg2);
  border-bottom: 1px solid var(--line);
}
#global-bar {
  display: flex;
  gap: 12px;
  align-items: flex-end;
  padding: 8px 14px 0;
}
#global-bar .fld.base,
#global-bar .fld.token { flex: 1; }
/* 服务地址/Token/Redis 移入「设置」后:竖排、整宽 */
#global-bar.in-settings { display: flex; flex-direction: column; align-items: stretch; gap: 12px; padding: 0; margin-top: 10px; }
#global-bar.in-settings .fld { flex: none; width: 100%; }
#global-bar.in-settings .fld input, #global-bar.in-settings .base-input-row { width: 100%; box-sizing: border-box; }
#global-bar.in-settings #redis-bar { align-self: flex-start; }
/* 服务地址输入 + 连接状态灯 */
.base-input-row { display: flex; align-items: center; gap: 8px; }
.base-input-row input { flex: 1; min-width: 0; }
.svc-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--fg-dim); flex: 0 0 auto; cursor: help; transition: background .2s, box-shadow .2s; }
.svc-dot.on { background: var(--green); box-shadow: 0 0 0 3px color-mix(in srgb, var(--green) 22%, transparent); }
.svc-dot.err { background: var(--red); box-shadow: 0 0 0 3px color-mix(in srgb, var(--red) 18%, transparent); }
.svc-ms { font-size: 11px; color: var(--fg-dim); font-variant-numeric: tabular-nums; min-width: 38px; white-space: nowrap; }
.svc-ms.fast { color: var(--green); }
.svc-ms.mid { color: #e0a84a; }
.svc-ms.slow { color: var(--red); }

#tab-strip {
  display: flex;
  gap: 4px;
  padding: 8px 14px 0;
}
.tab {
  padding: 7px 22px;
  background: transparent;
  border: none;
  border-bottom: 3px solid transparent;
  color: var(--fg-dim);
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
  border-radius: 6px 6px 0 0;
  transition: color .12s, background .12s, border-color .12s;
}
.tab:hover { color: var(--fg); background: var(--bg3); }
.tab.active {
  color: var(--fg);
  background: var(--bg);
  border-bottom-color: var(--accent);
}
/* 标签上的未读数量圆点（聊天室有新私信时显示） */
.tab { position: relative; }
.tab-badge { display: inline-block; margin-left: 6px; min-width: 17px; height: 17px; line-height: 17px; padding: 0 5px;
  background: var(--green); color: #fff; font-size: 10px; font-weight: 600; text-align: center; border-radius: 9px; vertical-align: middle; }

#panels { flex: 1; min-height: 0; }
.panel { display: none; height: 100%; min-height: 0; }

#panel-register.panel.active { display: flex; flex-direction: column; }
#panel-settings.panel.active { display: block; overflow: auto; }
#panel-admin.panel.active { display: block; overflow: auto; }

#panel-bulk.panel.active,
#panel-warm.panel.active { display: flex; flex-direction: column; overflow: auto; padding: 14px 16px; }

#panel-accounts.panel.active, #panel-import.panel.active { display: flex; flex-direction: column; }
/* 账号中心 / 导入账号：固定列宽，避免内容变化导致列宽跳动 */
#panel-accounts table.reg-table { table-layout: fixed; min-width: 1380px; }
/* 导入表：固定布局 + 100% 宽（列宽确定、表头表体对齐；详情列无定宽，吸收剩余宽度铺满窗口） */
#panel-import table.reg-table { table-layout: fixed; width: 100%; }
#panel-accounts table.reg-table th, #panel-accounts table.reg-table td,
#panel-import table.reg-table th, #panel-import table.reg-table td { overflow: hidden; }
#panel-accounts table.reg-table td .mono, #panel-import table.reg-table td .mono { display: inline-block; max-width: calc(100% - 8px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }
.ac-search { background: var(--bg); border: 1px solid var(--line); border-radius: 6px; color: var(--fg); font-size: 12px; padding: 4px 9px; outline: none; width: 200px; }
.ac-search:focus { border-color: var(--accent); }
/* 账号中心：添加账号抽屉 */
.ac-drawer-box { width: 540px; }
.ac-seg { display: flex; gap: 0; margin-bottom: 12px; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
.ac-seg button { flex: 1; padding: 8px 10px; font-size: 12.5px; background: var(--bg); color: var(--fg-dim); border: none; border-right: 1px solid var(--line); cursor: pointer; }
.ac-seg button:last-child { border-right: none; }
.ac-seg button.active { background: color-mix(in srgb, var(--accent) 18%, transparent); color: var(--accent); font-weight: 600; }
#ac-import { width: 100%; box-sizing: border-box; height: 180px; background: var(--bg); border: 1px solid var(--line); border-radius: 8px; color: var(--fg); font-size: 13px; outline: none; padding: 9px 11px; resize: none; overflow: auto; white-space: pre; font-family: var(--mono); }
#ac-import:focus { border-color: var(--accent); }
.ac-drawer-hint { font-size: 11.5px; color: var(--fg-dim); margin: 8px 0 12px; line-height: 1.5; }
/* 推送日志弹窗 */
.ac-log-box { width: 680px; }
.ac-log-list { max-height: 56vh; overflow: auto; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); padding: 6px; margin: 8px 0 12px; }
.ac-log-item { border-bottom: 1px solid var(--line); padding: 6px 4px; }
.ac-log-item:last-child { border-bottom: none; }
.ac-log-head { font-size: 11.5px; color: var(--accent); margin-bottom: 3px; }
.ac-log-raw { margin: 0; font-family: var(--mono); font-size: 11px; color: var(--fg-dim); white-space: pre-wrap; word-break: break-all; max-height: 120px; overflow: auto; }
.ac-log-empty { padding: 16px; text-align: center; color: var(--fg-dim); font-size: 12.5px; }
.ac-detail-td .act-log { margin-right: 6px; vertical-align: middle; }
.ac-gen-client { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; font-size: 12.5px; color: var(--fg-dim); }
.ac-gen-client[hidden] { display: none; }
.ac-drawer-biz { display: flex; align-items: center; gap: 7px; margin-bottom: 10px; font-size: 12.5px; color: var(--fg-dim); cursor: pointer; }
.ac-drawer-biz[hidden] { display: none; }
.ac-drawer-biz input { margin: 0; }
.ac-gen-client select { background: var(--bg); border: 1px solid var(--line); border-radius: 6px; color: var(--fg); font-size: 12.5px; padding: 5px 9px; outline: none; }
.ac-gen-count { width: 120px; background: var(--bg); border: 1px solid var(--line); border-radius: 6px; color: var(--fg); font-size: 12.5px; padding: 5px 9px; outline: none; }
.ac-gen-count:focus { border-color: var(--accent); }
.ac-gen-client select:focus { border-color: var(--accent); }

/* 聊天面板（数据号登录） */
.lg-chat { height: 250px; display: flex; flex-direction: column; border-top: 1px solid var(--line); background: var(--bg2); }
.lg-chat-head { display: flex; align-items: center; gap: 14px; padding: 8px 16px; border-bottom: 1px solid var(--line); font-size: 12px; }
.lg-chat-from { color: var(--fg); font-weight: 600; white-space: nowrap; }
.lg-to { display: flex; align-items: center; gap: 6px; flex: 1; }
.lg-to span { color: var(--fg-dim); font-size: 11px; white-space: nowrap; }
.lg-to input { flex: 1; height: 28px; padding: 0 10px; background: var(--bg); border: 1px solid var(--line); border-radius: 6px; color: var(--fg); outline: none; }
.lg-to input:focus { border-color: var(--accent); }
.lg-msglog { flex: 1; overflow-y: auto; padding: 10px 16px; display: flex; flex-direction: column; gap: 8px; }
.bub { max-width: 72%; padding: 7px 11px; border-radius: 10px; font-size: 13px; background: var(--bg3); border: 1px solid var(--line); }
.bub.out { align-self: flex-end; background: color-mix(in srgb, var(--accent) 16%, var(--bg3)); }
.bub.in { align-self: flex-start; background: var(--bg3); }
.bub.in .bub-meta { text-align: left; }
.bub-from { font-size: 10.5px; color: var(--accent); font-weight: 600; margin-bottom: 2px; }
.lg-cc { font-size: 10.5px; color: var(--fg-dim); border: 1px solid var(--line); border-radius: 4px; padding: 0 4px; margin-left: 4px; }
/* 限制聊天标识（限制期内显示） */
.lg-lock { display: inline-block; margin-left: 6px; font-size: 10.5px; color: var(--red); background: rgba(224,88,107,.14); border-radius: 4px; padding: 0 5px; white-space: nowrap; }
.lg-evcount { font-size: 10.5px; color: #fff; background: var(--accent); border-radius: 9px; padding: 0 6px; margin-left: 6px; }
.lg-evcount.act-log { cursor: pointer; }
.lg-evcount.act-log:hover { filter: brightness(1.15); }
/* 操作列「自动重连」勾选框：和按钮同排、紧凑 */
.lg-auto { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; color: var(--fg-dim); margin-left: 4px; cursor: pointer; white-space: nowrap; vertical-align: middle; }
/* 操作列：td 必须保留 table-cell，否则多行内容把行撑高时操作列不会同步撑高，
   空操作单元格还会塌缩，造成行背景和分隔线断层。按钮布局放到内层 flex。 */
.ac-ops-td { white-space: nowrap; }
.ac-ops-inner { display: flex; align-items: center; gap: 4px; flex-wrap: nowrap; width: 100%; }
.ac-ops-inner .lg-auto { margin-left: auto; flex: 0 0 auto; }
.ac-account-cell { white-space: normal; }
.ac-account-main { display: flex; align-items: center; gap: 6px; min-width: 0; }
.ac-account-main .mono { flex: 0 1 auto; min-width: 0; max-width: none; }
.ac-account-main .lg-evcount { flex: 0 0 auto; margin-left: 0; }
.ac-account-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; margin-top: 4px; line-height: 1.7; }
.ac-group-tag { display: inline-flex; width: fit-content; max-width: 100%; box-sizing: border-box; padding: 3px 8px; border: 1px solid color-mix(in srgb, var(--accent) 42%, var(--line)); border-radius: 999px; color: var(--fg); background: color-mix(in srgb, var(--accent) 3%, var(--bg)); white-space: nowrap; }
.ac-group-tag-text { display: block; min-width: 0; max-width: 170px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ac-group-tag.ungrouped { color: var(--fg-dim); border-color: var(--line); background: transparent; }
.ac-group-section td { padding: 10px 14px !important; background: color-mix(in srgb, var(--bg3) 96%, var(--accent) 4%) !important; border-top: 1px solid color-mix(in srgb, var(--accent) 16%, var(--line)); border-bottom-color: color-mix(in srgb, var(--accent) 18%, var(--line)); }
.ac-group-section:hover td { background: color-mix(in srgb, var(--bg3) 91%, var(--accent) 9%) !important; }
.ac-group-section-inner { display: flex; align-items: center; gap: 11px; min-width: 0; min-height: 27px; }
.ac-group-select { flex: 0 0 auto; margin: 0; }
.ac-group-toggle { display: inline-flex; align-items: center; gap: 7px; min-width: 0; padding: 3px 5px; border: 0; border-radius: 6px; background: transparent; color: var(--fg); cursor: pointer; font: inherit; }
.ac-group-toggle:hover { background: color-mix(in srgb, var(--accent) 10%, transparent); }
.ac-group-caret { display: inline-block; color: var(--accent); transition: transform .15s ease; }
.ac-group-section.collapsed .ac-group-caret { transform: rotate(-90deg); }
.ac-group-section-name { display: block; max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 700; }
.ac-group-visible { padding: 2px 6px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 10%, transparent); color: var(--fg-dim); font-size: 10px; white-space: nowrap; }
.ac-group-empty-label { padding: 2px 7px; border: 1px solid var(--line); border-radius: 999px; color: var(--fg-dim); font-size: 10px; white-space: nowrap; }
.ac-group-section.empty .ac-group-caret { opacity: .38; }
.ac-group-section.empty .ac-group-select { opacity: .45; cursor: not-allowed; }
.ac-group-stats, .ac-group-manager-stats { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 12px; color: var(--fg-dim); font-size: 10.5px; }
.ac-group-stats { margin-left: auto; justify-content: flex-end; }
.ac-group-stats span, .ac-group-manager-stats span { white-space: nowrap; }
.ac-group-stats b, .ac-group-manager-stats b { color: var(--fg); font-weight: 650; }
.ac-group-stats .ok, .ac-group-manager-stats .ok, .ac-group-stats .ok b, .ac-group-manager-stats .ok b { color: var(--green); }
.ac-group-stats .err, .ac-group-manager-stats .err, .ac-group-stats .err b, .ac-group-manager-stats .err b { color: var(--red); }
.ac-group-stats .offline, .ac-group-stats .offline b { color: var(--fg-dim); }
.ac-group-stats .removed, .ac-group-stats .removed b { color: color-mix(in srgb, var(--red) 72%, var(--fg-dim)); }
.ac-group-total { margin-right: 2px; }
.ac-group-dot { display: inline-block; width: 7px; height: 7px; margin-right: 5px; border-radius: 50%; background: currentColor; vertical-align: 1px; }
.ac-group-progress { display: inline-flex !important; align-items: stretch; width: 118px; height: 7px; margin-left: 2px; overflow: hidden; border-radius: 999px; background: var(--line); }
.ac-group-progress > i { display: block; min-width: 0; height: 100%; }
.ac-group-progress > .online { background: var(--green); }
.ac-group-progress > .offline { background: var(--fg-dim); }
.ac-group-progress > .banned { background: var(--red); }
.ac-group-progress > .removed { background: color-mix(in srgb, var(--red) 68%, var(--fg-dim)); }
.ac-times { display: grid; gap: 2px; min-width: 205px; color: var(--fg-dim); font-size: 10.5px; line-height: 1.35; }
.ac-times b { display: inline-block; width: 62px; color: var(--fg); font-weight: 500; }
.account-group-select { min-width: 112px; max-width: 180px; height: 30px; padding: 0 8px; border: 1px solid var(--line); border-radius: 7px; background: var(--bg); color: var(--fg); font-size: 11px; }
.ac-group-th { vertical-align: middle; }
.ac-filter-title { display: flex; align-items: center; min-height: 23px; margin-bottom: 5px; }
.ac-group-filter-head { justify-content: space-between; gap: 8px; }
.ac-group-manage-trigger { display: inline-flex; align-items: center; justify-content: center; width: 25px; height: 23px; padding: 0; border: 1px solid var(--line); border-radius: 6px; background: var(--bg); color: var(--accent); font-size: 12px; cursor: pointer; }
.ac-group-manage-trigger:hover { border-color: color-mix(in srgb, var(--accent) 55%, var(--line)); background: color-mix(in srgb, var(--accent) 9%, var(--bg)); }
.ac-selection-context { display: inline-flex; align-items: center; gap: 8px; height: 34px; padding: 0 5px 0 11px; border: 1px solid color-mix(in srgb, var(--accent) 48%, var(--line)); border-radius: 9px; background: color-mix(in srgb, var(--accent) 8%, var(--bg)); }
.ac-selection-context[hidden], .ac-group-move-control[hidden] { display: none; }
.ac-group-move-control { display: inline-block; }
.ac-group-move-btn { border-color: color-mix(in srgb, var(--accent) 58%, var(--line)); color: var(--fg); background: color-mix(in srgb, var(--accent) 13%, var(--bg2)); }
.ac-group-move-menu { left: 0; right: auto; min-width: 250px; }
.ac-group-move-menu .import-group-picker { margin: 0; border: 0; }
.ac-group-move-menu .account-group-select { width: 100%; max-width: none; }
.ac-selection-clear { display: inline-flex; align-items: center; justify-content: center; width: 25px; height: 25px; padding: 0; border: 0; border-radius: 6px; background: transparent; color: var(--fg-dim); font-size: 17px; cursor: pointer; }
.ac-selection-clear:hover { background: var(--bg3); color: var(--fg); }
.cr-modal-box.ac-group-modal-box { display: flex; flex-direction: column; width: min(960px, calc(100vw - 48px)); max-width: calc(100vw - 48px); max-height: min(820px, calc(100vh - 40px)); overflow: hidden; padding: 0; border-color: color-mix(in srgb, var(--accent) 22%, var(--line)); }
.ac-group-modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 20px 22px 18px; border-bottom: 1px solid var(--line); background: color-mix(in srgb, var(--bg3) 74%, transparent); }
.ac-group-heading { display: flex; align-items: center; gap: 12px; min-width: 0; }
.ac-group-heading-icon, .ac-group-row-icon, .ac-group-empty-icon { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; border: 1px solid color-mix(in srgb, var(--accent) 45%, var(--line)); background: color-mix(in srgb, var(--accent) 15%, transparent); color: var(--accent); font-weight: 700; }
.ac-group-heading-icon { width: 38px; height: 38px; border-radius: 11px; font-size: 13px; }
.ac-group-modal-head .cr-modal-title { margin: 0 0 5px; font-size: 16px; }
.ac-group-modal-desc { color: var(--fg-dim); font-size: 11.5px; line-height: 1.5; }
.ac-group-modal-close { width: 30px; height: 30px; padding: 0; border: 1px solid transparent; border-radius: 8px; background: transparent; color: var(--fg-dim); font-size: 22px; line-height: 1; cursor: pointer; }
.ac-group-modal-close:hover { border-color: var(--line); background: var(--bg3); color: var(--fg); }
.ac-group-create-card { margin: 18px 22px 16px; padding: 14px 15px; border: 1px solid var(--line); border-radius: 11px; background: var(--bg); }
.ac-group-create-copy { display: flex; align-items: baseline; gap: 9px; margin-bottom: 10px; }
.ac-group-create-copy strong { color: var(--fg); font-size: 12.5px; }
.ac-group-create-copy span { color: var(--fg-dim); font-size: 10.5px; }
.ac-group-create { display: flex; gap: 9px; }
.ac-group-create input { flex: 1; min-width: 0; height: 34px; box-sizing: border-box; padding: 0 11px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg2); color: var(--fg); outline: none; }
.ac-group-create input:focus { border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 14%, transparent); }
.ac-group-create button { flex: 0 0 auto; white-space: nowrap; }
.ac-group-list-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 22px 9px; color: var(--fg); font-size: 12px; font-weight: 650; }
.ac-group-summary { color: var(--fg-dim); font-size: 10.5px; font-weight: 400; }
.ac-group-list { display: grid; gap: 9px; min-width: 0; min-height: 110px; max-height: 52vh; overflow-x: hidden; overflow-y: auto; padding: 0 22px 18px; }
.ac-group-row { display: grid; grid-template-columns: 34px minmax(180px, 1fr) minmax(250px, auto) auto; gap: 12px; align-items: center; padding: 12px 13px; border: 1px solid var(--line); border-radius: 11px; background: var(--bg); transition: border-color .15s, background .15s; }
.ac-group-row:hover { border-color: color-mix(in srgb, var(--accent) 34%, var(--line)); background: color-mix(in srgb, var(--accent) 4%, var(--bg)); }
.ac-group-row-icon { width: 32px; height: 32px; border-radius: 9px; font-size: 10.5px; }
.ac-group-name-field { display: grid; gap: 5px; min-width: 0; }
.ac-group-name-field > span { color: var(--fg-dim); font-size: 9.5px; }
.ac-group-name-field input { width: 100%; min-width: 0; height: 32px; box-sizing: border-box; padding: 0 9px; border: 1px solid var(--line); border-radius: 7px; background: var(--bg2); color: var(--fg); outline: none; }
.ac-group-name-field input:focus { border-color: var(--accent); }
.ac-group-manager-stats { padding: 6px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg2); }
.ac-group-actions { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.ac-group-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 130px; border: 1px dashed var(--line); border-radius: 11px; color: var(--fg-dim); }
.ac-group-empty-icon { width: 34px; height: 34px; margin-bottom: 8px; border-radius: 10px; font-size: 11px; }
.ac-group-empty strong { margin-bottom: 4px; color: var(--fg); font-size: 12.5px; }
.ac-group-empty > span:last-child { font-size: 10.5px; }
.ac-group-modal-foot { display: flex; align-items: center; gap: 8px; padding: 12px 22px; border-top: 1px solid var(--line); background: color-mix(in srgb, var(--bg3) 58%, transparent); }
.ac-group-hint-icon { display: inline-flex; align-items: center; justify-content: center; width: 17px; height: 17px; border: 1px solid var(--line); border-radius: 50%; color: var(--fg-dim); font-size: 10px; font-weight: 700; }
.ac-group-hint { color: var(--fg-dim); font-size: 10.5px; }
.ac-selection-note { padding: 3px 8px; border: 1px solid color-mix(in srgb, var(--orange) 42%, var(--line)); border-radius: 999px; background: color-mix(in srgb, var(--orange) 11%, transparent); color: var(--orange); font-size: 10px; white-space: nowrap; }
.ac-selection-note[hidden] { display: none; }
#panel-accounts .reg-selbar button:disabled, #panel-accounts .reg-selbar select:disabled { opacity: .38; cursor: not-allowed; filter: saturate(.5); }
@media (max-width: 680px) {
  .ac-group-modal-head { padding: 16px; }
  .ac-group-create-card { margin: 14px 16px; }
  .ac-group-list-head { padding: 0 16px 8px; }
  .ac-group-list { padding: 0 16px 14px; }
  .ac-group-row { grid-template-columns: 30px minmax(0, 1fr); gap: 9px; }
  .ac-group-manager-stats { grid-column: 2; justify-self: start; }
  .ac-group-actions { grid-column: 2; }
  .ac-group-modal-foot { padding: 11px 16px; }
}
@media (max-width: 900px) {
  .ac-group-section-inner { flex-wrap: wrap; }
  .ac-group-stats { flex: 1 0 100%; margin-left: 25px; justify-content: flex-start; }
}
.lg-auto input { margin: 0; }
.bub-text { white-space: pre-wrap; word-break: break-word; color: var(--fg); }
.bub-err { color: var(--red); font-size: 11px; margin-top: 3px; }
.bub-meta { font-size: 10.5px; color: var(--fg-dim); margin-top: 3px; text-align: right; }
.bub-meta .ok { color: var(--green); } .bub-meta .err { color: var(--red); } .bub-meta .dim { color: var(--fg-dim); }
.lg-input-row { display: flex; gap: 8px; padding: 10px 16px; border-top: 1px solid var(--line); }
.lg-input-row textarea { flex: 1; resize: none; height: 46px; background: var(--bg); border: 1px solid var(--line); border-radius: 8px; color: var(--fg); padding: 8px 10px; font-family: inherit; font-size: 13px; outline: none; }
.lg-input-row textarea:focus { border-color: var(--accent); }
.lg-input-row button { padding: 0 22px; }

/* 数据号登录顶部：左「代理配置」｜ 右「账号监控(redis)」，中间竖线分隔，各自内部换行 */
.lg-top { display: flex; align-items: stretch; }
.lg-top .reg-config { flex-wrap: wrap; }
.lg-top .lg-proxycfg { flex: 1 1 0; min-width: 0; }
.lg-top .lg-recv { flex: 1 1 0; min-width: 0; align-items: flex-start; gap: 18px; border-left: 1px solid var(--line); padding-left: 28px; }
.lg-recv > .cfg-sep { white-space: nowrap; }
/* redis 字段行：占满本块剩余宽度、不换行、整体靠右紧挨按钮 */
.rd-row { flex: 1 1 auto; min-width: 0; display: flex; flex-wrap: nowrap; align-items: flex-end; justify-content: flex-end; gap: 10px; }
.rd-row .fld.xs input { width: 64px; }
.rd-row .fld.grow { flex: 0 1 240px; min-width: 120px; }
.rd-row .fld.grow input { width: 100%; }
.rd-row #rd-connect { white-space: nowrap; }
/* 账号编辑框在左（窄一些、竖向占满整行高度、可向下拉伸）；商业号/按钮竖向排在右侧一列 */

/* 全局 Redis 订阅控件（顶栏） */
#redis-bar { position: relative; margin-left: auto; align-self: center; padding-bottom: 2px; }
.redis-chip { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; padding: 5px 12px; border-radius: 16px; cursor: pointer; background: var(--bg3); border: 1px solid var(--line); color: var(--fg-dim); white-space: nowrap; }
.redis-chip:hover { border-color: var(--accent); }
.redis-chip .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--fg-dim); flex: 0 0 auto; }
.redis-chip.on { color: var(--green); border-color: color-mix(in srgb, var(--green) 45%, transparent); }
.redis-chip.on .dot { background: var(--green); box-shadow: 0 0 0 3px color-mix(in srgb, var(--green) 22%, transparent); }
.redis-chip.err { color: var(--red); border-color: color-mix(in srgb, var(--red) 45%, transparent); }
.redis-chip.err .dot { background: var(--red); }
.redis-pop { position: absolute; right: 0; top: calc(100% + 6px); z-index: 60; width: 300px; background: var(--bg2); border: 1px solid var(--line); border-radius: 10px; padding: 14px; box-shadow: 0 12px 40px rgba(0,0,0,.4); }
.redis-pop[hidden] { display: none; }
.redis-pop-title { font-size: 13px; font-weight: 700; color: var(--fg); margin-bottom: 10px; }
.redis-pop-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 12px; }
.redis-pop-grid .fld.grow { grid-column: 1 / -1; }
.redis-pop-grid .fld span { font-size: 11px; color: var(--fg-dim); }
.redis-pop-grid input { width: 100%; box-sizing: border-box; }
.redis-auto { display: flex; align-items: center; gap: 7px; font-size: 12px; color: var(--fg-dim); margin-bottom: 10px; cursor: pointer; }
.redis-auto input { margin: 0; }
.redis-pop-foot { display: flex; align-items: center; gap: 10px; }

.rd-status { font-size: 11.5px; padding: 3px 9px; border-radius: 6px; white-space: nowrap; }
.rd-status.off { color: var(--fg-dim); background: var(--bg3); border: 1px solid var(--line); }
.rd-status.on { color: var(--green); background: color-mix(in srgb, var(--green) 16%, transparent); border: 1px solid color-mix(in srgb, var(--green) 40%, transparent); }
.rd-status.err { color: var(--red); background: color-mix(in srgb, var(--red) 14%, transparent); border: 1px solid color-mix(in srgb, var(--red) 40%, transparent); }
.lg-rawlog-wrap { border-top: 1px solid var(--line); }
.lg-rawlog-wrap > summary { padding: 6px 16px; font-size: 11.5px; color: var(--fg-dim); cursor: pointer; user-select: none; }
.lg-rawlog { max-height: 240px; overflow-y: auto; padding: 4px 16px 8px; font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 11px; line-height: 1.5; color: var(--fg-dim); }
.lg-rawlog .rl { white-space: pre-wrap; word-break: break-all; border-bottom: 1px dashed var(--line); padding: 2px 0; }
.lg-rawlog .rl .rl-ch { color: var(--accent); }

/* ---------- 号段注册 ---------- */
.seg-wrap { max-width: 640px; margin: 0 auto; padding: 32px 28px; }
.seg-form {
  display: flex;
  gap: 14px;
  align-items: flex-end;
  margin-top: 18px;
}
.seg-form .fld { display: flex; flex-direction: column; gap: 3px; }
.seg-form .fld span { font-size: 11px; color: var(--fg-dim); }
.seg-form .fld input {
  padding: 8px 10px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 6px;
  color: var(--fg);
  outline: none;
}
.seg-form .fld input:focus { border-color: var(--accent); }
.seg-form .fld.sm input { width: 90px; }
.seg-preview { margin-top: 14px; font-size: 12.5px; color: var(--fg-dim); font-family: var(--mono); }

/* ---------- 设置面板 ---------- */
.settings-wrap { max-width: 640px; margin: 0 auto; padding: 32px 28px; }
.settings-title { font-size: 20px; font-weight: 700; margin: 0 0 24px; color: var(--fg); }
.settings-section { margin-bottom: 28px; }
.settings-btnrow { display: flex; gap: 10px; flex-wrap: wrap; }
.settings-label { font-size: 14px; font-weight: 600; color: var(--fg); margin-bottom: 2px; }
.settings-desc { font-size: 12px; color: var(--fg-dim); margin-bottom: 12px; }

/* 网页版隐藏「服务地址 / 连接」自助配置（改由管理员面板按用户下发） */
body.web #svc-cfg-section { display: none; }

/* 与服务器连接断开时的顶部告警条 */
#wa-conn-banner {
  position: fixed; top: 0; left: 0; right: 0; z-index: 9999;
  background: var(--red, #d9534f); color: #fff;
  text-align: center; font-size: 13px; font-weight: 500; line-height: 1.4;
  padding: 8px 14px; box-shadow: 0 2px 10px rgba(0, 0, 0, .3);
  animation: wa-conn-in .2s ease-out;
}
@keyframes wa-conn-in { from { transform: translateY(-100%); } to { transform: translateY(0); } }

/* 管理员：只保留「用户管理 + 设置」两个标签，隐藏全部操作页标签 */
body.is-admin .tab[data-tab="register"],
body.is-admin .tab[data-tab="regcenter"],
body.is-admin .tab[data-tab="accounts"],
body.is-admin .tab[data-tab="import"],
body.is-admin .tab[data-tab="chatroom"],
body.is-admin .tab[data-tab="bulk"],
body.is-admin .tab[data-tab="warm"],
body.is-admin .tab[data-tab="config"],
body.is-admin .tab[data-tab="stats"] { display: none; }
/* 管理员设置页不显示「清空缓存 / 清空所有数据并重置」等危险操作 */
body.is-admin .admin-hide { display: none; }

/* ===== 用户管理视图（左列表 + 右配置/统计） ===== */
.admin-wrap { display: flex; gap: 20px; align-items: flex-start; }
.admin-side { flex: 0 0 200px; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; background: var(--bg2); }
.admin-side-h { padding: 10px 14px; font-size: 12px; font-weight: 600; color: var(--fg-dim); border-bottom: 1px solid var(--line); }
.admin-user-list { list-style: none; margin: 0; padding: 6px; max-height: 70vh; overflow: auto; }
.admin-user-item { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 9px 11px; border-radius: 7px; cursor: pointer; font-size: 14px; color: var(--fg); }
.admin-user-item:hover { background: color-mix(in srgb, var(--fg-dim) 14%, transparent); }
.admin-user-item.active { background: color-mix(in srgb, var(--accent) 18%, transparent); color: var(--fg); }
.admin-user-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-user-tag { flex: none; font-size: 10px; padding: 1px 6px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 22%, transparent); color: var(--accent); }
.admin-add { padding: 8px; border-top: 1px solid var(--line); }
.admin-add-toggle { width: 100%; border: 1px dashed var(--line); background: transparent; color: var(--fg-dim); border-radius: 7px; padding: 8px; font-size: 13px; cursor: pointer; }
.admin-add-toggle:hover { color: var(--fg); border-color: var(--accent); }

/* 删除用户按钮（行内，悬停显示；armed=3 秒内待二次确认，红底） */
.admin-user-del { flex: none; border: 0; background: transparent; color: var(--fg-dim); font-size: 13px; line-height: 1; padding: 3px 7px; border-radius: 6px; cursor: pointer; opacity: .45; transition: opacity .12s, background .12s, color .12s; }
.admin-user-item:hover .admin-user-del { opacity: .9; }
.admin-user-del:hover { background: color-mix(in srgb, var(--red) 18%, transparent); color: var(--red); opacity: 1; }
.admin-user-del.armed { opacity: 1; background: var(--red); color: #fff; font-size: 11px; padding: 3px 9px; }

/* 已删除（归档）用户列表 */
.admin-archived { border-top: 1px solid var(--line); }
.admin-archived .admin-side-h { border-bottom: 1px solid var(--line); }
.admin-archived-list { list-style: none; margin: 0; padding: 6px; max-height: 30vh; overflow: auto; }
.admin-arch-item { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 8px 6px 11px; }
.admin-arch-info { display: flex; flex-direction: column; min-width: 0; }
.admin-arch-name { font-size: 13px; color: var(--fg); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-arch-time { font-size: 10.5px; color: var(--fg-dim); }
.admin-arch-restore { flex: none; border: 1px solid var(--line); background: transparent; color: var(--accent); font-size: 12px; padding: 3px 10px; border-radius: 6px; cursor: pointer; }
.admin-arch-restore:hover { background: color-mix(in srgb, var(--accent) 16%, transparent); border-color: var(--accent); }

/* 添加用户 / 改密弹窗 */
.admin-add-box { width: 360px; }
.admin-pwd-user { color: var(--accent); font-weight: 600; }
.admin-add-box input { width: 100%; box-sizing: border-box; padding: 8px 10px; border-radius: 7px; border: 1px solid var(--line); background: var(--bg); color: var(--fg); font-size: 13px; outline: none; }
.admin-add-box input:focus { border-color: var(--accent); }
.admin-add-msg:not(:empty) { font-size: 12px; color: var(--red); margin: -4px 0 12px; }

.admin-main { flex: 1; min-width: 0; }
.admin-main-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.admin-cur-user { font-size: 17px; font-weight: 600; color: var(--fg); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-subtabs { display: flex; gap: 4px; flex: none; background: var(--bg2); border: 1px solid var(--line); border-radius: 8px; padding: 3px; }
.admin-subtab { border: 0; background: transparent; color: var(--fg-dim); font-size: 13px; padding: 6px 16px; border-radius: 6px; cursor: pointer; }
.admin-subtab.active { background: var(--accent); color: #fff; }
.admin-sub { display: none; }
.admin-sub.active { display: block; }

/* 配置子页表单 */
.admin-cfg { display: flex; flex-direction: column; gap: 12px; max-width: 560px; }
.admin-cfg .fld input, .admin-cfg .fld select { width: 100%; box-sizing: border-box; }
.admin-redis-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.admin-redis-grid .fld.grow { grid-column: 1 / -1; }
.admin-redis-auto { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--fg-dim); }
.admin-redis-status { display: flex; align-items: center; gap: 10px; min-height: 54px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg2); }
.admin-redis-status.ok { border-color: color-mix(in srgb, var(--green) 42%, var(--line)); background: color-mix(in srgb, var(--green) 9%, var(--bg2)); }
.admin-redis-status.warn { border-color: color-mix(in srgb, var(--orange) 45%, var(--line)); background: color-mix(in srgb, var(--orange) 9%, var(--bg2)); }
.admin-redis-status.error { border-color: color-mix(in srgb, var(--red) 42%, var(--line)); background: color-mix(in srgb, var(--red) 8%, var(--bg2)); }
.admin-redis-dot { width: 9px; height: 9px; flex: 0 0 auto; border-radius: 50%; background: var(--fg-dim); }
.admin-redis-status.ok .admin-redis-dot { background: var(--green); box-shadow: 0 0 0 3px color-mix(in srgb, var(--green) 20%, transparent); }
.admin-redis-status.warn .admin-redis-dot { background: var(--orange); box-shadow: 0 0 0 3px color-mix(in srgb, var(--orange) 20%, transparent); }
.admin-redis-status.error .admin-redis-dot { background: var(--red); box-shadow: 0 0 0 3px color-mix(in srgb, var(--red) 18%, transparent); }
.admin-redis-status-copy { flex: 1; min-width: 0; }
.admin-redis-status-head { display: flex; align-items: baseline; gap: 8px; font-size: 12px; color: var(--fg-dim); }
.admin-redis-status-head strong { color: var(--fg); font-size: 12.5px; }
.admin-redis-status.ok .admin-redis-status-head strong { color: var(--green); }
.admin-redis-status.warn .admin-redis-status-head strong { color: var(--orange); }
.admin-redis-status.error .admin-redis-status-head strong { color: var(--red); }
.admin-redis-status-detail { margin-top: 3px; overflow: hidden; color: var(--fg-dim); font-family: var(--mono); font-size: 10.5px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.admin-redis-status #admin-rd-check { flex: 0 0 auto; }
.admin-tabs-fld { border-top: 1px solid var(--line); padding-top: 12px; }
.admin-tabs-h { font-size: 12px; color: var(--fg-dim); margin-bottom: 8px; }
.admin-tabs-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px 14px; }
.admin-tabs-grid label { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--fg); cursor: pointer; }
.admin-cfg-foot { display: flex; align-items: center; gap: 10px; margin-top: 2px; }
.admin-cfg-foot .spacer { flex: 1; }
.admin-cfg-msg { font-size: 12px; color: var(--fg-dim); }

.count {
  margin-top: 6px;
  font-size: 11px;
  color: var(--fg-dim);
}


.fld { display: flex; flex-direction: column; gap: 3px; }
.fld span { font-size: 11px; color: var(--fg-dim); }
.fld input, .sms-provider-grid .fld select, select.ui-select {
  padding: 7px 10px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 6px;
  color: var(--fg);
  outline: none;
}
.fld input:focus, .sms-provider-grid .fld select:focus, select.ui-select:focus { border-color: var(--accent); }
.fld.base { flex: 1; }
.fld.token { flex: 1; }

button.secondary {
  padding: 8px 14px;
  background: var(--bg3);
  color: var(--fg);
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 13px;
  cursor: pointer;
  white-space: nowrap;
  transition: border-color .12s, background .12s, transform .05s;
}
button.secondary:hover { border-color: var(--accent); background: color-mix(in srgb, var(--bg3) 70%, var(--accent) 30%); }
button.secondary:active { transform: translateY(1px); }
button.secondary.danger { color: var(--red); border-color: color-mix(in srgb, var(--red) 45%, var(--line)); }
button.secondary.danger:hover { color: #fff; background: var(--red); border-color: var(--red); }
button.secondary:disabled { opacity: .45; cursor: not-allowed; }

/* 账号池布局；按钮、表格、筛选和模态继承登记的工作台控件。 */
#panel-accountpool.panel.active { display:flex; flex-direction:column; gap:12px; padding:14px 16px; position:relative; }
.pool-toolbar { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.pool-source-field { margin:0; max-width:100%; }
.pool-source-field select { width:200px; min-width:0; }
.pool-counts { margin-left:auto; }
#panel-accountpool [hidden] { display:none !important; }
#pool-table-wrap { position:relative; }
#pool-table-wrap table { min-width:850px; table-layout:fixed; }
#pool-table-wrap .pool-owner { overflow:hidden; text-overflow:ellipsis; }
#pool-table-wrap th .col-search { display:block; margin:6px 0 0; width:100%; }
#pool-table-wrap th .status-filter { margin-top:6px; height:24px; }
#pool-empty { top:110px; padding:0 16px; display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:12px; }
#pool-empty button { pointer-events:auto; }
#pool-empty-text { overflow-wrap:anywhere; }
#pool-import-error { color:var(--red); overflow-wrap:anywhere; }
#pool-modal .cr-modal-foot { justify-content:flex-end; flex-wrap:wrap; }
#pool-modal .cr-modal-box { max-width:calc(100% - 32px); }
@media(max-width:660px) { .pool-counts { margin-left:0; width:100%; } }

.method {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 700;
  color: var(--green);
  background: rgba(76,175,114,.15);
  padding: 2px 7px;
  border-radius: 4px;
}
.path { font-family: var(--mono); font-size: 14px; }
.summary { color: var(--fg-dim); font-size: 12px; }

.mini {
  background: var(--bg3);
  color: var(--fg-dim);
  border: 1px solid var(--line);
  border-radius: 5px;
  padding: 3px 9px;
  cursor: pointer;
  font-size: 11px;
  transition: color .12s, border-color .12s, background .12s;
}
.mini:hover { color: var(--fg); border-color: var(--accent); background: color-mix(in srgb, var(--bg3) 75%, var(--accent) 25%); }
.mini:active { transform: translateY(1px); }
.mini.danger { color: var(--red); border-color: color-mix(in srgb, var(--red) 45%, var(--line)); }
.mini.danger:hover { color: #fff; background: var(--red); border-color: var(--red); }
/* 停止按钮：实心红色 */
#stop-all { background: var(--red); border-color: var(--red); color: #fff; }
#stop-all:hover { background: color-mix(in srgb, var(--red) 85%, #000); border-color: color-mix(in srgb, var(--red) 85%, #000); }
#stop-all:disabled { opacity: .5; }

textarea {
  flex: 1;
  resize: none;
  background: var(--bg);
  color: var(--fg);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 10px;
  font-family: var(--mono);
  font-size: 12.5px;
  line-height: 1.5;
  outline: none;
  tab-size: 2;
}
textarea:focus { border-color: var(--accent); }
/* ---------- 响应区 ---------- */

.resp-head {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 11px;
  color: var(--fg-dim);
  margin-bottom: 6px;
}
.status { font-family: var(--mono); font-weight: 700; }
.status.ok { color: var(--green); }
.status.err { color: var(--red); }
.time { color: var(--fg-dim); }

.hint { color: var(--fg-dim); }

/* JSON 高亮 */
.j-key { color: #7fd3ff; }
.j-str { color: #b5e08f; }
.j-num { color: #d6a04a; }
.j-bool { color: #c98fff; }
.j-null { color: #e0586b; }

:root[data-theme="light"] .j-key { color: #2563a6; }
:root[data-theme="light"] .j-str { color: #3f7d3f; }
:root[data-theme="light"] .j-num { color: #b8842f; }
:root[data-theme="light"] .j-bool { color: #8a5cc7; }
:root[data-theme="light"] .j-null { color: #c5505a; }

/* ================= 批量注册面板 ================= */
/* 号段生成行（内联在配置区下方） */
.reg-seg {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 12px;
  align-items: flex-end;
  padding: 10px 16px;
  background: var(--bg2);
  border-bottom: 1px solid var(--line);
}
.reg-seg .row-label { align-self: center; font-size: 11px; font-weight: 700; letter-spacing: .4px; color: var(--fg-dim); text-transform: uppercase; }
.reg-seg .fld > span { font-size: 10.5px; color: var(--fg-dim); }
.reg-seg .fld input { height: 32px; padding: 0 10px; background: var(--bg); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); font-size: 13px; outline: none; }
.reg-seg .fld input:focus { border-color: var(--accent); }
.reg-seg .fld.sm input { width: 90px; }
.reg-seg .fld.grow { flex: 1; min-width: 200px; }
.reg-seg .fld.grow input { width: 100%; }
.reg-seg .seg-preview { flex-basis: 100%; font-size: 11px; color: var(--fg-dim); font-family: var(--mono); }

/* 配置区（基础 + SIM + 代理）统一外观 */
.reg-config,
.reg-proxy {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 18px;
  padding: 14px 16px;
  background: var(--bg2);
  border-bottom: 1px solid var(--line);
}
.reg-config { align-items: flex-start; flex-wrap: nowrap; }
.reg-proxy { align-items: flex-end; }

/* 配置区基础字段 */
.reg-left { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.reg-basic { display: flex; flex-wrap: wrap; gap: 12px 18px; align-items: flex-end; }
.reg-config-toggle {
  align-self: flex-end;
  height: 32px;
  padding: 0 12px;
  border: 1px dashed color-mix(in srgb, var(--accent) 45%, var(--line));
  border-radius: 7px;
  background: transparent;
  color: var(--accent);
  font-size: 12px;
  white-space: nowrap;
  cursor: pointer;
}
.reg-config-toggle:hover,
.reg-config-toggle:focus-visible {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 12%, transparent);
  outline: none;
}

.reg-config .fld > span {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: .2px;
  color: var(--fg-dim);
  white-space: nowrap;
}
.reg-config .fld input:not([type="checkbox"]),
.reg-config .fld select {
  height: 32px;
  padding: 0 10px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 7px;
  color: var(--fg);
  font-size: 13px;
  outline: none;
}
.reg-config .fld select { cursor: pointer; }
.reg-config .fld input:focus,
.reg-config .fld select:focus { border-color: var(--accent); }

.reg-config .fld.sm input { width: 96px; }
.reg-config .fld.xs input { width: 64px; }
.reg-config .fld.md input { width: 150px; }
.reg-config .fld.base input { width: 240px; }
.reg-config .fld.grow { flex: 1; min-width: 320px; }
.reg-config .fld.grow input { width: 100%; }

.chk { flex-direction: row; align-items: center; gap: 8px; }
.chk input { width: auto; }
.chk > span { font-size: 12.5px !important; font-weight: 600; color: var(--fg) !important; }

/* 默认代理模板说明（勾选框上方，不单独占栏） */
.proxy-hint {
  flex-basis: 100%;
  font-size: 11px;
  color: var(--fg-dim);
  margin-bottom: 2px;
}
.proxy-hint b { color: var(--fg); }

.reg-proxy .fld.xs input { width: 74px; }
.reg-proxy .fld.sm input { width: 134px; }
.reg-proxy .fld.grow { flex: 1; min-width: 220px; max-width: 360px; }
.reg-proxy .fld.grow input { width: 100%; }
.reg-proxy .checkip-box {
  margin-left: auto;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
}
.ip-result {
  font-size: 11px;
  font-family: var(--mono);
  color: var(--fg-dim);
  text-align: right;
  max-width: 360px;
  min-height: 14px;
}
.ip-result.ok { color: var(--green); }
.ip-result.err { color: var(--red); }
.tpl-preview {
  flex-basis: 100%;
  font-size: 11px;
  color: var(--fg-dim);
  font-family: var(--mono);
  padding-top: 4px;
}

/* 导入行：左「号段注册」│ 右「导入号码」，SIM 风竖线分隔、水平并排 */
.reg-import {
  display: flex;
  gap: 16px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--line);
  align-items: stretch;
}
/* 三块（号段注册 / 获取号码 / 导入号码）按 1:3:2 分行宽（号段砍半，匀给获取号码） */
.imp-sec { display: flex; align-items: stretch; flex: 1 1 0; min-width: 0; }
.reg-import .imp-sec:nth-child(1) { flex: 1 1 0; } /* 号段注册 1/6 */
.reg-import .imp-sec:nth-child(2) { flex: 3 1 0; } /* 获取号码 1/2 */
.reg-import .imp-sec:nth-child(3) { flex: 2 1 0; } /* 导入号码 1/3 */
.imp-sec > .cfg-sep {
  display: flex; align-items: flex-start; /* 标签顶部对齐，拖动文本框时不随行高变化而移动 */
  padding-left: 14px; margin-right: 12px;
  border-left: 1px solid var(--line);
  font-size: 10.5px; font-weight: 700; letter-spacing: .5px;
  color: var(--fg-dim); text-transform: uppercase; white-space: nowrap;
}
.imp-sec-body { flex: 1; min-width: 0; }
/* 第一块（号段注册）最左侧那条竖线多余，去掉 */
.reg-import .imp-sec:first-child > .cfg-sep { border-left: none; padding-left: 0; margin-left: 0; }

/* 号段表单竖排；接码平台按列排列，每列最多三个入口。 */
.seg-body { width: 100%; display: flex; flex-direction: column; gap: 8px; }
.fetch-body { width: 100%; display: grid; grid-auto-flow: column; grid-template-rows: repeat(3, auto); grid-auto-columns: minmax(0, 1fr); gap: 8px; }
.fetch-body > .secondary { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
.seg-body .fld > span, .fetch-body .fld > span { font-size: 10.5px; color: var(--fg-dim); }
.seg-body .fld input, .fetch-body .fld input { width: 100%; height: 32px; padding: 0 10px; background: var(--bg); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); font-size: 13px; outline: none; }
.seg-body .fld input:focus, .fetch-body .fld input:focus { border-color: var(--accent); }
.fetch-body .hint-fmt { font-size: 11px; color: var(--fg-dim); line-height: 1.4; }
.fetch-body .secondary { width: 100%; }
.seg-row2 { display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; }
.seg-row2 .fld.sm { flex: 0 0 auto; }
.seg-row2 .fld.sm input { width: 90px; }
.seg-row2 button { white-space: nowrap; flex: 1 1 auto; }
.seg-body .seg-preview { font-size: 11px; color: var(--fg-dim); font-family: var(--mono); }

/* 右侧导入 */
.imp-body { display: flex; gap: 10px; align-items: stretch; }
.imp-body textarea { flex: 1; min-width: 0; align-self: stretch; min-height: 110px; resize: vertical; overflow: auto; white-space: pre; }
.imp-body .import-side { display: flex; flex-direction: column; gap: 7px; flex: 0 0 120px; width: 120px; }
.imp-body .import-side .secondary, .imp-body .import-side .mini { width: 100%; text-align: center; }
.imp-body .hint-fmt { font-size: 11px; color: var(--fg-dim); line-height: 1.4; margin-top: auto; }

.reg-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 9px 16px;
  background: var(--bg2);
  border-bottom: 1px solid var(--line);
  flex-wrap: wrap;
}
.reg-actions .spacer { flex: 1; }
/* 批量按钮「待二次确认」态：高亮提示再点一次 */
button.armed { outline: 2px solid var(--accent); outline-offset: 1px; box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 35%, transparent); position: relative; }
button.armed.danger, #sel-del.armed { outline-color: #f15c6d; box-shadow: 0 0 0 3px rgba(241,92,109,.35); }
.reg-actions .stat { font-size: 11px; color: var(--fg-dim); white-space: nowrap; }
.reg-actions .bar-div { width: 1px; align-self: stretch; min-height: 20px; background: var(--line); margin: 0 6px; }
.reg-actions .sel-label { font-size: 11px; color: var(--fg-dim); margin-left: 2px; }

/* 统计：内联在操作栏，紧挨导出按钮 */
/* 统计 + 导入/导出 同处一行、右对齐(靠近自动化按钮所在的右侧) */
.reg-summary-row { display: inline-flex; align-items: center; flex-wrap: nowrap; gap: 8px; }
#reg-stats {
  display: inline-flex; align-items: center; flex-wrap: wrap; gap: 6px;
  font-size: 11.5px; color: var(--fg-dim);
}
/* 总数 / 进行中：小药丸 */
#reg-stats .st { display: inline-flex; align-items: center; gap: 5px; background: var(--bg); border: 1px solid var(--line); border-radius: 999px; padding: 2px 10px; }
#reg-stats .st-k { color: var(--fg-dim); }
#reg-stats .st-v { font-weight: 600; font-variant-numeric: tabular-nums; color: var(--fg); }
#reg-stats .st-v.info { color: var(--accent); }
/* 请求码 / 提交码 分组 */
#reg-stats .st-grp { color: var(--fg); font-weight: 600; }
#reg-stats .st-nums { color: var(--fg-dim); }
#reg-stats .st-nums b { font-weight: 700; font-variant-numeric: tabular-nums; margin-left: 1px; color: var(--fg); }
#reg-stats .st-nums b.ok { color: var(--green); }
#reg-stats .st-nums b.err { color: var(--red); }
/* 成功率徽章：按高/中/低着色 */
#reg-stats .st-pct { font-weight: 700; font-variant-numeric: tabular-nums; border-radius: 999px; padding: 1px 8px; }
#reg-stats .st-pct.good { color: var(--green); background: color-mix(in srgb, var(--green) 16%, transparent); }
#reg-stats .st-pct.mid { color: var(--orange); background: color-mix(in srgb, var(--orange) 16%, transparent); }
#reg-stats .st-pct.low { color: var(--red); background: color-mix(in srgb, var(--red) 16%, transparent); }
#reg-stats .vsep { display: inline-block; width: 1px; height: 14px; background: var(--line); margin: 0 4px; vertical-align: middle; }
/* 共计统计与 请求码/提交码 统计之间留出间隔，避免混淆 */
#stat { margin-right: 4px; }

/* min-height:0 必须有：否则 flex 纵向布局里这个滚动容器会被内容撑高、不成为真正的内部滚动容器，
   sticky 表头的参照系就不对、固定不住。 */
.table-wrap { flex: 1; min-height: 0; overflow: auto; }
/* border-collapse 必须用 separate，否则 Chromium 下 sticky 表头会失效（折叠边框破坏 th 的 sticky） */
table.reg-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 12.5px; }
/* 批量注册表格：固定布局 + 列宽=各列之和（不随容器重分配，拖动只改当前列，像资源管理器）；超出裁剪 */
/* height:100% + 底部 filler 行：行少时表格撑满到窗口底（内容贴底），行多时正常滚动 */
#panel-register table.reg-table { table-layout: fixed; width: 100%; height: 100%; }
table.reg-table tbody tr.filler td { height: 100%; padding: 0; border: 0; background: transparent; }
#panel-register table.reg-table th, #panel-register table.reg-table td { overflow: hidden; }
#panel-register table.reg-table th,
#panel-accounts table.reg-table th,
table.workbench-table th,
#panel-bulk table.reg-table th { border-right: 1px solid var(--line); } /* 列分隔线（资源管理器风格） */
/* 全选框列(第一列)不要竖线分隔,且与手机号之间留更大间距 */
#panel-register table.reg-table th:first-child,
#panel-accounts table.reg-table th:first-child { border-right: none; }
#panel-register table.reg-table th:nth-child(2),
#panel-register table.reg-table td:nth-child(2) { padding-left: 18px; }
#panel-register table.reg-table td.mono { text-overflow: ellipsis; white-space: nowrap; }
#panel-register .row-detail { max-width: none; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* 空状态提示：表格区浮层（不受 fixed 表格布局影响） */
#panel-register .table-wrap { position: relative; }
.tbl-empty { position: absolute; top: 44px; left: 0; right: 0; text-align: center; color: var(--fg-dim); font-size: 13px; pointer-events: none; }
table.reg-table th, table.reg-table td {
  padding: 7px 8px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  white-space: nowrap;
}
table.reg-table th:first-child, table.reg-table td:first-child { padding-left: 16px; }
table.reg-table th:last-child, table.reg-table td:last-child { padding-right: 16px; }
table.reg-table th {
  position: sticky; top: 0;
  background: var(--bg3);
  color: var(--fg-dim);
  font-weight: 700;
  font-size: 11px;
  letter-spacing: .3px;
  text-transform: uppercase;
  z-index: 5;
  border-bottom: 1px solid var(--line);
}
.th-status { text-transform: none; }
.status-filter option { background: var(--bg2); }
/* 手机号 / 账号 列表头内的搜索框 */
#panel-register th .col-search,
#panel-accounts th .col-search,
table.workbench-table th .col-search,
#panel-bulk table.reg-table th .col-search { margin-left: 10px; height: 24px; width: 130px; background: var(--bg); border: 1px solid var(--line); border-radius: 5px; color: var(--fg); font-size: 11px; font-weight: 400; text-transform: none; letter-spacing: 0; padding: 2px 8px; outline: none; vertical-align: middle; }
#panel-register th .col-search:focus,
#panel-accounts th .col-search:focus,
table.workbench-table th .col-search:focus,
#panel-bulk table.reg-table th .col-search:focus { border-color: var(--accent); }
.status-filter, #panel-bulk table.reg-table .status-filter {
  display: block;
  margin-top: 0;
  width: 100%;
  background: var(--bg);
  color: var(--fg);
  border: 1px solid var(--line);
  border-radius: 5px;
  font-size: 11px;
  font-weight: 400;
  padding: 2px 4px;
  outline: none;
  cursor: pointer;
  text-transform: none;
}
table.reg-table input.row-sel, #sel-all { cursor: pointer; vertical-align: middle; }

.reg-selbar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 16px;
  background: var(--bg2);
  border-bottom: 1px solid var(--line);
  flex-wrap: wrap;
  font-size: 12px;
  color: var(--fg-dim);
}
.reg-selbar .sel-label { margin-left: 8px; }
.reg-selbar #sel-count { color: var(--fg); font-weight: 600; }
.reg-selbar .stat { font-size: 11px; color: var(--fg-dim); }
/* 统计文字配色：登录/分身共用（总数/在线/离线/封号） */
#ac-stats { font-size: 11px; color: var(--fg-dim); }
#ac-stats b { color: var(--fg); margin: 0 1px; }
#ac-stats b.ok { color: var(--green); }
#ac-stats b.dim { color: var(--fg-dim); }
#ac-stats b.err { color: var(--red); }
#ac-stats b.warn { color: var(--orange); }

/* 代理单元格：输入框 + 代理按钮并排 */
table.reg-table td.proxy-cell { white-space: nowrap; }
table.reg-table td.proxy-cell .c-proxy { width: calc(100% - 46px); }
table.reg-table td.proxy-cell .act-proxy { margin-left: 4px; vertical-align: middle; }
/* 操作列（最后一列）：所有按钮单行显示、紧凑，6 个按钮也放得下 */
#panel-register table.reg-table td:last-child { white-space: nowrap; }
#panel-register table.reg-table td:last-child .mini { padding: 3px 6px; margin-right: 2px; }

/* 导入帐号中心：按钮 + 下拉菜单（向上弹出，避免被工具条裁切） */
.reg-imp-wrap { position: relative; display: inline-block; }
.reg-imp-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 30;
  display: flex; flex-direction: column; min-width: 230px; padding: 4px;
  background: var(--bg2); border: 1px solid var(--line); border-radius: 8px; box-shadow: 0 6px 20px rgba(0,0,0,.28); }
.reg-imp-menu[hidden] { display: none; }
.import-group-picker { padding: 7px 8px 9px; margin-bottom: 3px; border-bottom: 1px solid var(--line); color: var(--fg-dim); font-size: 11px; }
.import-group-line { display: flex; gap: 6px; align-items: center; margin-top: 6px; }
.import-group-line select { flex: 1; min-width: 0; height: 30px; padding: 0 7px; border: 1px solid var(--line); border-radius: 6px; background: var(--bg); color: var(--fg); }
.import-group-create { display: flex; gap: 6px; margin-top: 6px; }
.import-group-create[hidden] { display: none; }
.import-group-create input { min-width: 0; flex: 1; height: 30px; box-sizing: border-box; padding: 0 8px; border: 1px solid var(--line); border-radius: 6px; background: var(--bg); color: var(--fg); }
.reg-imp-opt { display: block; width: 100%; text-align: left; padding: 7px 10px; border: 0; border-radius: 6px;
  background: transparent; color: var(--fg); font-size: 12.5px; cursor: pointer; }
.reg-imp-opt:hover { background: var(--bg3); }

/* 「注册中心」复用批量注册的任务与号码表，但只呈现取号/注册/导出能力。 */
#panel-register.reg-center-mode #pipe-btn,
#panel-register.reg-center-mode #pipe-pop,
#panel-register.reg-center-mode #import-center-menu .import-group-picker,
#panel-register.reg-center-mode #import-center-menu .reg-imp-opt[data-mode] { display: none !important; }
#panel-register.reg-center-mode #import-center-menu { min-width: 170px; }

/* 列宽可拖动手柄 */
/* 不要再给 th 设 position:relative：会覆盖上面的 position:sticky 导致表头不固定。
   sticky 本身就是定位元素，足以作为下面绝对定位手柄的包含块。 */
.col-resizer { position: absolute; top: 0; right: 0; width: 6px; height: 100%; cursor: col-resize; user-select: none; }
.col-resizer:hover { background: color-mix(in srgb, var(--accent) 60%, transparent); }
/* 贴左边界的手柄（用于最右的「操作」列：向左拖改操作列宽，代理列吸收） */
.col-resizer.left { right: auto; left: -3px; }

table.reg-table th[data-sort] { cursor: pointer; user-select: none; }
table.reg-table th[data-sort]:hover { color: var(--fg); }
table.reg-table th[data-sort]::after { content: ''; font-size: 9px; margin-left: 3px; color: var(--accent); }
table.reg-table th.sort-asc::after { content: '▲'; }
table.reg-table th.sort-desc::after { content: '▼'; }
#panel-bulk .bulk-date-sort, .table-sort { display:block;width:100%;border:0;border-radius:4px;background:none;padding:0;text-align:left;color:inherit;font:inherit;cursor:pointer;user-select:none; }
#panel-bulk .bulk-date-sort:hover, .table-sort:hover { color:var(--fg); }
#panel-bulk .bulk-date-sort:focus-visible, .table-sort:focus-visible { outline:2px solid var(--accent);outline-offset:3px; }
#panel-bulk .bulk-date-sort::after, .table-sort::after { content:'';font-size:9px;margin-left:3px;color:var(--accent); }
#panel-bulk .bulk-date-sort.sort-asc::after, .table-sort.sort-asc::after { content:'▲'; }
#panel-bulk .bulk-date-sort.sort-desc::after, .table-sort.sort-desc::after { content:'▼'; }
table.reg-table tbody tr.row-even td { background: color-mix(in srgb, var(--bg2) 35%, transparent); }

table.reg-table tbody tr:not(.vspacer):not(.filler):hover td { background: color-mix(in srgb, var(--accent) 9%, transparent); }
/* 勾选选中的行高亮 */
table.reg-table tbody tr.row-selected td { background: color-mix(in srgb, var(--accent) 16%, var(--bg)); }
/* 虚拟滚动占位行：只撑高度，无边框/背景/内边距 */
table.reg-table tbody tr.vspacer td { padding: 0; border: 0; background: transparent; }
table.reg-table td.mono { font-family: var(--mono); }
table.reg-table input.cell {
  width: 100%;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 4px;
  color: var(--fg);
  padding: 4px 6px;
  outline: none;
  font-family: var(--mono);
}
table.reg-table input.cell:focus { border-color: var(--accent); }
table.reg-table input.code { width: 90px; }
table.reg-table select.c-codetype,
table.reg-table select.c-acctype {
  width: 100%;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 4px;
  color: var(--fg);
  padding: 4px 4px;
  outline: none;
  cursor: pointer;
  font-size: 12px;
}
table.reg-table select.c-codetype:focus,
table.reg-table select.c-acctype:focus { border-color: var(--accent); }

/* ====== 统一状态药丸：同一语义=同一颜色，跨注册/登录/分身/群发通用 ====== */
.badge, .bulk-task-st {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 600;
  border: 1px solid transparent; /* 加同色边框让药丸在深色背景更醒目 */
}
/* 语义分组（带边框、提饱和度，便于一眼分辨）：
   idle 中性灰  → 待处理(描边)/离线(填充)/已释放/已拉黑/已停止
   progress 橙  → 进行中（检测/请求/提交/取码/登录/关联）
   wait 青      → 等待外部（已发码/待扫码）
   info 珊瑚    → 信息态（未封号/可注册）
   ok 绿        → 成功/在线/完成
   fail 红      → 失败
   ban 实心红   → 已封号    gone 灰删除线 → 已注销 */
.badge.pending, .bulk-task-st.pending { /* 待处理：描边态（未开始） */
  background: transparent; color: var(--fg-dim); border-color: color-mix(in srgb, var(--fg-dim) 38%, transparent);
}
.badge.offline, .badge.released, .badge.blacklisted, .bulk-task-st.stopped { /* 离线等：填充灰 */
  background: color-mix(in srgb, var(--fg-dim) 20%, transparent); color: var(--fg-dim); border-color: color-mix(in srgb, var(--fg-dim) 30%, transparent);
}
.badge.checking, .badge.requesting, .badge.submitting, .badge.gettingCode,
.badge.logging, .badge.linking, .badge.connecting,
.bulk-task-st.running {
  background: color-mix(in srgb, var(--orange) 22%, transparent); color: var(--orange); border-color: color-mix(in srgb, var(--orange) 48%, transparent);
}
.badge.queued { /* 排队中：浅蓝描边（等待放行，区别于 pending 灰描边 / requesting 橙填充） */
  background: color-mix(in srgb, #6ea0ff 12%, transparent); color: #6ea0ff; border-color: color-mix(in srgb, #6ea0ff 40%, transparent);
}
/* 密码框「查看密码」眼睛按钮：包裹层定位，眼睛叠在输入框右侧内 */
.pw-wrap { position: relative; display: inline-flex; align-items: center; width: 100%; }
.pw-wrap > input { width: 100%; padding-right: 28px; box-sizing: border-box; }
.pw-eye { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); background: none; border: 0; cursor: pointer; font-size: 13px; line-height: 1; opacity: .5; padding: 2px; }
.pw-eye:hover, .pw-eye.on { opacity: .95; }
.badge.codeSent, .badge.waitscan {
  background: color-mix(in srgb, var(--st-wait) 22%, transparent); color: var(--st-wait); border-color: color-mix(in srgb, var(--st-wait) 48%, transparent);
}
.badge.eligible, .badge.notbanned {
  background: color-mix(in srgb, var(--accent) 22%, transparent); color: var(--accent); border-color: color-mix(in srgb, var(--accent) 48%, transparent);
}
.badge.success,
.bulk-task-st.done {
  background: color-mix(in srgb, var(--green) 22%, transparent); color: var(--green); border-color: color-mix(in srgb, var(--green) 48%, transparent);
}
.badge.failed, .badge.ineligible, .bulk-task-st.failed {
  background: color-mix(in srgb, var(--red) 20%, transparent); color: var(--red); border-color: color-mix(in srgb, var(--red) 45%, transparent);
}
.badge.banned { background: var(--red); color: #fff; border-color: var(--red); }
.badge.removed { background: color-mix(in srgb, var(--red) 12%, transparent); color: color-mix(in srgb, var(--red) 70%, var(--fg-dim)); text-decoration: line-through; border-color: color-mix(in srgb, var(--red) 30%, transparent); }

.row-detail { color: var(--fg-dim); font-size: 11px; max-width: 320px; overflow: hidden; text-overflow: ellipsis; }

/* 状态感知操作列：主操作 + 详情 + ⋯ 溢出菜单 */
.ops-cell { white-space: nowrap; }
.mini.ops-primary { font-weight: 600; border-color: color-mix(in srgb, var(--accent) 55%, transparent); color: var(--accent); }
.mini.ops-primary:hover { background: color-mix(in srgb, var(--accent) 14%, transparent); }
.mini.ghost.act-menu { padding: 2px 7px; opacity: .65; font-weight: 700; letter-spacing: 1px; }
.mini.ghost.act-menu:hover { opacity: 1; }
.ops-busy { font-size: 11px; color: var(--orange); padding: 0 6px; }
.reg-ops-pop { position: fixed; z-index: 1000; background: var(--bg); border: 1px solid color-mix(in srgb, var(--fg-dim) 32%, transparent); border-radius: 8px; padding: 4px; min-width: 138px; box-shadow: 0 6px 24px rgba(0,0,0,.28); display: flex; flex-direction: column; gap: 1px; }
/* 修复:display:flex 会盖掉 [hidden] 的 display:none,导致浮层关不掉 */
.reg-ops-pop[hidden], .reg-edit-pop[hidden], .cfg-pop[hidden] { display: none; }
.reg-ops-pop .ops-item { display: block; width: 100%; text-align: left; background: none; border: 0; padding: 7px 11px; border-radius: 6px; font-size: 12px; color: var(--fg); cursor: pointer; }
.reg-ops-pop .ops-item:hover { background: color-mix(in srgb, var(--fg-dim) 16%, transparent); }
.reg-ops-pop .ops-item.danger { color: var(--red); }
.reg-ops-pop .ops-item.danger:hover { background: color-mix(in srgb, var(--red) 16%, transparent); }
/* 批量动作条：选择动作分组 + 选择感知（没选中时整组变灰，提示先勾选） */
.sel-group { display: inline-flex; align-items: center; gap: 4px; opacity: .42; transition: opacity .15s; }
.sel-group.has-sel { opacity: 1; }
.sel-div { width: 1px; height: 16px; background: color-mix(in srgb, var(--fg-dim) 30%, transparent); margin: 0 3px; }
/* 状态药丸前的小圆点（仅注册表，强化“语义色”一眼可辨） */
#panel-register .badge::before { content: ''; display: inline-block; width: 5px; height: 5px; border-radius: 50%; background: currentColor; margin-right: 5px; vertical-align: middle; opacity: .85; }

/* 号码来源：外面只显示三个并排按钮，点击展开对应来源（默认全收起，省纵向空间） */
#panel-register .reg-import.srcbtns { flex-direction: column; align-items: stretch; gap: 10px; }
.reg-src-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.reg-src-btns .src-btn { padding: 8px 18px; font-size: 13px; background: var(--bg); color: var(--fg); border: 1px solid var(--line); border-radius: 8px; cursor: pointer; }
.reg-src-btns .src-btn:hover { border-color: var(--accent); }
.reg-src-btns .src-btn.active { background: color-mix(in srgb, var(--accent) 16%, transparent); color: var(--accent); border-color: var(--accent); font-weight: 500; }
#panel-register .reg-import.srcbtns .imp-sec { display: none; flex: 1 1 auto; }
#panel-register .reg-import.srcbtns .imp-sec.src-active { display: flex; }
#panel-register .reg-import.srcbtns .imp-sec > .cfg-sep { display: none; }

/* ===== 注册页换肤 · pass1：向预览稿看齐（卡片化 + 更舒展，scoped 不影响其他页） ===== */
#panel-register.panel.active { gap: 12px; padding: 14px 16px; }
/* 顶部三块改成独立圆角卡片（原本是 flush + border-bottom 分隔） */
#panel-register .reg-config,
#panel-register .reg-import,
#panel-register .reg-actions { border: 1px solid var(--line); border-radius: 12px; }
/* 表格也卡片化，圆角裁掉内部直角 */
#panel-register .table-wrap, .workbench-table-wrap { border: 1px solid var(--line); border-radius: 12px; background: var(--bg2); }
#panel-register table.reg-table thead th,
table.workbench-table thead th,
#panel-bulk table.reg-table thead th { padding-top: 10px; padding-bottom: 10px; background: var(--bg2); }

/* ===== 账号中心：与批量注册保持一致的卡片化布局（圆角卡片 + 间距，scoped 只影响本页） ===== */
#panel-accounts.panel.active { gap: 12px; padding: 14px 16px; }
#panel-accounts .reg-config,
#panel-accounts .reg-selbar { border: 1px solid var(--line); border-radius: 12px; }
#panel-accounts .ac-command-card { display: flex; align-items: center; gap: 14px; padding: 12px 14px; }
.ac-actions-row { display: flex; align-items: center; gap: 8px; min-width: 0; flex-wrap: wrap; }
.ac-actions-row > button, .ac-actions-row > .reg-imp-wrap > button { height: 34px; padding: 0 13px; }
.ac-actions-row #ac-add { min-width: 118px; }
.ac-actions-row #ac-sel-del { margin-left: 2px; }
.ac-toolbar-stats { display: block; min-width: 0; margin-left: auto; padding: 0 2px; line-height: 1.55; text-align: right; white-space: nowrap; }
#panel-accounts .table-wrap { border: 1px solid var(--line); border-radius: 12px; background: var(--bg2); }
#panel-accounts table.reg-table thead th { padding-top: 10px; padding-bottom: 10px; background: var(--bg2); }
@media (max-width: 820px) {
  #panel-accounts .ac-command-card { align-items: stretch; flex-direction: column; }
  .ac-actions-row { align-items: stretch; }
  .ac-actions-row > button, .ac-actions-row > .reg-imp-wrap > button { height: 32px; }
  .ac-toolbar-stats { margin-left: 0; text-align: left; white-space: normal; }
}

/* ===== 批量注册：独立代理池弹窗 ===== */
#reg-sim-dialog { width: min(760px, calc(100vw - 32px)); max-width: calc(100vw - 32px); max-height: calc(100vh - 32px); padding: 0; border: 1px solid var(--line); border-radius: 12px; background: var(--bg2); color: var(--fg); box-shadow: 0 12px 40px rgba(0,0,0,.4); }
#reg-sim-dialog::backdrop { background: rgba(0,0,0,.5); }
#reg-sim-dialog[open] { display: flex; flex-direction: column; }
#reg-sim-dialog .reg-sim-content { padding: 18px; overflow: auto; min-height: 0; }
#reg-sim-dialog .reg-sim-modes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
#reg-sim-dialog .reg-sim-mode { display: flex; align-items: flex-start; gap: 10px; min-height: 78px; padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--bg); cursor: pointer; }
#reg-sim-dialog .reg-sim-mode:has(input:checked) { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, var(--bg)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent); }
#reg-sim-dialog .reg-sim-mode input { margin-top: 3px; accent-color: var(--accent); }
#reg-sim-dialog .reg-sim-mode span { display: flex; flex-direction: column; gap: 5px; }
#reg-sim-dialog .reg-sim-mode b { color: var(--fg); font-size: 14px; }
#reg-sim-dialog .reg-sim-mode small { color: var(--fg-dim); line-height: 1.5; }
#reg-sim-dialog .reg-sim-fields { display: grid; grid-template-columns: 120px 120px minmax(220px, 1fr); gap: 12px; margin-top: 16px; padding: 16px; border: 1px solid var(--line); border-radius: 10px; background: var(--bg); transition: opacity .16s ease; }
#reg-sim-dialog .reg-sim-fields.disabled { opacity: .48; }
#reg-sim-dialog .reg-sim-fields .fld { display: flex; flex-direction: column; gap: 6px; min-width: 0; color: var(--fg-dim); font-size: 12px; }
#reg-sim-dialog .reg-sim-fields input { width: 100%; min-width: 0; padding: 9px 10px; border: 1px solid var(--line); border-radius: 7px; background: var(--bg2); color: var(--fg); font: inherit; }
#reg-sim-dialog .reg-sim-fields input:focus { outline: none; border-color: var(--accent); }
#reg-sim-dialog .reg-sim-fields input:disabled { cursor: not-allowed; }
#reg-sim-dialog .hint { margin: 14px 0 0; color: var(--fg-dim); font-size: 12px; line-height: 1.6; }
#reg-sim-dialog .reg-pool-footer { display: flex; justify-content: flex-end; gap: 8px; flex-shrink: 0; padding: 14px 18px; border-top: 1px solid var(--line); }
#reg-sim-dialog .ac-group-modal-head { flex-shrink: 0; }
#reg-sim-open.active { border-color: var(--accent); color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, transparent); }

#reg-proxy-pool-dialog { width: min(1180px, calc(100vw - 32px)); max-width: calc(100vw - 32px); max-height: calc(100vh - 32px); padding: 0; border: 1px solid var(--line); border-radius: 12px; background: var(--bg2); color: var(--fg); box-shadow: 0 12px 40px rgba(0,0,0,.4); }
#reg-proxy-pool-dialog::backdrop { background: rgba(0,0,0,.5); }
#reg-proxy-pool-dialog[open] { display: flex; flex-direction: column; }
#reg-proxy-pool-dialog .reg-pool-content { padding: 16px 18px; overflow: auto; min-height: 0; }
#reg-proxy-pool-dialog .reg-pool-options { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
#reg-proxy-pool-dialog .reg-pool-options .fld { display: flex; align-items: center; gap: 8px; color: var(--fg-dim); font-size: 12px; }
#reg-proxy-pool-dialog .reg-pool-options input[type=text] { width: 72px; padding: 6px 8px; border: 1px solid var(--line); border-radius: 6px; background: var(--bg); color: var(--fg); }
#reg-proxy-pool-dialog .config-proxy-table { min-width: 980px; }
#reg-proxy-pool-dialog .config-proxy-address { width: 100%; background: transparent; color: var(--fg); border: 1px solid transparent; border-radius: 5px; padding: 7px 5px; font-family: var(--mono); }
#reg-proxy-pool-dialog .config-proxy-address:focus { border-color: var(--accent); background: var(--bg); }
#reg-proxy-pool-dialog .config-proxy-table-wrap { max-height: 44vh; }
#reg-proxy-pool-dialog .hint { font-size: 12px; color: var(--fg-dim); margin: 14px 0 0; line-height: 1.6; }
#reg-proxy-pool-dialog .reg-pool-footer { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 18px; border-top: 1px solid var(--line); }
#reg-proxy-pool-dialog .ac-group-modal-head, #reg-proxy-pool-dialog .reg-pool-footer { flex-shrink: 0; }
#reg-pool-import-area[hidden] { display: none; }
#reg-proxy-pool-dialog select { max-width: 100%; padding: 6px; border: 1px solid var(--line); border-radius: 6px; background: var(--bg); color: var(--fg); font: inherit; }
#reg-proxy-pool-dialog .reg-pool-import-mode { display: flex; align-items: center; gap: 6px; color: var(--fg-dim); font-size: 11px; }
#reg-proxy-pool-dialog .config-proxy-table-head { flex-wrap: wrap; margin-top: 12px; }

@media (max-width: 720px) {
  #reg-sim-dialog .reg-sim-modes { grid-template-columns: 1fr; }
  #reg-sim-dialog .reg-sim-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #reg-sim-dialog .reg-sim-fields .wide { grid-column: 1 / -1; }
}
/* ===== 配置管理：独立承载账号中心原代理配置 ===== */
#panel-config.panel.active { display: block; overflow: auto; padding: 14px 16px; }
.config-manage-wrap { width: min(980px, 100%); margin: 0 auto; }
.config-manage-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 14px; padding: 4px 2px; }
.config-manage-head h2 { margin: 0 0 5px; color: var(--fg); font-size: 18px; }
.config-manage-head p { margin: 0; color: var(--fg-dim); font-size: 12px; line-height: 1.5; }
.config-auto-save { flex: 0 0 auto; padding: 4px 9px; border: 1px solid color-mix(in srgb, var(--green) 45%, var(--line)); border-radius: 999px; background: color-mix(in srgb, var(--green) 12%, transparent); color: var(--green); font-size: 10.5px; }
.config-manage-card { padding: 18px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg2); }
#panel-config .config-manage-card + .config-manage-card { margin-top: 12px; }
.config-manage-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.config-manage-card-title { color: var(--fg); font-size: 14px; font-weight: 700; }
.config-manage-card-desc { margin-top: 4px; color: var(--fg-dim); font-size: 11.5px; line-height: 1.5; }
.config-proxy-switch { display: flex; align-items: center; gap: 12px; min-width: 290px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: color-mix(in srgb, var(--bg) 58%, transparent); cursor: pointer; }
.config-proxy-switch-copy { display: flex; flex: 1 1 auto; min-width: 0; flex-direction: column; gap: 3px; }
.config-proxy-switch-copy strong { color: var(--fg); font-size: 12px; font-weight: 650; }
.config-proxy-switch-copy small { color: var(--fg-dim); font-size: 10.5px; line-height: 1.35; }
.config-proxy-form.reg-config { align-items: flex-end; flex-wrap: wrap; gap: 14px 18px; padding: 0; border: 0; background: transparent; }
.config-proxy-options { margin-bottom: 16px; }
.config-proxy-pool-summary { min-height: 16px; margin-top: 5px; color: var(--fg-dim); font-size: 10.5px; }
.config-proxy-pool-summary.warn { color: var(--orange); }
.config-proxy-pool-summary.ok { color: var(--green); }
.config-proxy-table-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0 -18px; padding: 14px 18px 11px; border-top: 1px solid var(--line); }
.config-proxy-table-title { color: var(--fg); font-size: 12.5px; font-weight: 650; }
.config-proxy-table-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.config-proxy-table-wrap { max-height: min(52vh, 520px); margin: 0 -18px; overflow: auto; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--bg2); }
table.reg-table.config-proxy-table { table-layout: fixed; }
.config-proxy-table th, .config-proxy-table td { box-sizing: border-box; border-right: 1px solid var(--line); vertical-align: middle; }
.config-proxy-table th:last-child, .config-proxy-table td:last-child { border-right: 0; }
.config-proxy-table tbody tr:last-child td { border-bottom: 0; }
.config-proxy-table thead th { padding-top: 10px; padding-bottom: 10px; background: var(--bg2); }
.config-proxy-table tr.disabled td { opacity: .48; }
.config-proxy-use-col { text-align: center !important; }
.config-proxy-use-col input { margin-right: 5px; vertical-align: middle; }
.config-proxy-address { box-sizing: border-box; }
.proxy-type-pill { display: inline-flex; padding: 3px 7px; border: 1px solid var(--line); border-radius: 999px; color: var(--fg-dim); font-size: 10px; }
.proxy-row-result { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.proxy-row-result.muted { color: var(--fg-dim); }
.proxy-row-result.checking { color: var(--orange); }
.proxy-row-result.ok { color: var(--green); }
.proxy-row-result.error { color: var(--red); }
.config-proxy-row-actions { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.config-proxy-row-actions .mini { min-width: 46px; }
.config-proxy-empty td { padding: 26px 12px; color: var(--fg-dim); text-align: center; }
.config-proxy-check-row { display: flex; align-items: center; gap: 12px; margin-top: 12px; }
.config-proxy-status { display: flex; align-items: center; min-width: 0; gap: 8px; color: var(--fg-dim); font-size: 11.5px; }
.config-proxy-status-dot { width: 8px; height: 8px; flex: 0 0 auto; border-radius: 50%; background: var(--fg-dim); opacity: .65; }
.config-proxy-status.checking .config-proxy-status-dot { background: var(--orange); animation: config-proxy-pulse 1s ease-in-out infinite; opacity: 1; }
.config-proxy-status.ok { color: var(--green); }
.config-proxy-status.ok .config-proxy-status-dot { background: var(--green); opacity: 1; }
.config-proxy-status.warn { color: var(--orange); }
.config-proxy-status.warn .config-proxy-status-dot { background: var(--orange); opacity: 1; }
.config-proxy-status.error { color: var(--red); }
.config-proxy-status.error .config-proxy-status-dot { background: var(--red); opacity: 1; }
@keyframes config-proxy-pulse { 50% { transform: scale(.68); opacity: .45; } }
@media (max-width: 760px) {
  .config-manage-card-head { flex-direction: column; }
  .config-proxy-switch { width: 100%; min-width: 0; box-sizing: border-box; }
  .config-proxy-form.reg-config { align-items: stretch; }
  .config-proxy-form .fld, .config-proxy-form .fld.grow { width: 100%; min-width: 0; }
  .config-proxy-form .fld input, .config-proxy-form .fld select, .config-proxy-form .fld textarea { width: 100%; box-sizing: border-box; }
  .config-proxy-table-head { align-items: stretch; flex-direction: column; }
  .config-proxy-table-actions { justify-content: flex-start; }
  .config-proxy-table-wrap { max-height: 56vh; }
  .config-proxy-table { min-width: 720px; }
}

/* ===== 导入账号：同账号中心的卡片化（两个配置块并排成等宽卡片 + 操作栏 + 表格卡片） ===== */
#panel-import.panel.active { gap: 12px; padding: 14px 16px; }
#panel-import .lg-top { gap: 12px; align-items: stretch; }
#panel-import .lg-top .reg-config { flex: 1 1 0; min-width: 0; }
#panel-import .reg-config,
#panel-import .reg-selbar { border: 1px solid var(--line); border-radius: 12px; }
#panel-import .table-wrap { border: 1px solid var(--line); border-radius: 12px; background: var(--bg2); position: relative; }
#panel-import table.reg-table thead th { padding-top: 10px; padding-bottom: 10px; background: var(--bg2); }
#panel-register table.reg-table td,
#panel-bulk table.reg-table td { padding-top: 8px; padding-bottom: 8px; }
/* 状态药丸 → 圆角胶囊（更接近稿子） */
#panel-register .badge,
#panel-bulk table.reg-table .bulk-task-st { font-size: 12px; padding: 3px 10px; border-radius: 999px; }
/* 主操作按钮更醒目 */
#panel-register .mini.ops-primary { background: color-mix(in srgb, var(--accent) 16%, transparent); }
/* ===== 注册页换肤 · pass2 收尾：动作区层级 + 字号放大半档 ===== */
/* 主操作（一键请求全部）填充强调，从一排次要按钮里跳出来 */
#panel-register #step-all-code:not(:disabled), button.secondary.primary { background: var(--accent); color: #fff; border-color: var(--accent); font-weight: 600; }
#panel-register #step-all-code:not(:disabled):hover, button.secondary.primary:hover:not(:disabled) { background: color-mix(in srgb, var(--accent) 85%, #000); color: #fff; }
/* 停止保持危险色（已有 .danger），动作条整体留白略增 */
#panel-register .reg-actions { padding: 11px 16px; flex-wrap: wrap; row-gap: 8px; }
/* 宽够时排一行;窗口缩小放不下时整项换行(而非压扁按钮/折行文字) */
#panel-register .reg-actions > * { flex-shrink: 0; }
#panel-register .reg-actions button { white-space: nowrap; }
#panel-register .reg-actions .spacer { flex: 1 1 0; min-width: 0; }
#panel-register .reg-actions .bar-div { margin: 0 8px; }
/* 字号放大半档（更舒展，向稿子靠拢） */
#panel-register .reg-config .fld > span,
#panel-register .reg-proxy .fld > span { font-size: 11.5px; }
#panel-register table.reg-table td { font-size: 12.5px; }
#panel-register table.reg-table thead th,
table.workbench-table thead th,
#panel-bulk table.reg-table thead th { font-size: 12px; }

/* ===== 4 列表格：手机号(主+副标题) + ✎ 行字段编辑浮层 ===== */
#panel-register .phone-cell { line-height: 1.3; }
#panel-register .ph-main { display: flex; align-items: center; gap: 6px; }
#panel-register .ph-sub { font-size: 11px; color: var(--fg-dim); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#panel-register .act-edit { padding: 0 5px; font-size: 12px; opacity: .5; }
#panel-register .act-edit:hover { opacity: 1; }
.reg-edit-pop { position: fixed; z-index: 1000; background: var(--bg); border: 1px solid color-mix(in srgb, var(--fg-dim) 32%, transparent); border-radius: 10px; padding: 12px; min-width: 240px; box-shadow: 0 6px 24px rgba(0,0,0,.3); display: flex; flex-direction: column; gap: 10px; }
.reg-edit-pop .ed-fld { display: flex; flex-direction: column; gap: 4px; }
.reg-edit-pop .ed-fld > span { font-size: 11px; color: var(--fg-dim); }
.reg-edit-pop input, .reg-edit-pop select { height: 32px; padding: 0 9px; background: var(--bg2); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); font-size: 13px; outline: none; box-sizing: border-box; }
.reg-edit-pop input:focus, .reg-edit-pop select:focus { border-color: var(--accent); }
.reg-edit-pop .ed-proxyrow { display: flex; gap: 6px; }
.reg-edit-pop .ed-proxyrow .ed-proxy { flex: 1; min-width: 0; }
.reg-edit-pop { max-height: calc(100vh - 32px); overflow-y: auto; max-width: calc(100vw - 32px); }
.reg-edit-pop .ed-sim { border-top: 1px solid var(--line); padding-top: 8px; font-size: 12px; }
.reg-edit-pop .ed-sim summary { color: var(--fg-dim); cursor: pointer; }
.reg-edit-pop .ed-sim dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 5px 12px; }
.reg-edit-pop .ed-sim dt { color: var(--fg-dim); }
.reg-edit-pop .ed-sim dd { margin: 0; overflow-wrap: anywhere; }

/* ===== 流水线：醒目操作按钮（像「一键注册」）+ 点开编辑面板 ===== */
.reg-pipeline-row { display: flex; align-items: center; gap: 12px; }
.pipe-btn { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; padding: 7px 14px; border-radius: var(--border-radius-md, 8px); border: 1px solid color-mix(in srgb, var(--accent) 50%, var(--line)); background: var(--bg); color: var(--fg); cursor: pointer; }
.pipe-btn:hover { border-color: var(--accent); }
.pipe-btn .pipe-summary { font-size: 12px; color: var(--fg-dim); }
.pipe-btn .pipe-caret { font-size: 13px; color: var(--fg-dim); }
.pipe-btn.active { background: color-mix(in srgb, var(--accent) 16%, transparent); border-color: var(--accent); color: var(--accent); font-weight: 500; }
.pipe-btn.active .pipe-summary { color: var(--accent); }
.reg-pipeline-row .pipe-hint { font-size: 12px; color: var(--fg-dim); }
.pipe-pop { position: fixed; z-index: 1000; display: flex; flex-direction: column; gap: 8px; width: 320px; max-width: calc(100vw - 16px); max-height: calc(100dvh - 16px); overflow-y: auto; box-sizing: border-box; background: var(--bg); border: 1px solid color-mix(in srgb, var(--fg-dim) 32%, transparent); border-radius: 10px; padding: 12px; box-shadow: 0 6px 24px rgba(0,0,0,.28); }
.pipe-pop[hidden] { display: none; }
.pipe-pop .pipe-pop-head { font-size: 12px; color: var(--fg-dim); font-weight: 600; padding: 0 2px 4px; }
.pipe-pop .pipe-chk { display: flex; align-items: center; gap: 7px; cursor: pointer; color: var(--fg); font-size: 13px; }
.pipe-pop .pipe-chk.ui-check-row { gap: 12px; }
.pipe-pop .pipe-chk.ui-check-row:has(input:disabled) { cursor: not-allowed; }
.pipe-pop .pipe-chk.pipe-sub { padding: 0 12px 0 44px; color: var(--fg-dim); }
.pipe-pop .pipe-sel { height: 28px; background: var(--bg2); border: 1px solid var(--line); border-radius: 6px; color: var(--fg); font-size: 12px; padding: 0 6px; margin-left: auto; }
.pipe-pop .pipe-sel:disabled { opacity: .5; }
.pipe-pop .pipe-chk input:disabled + span { opacity: .5; }
.pipe-group-picker { padding: 0 12px 0 44px; color: var(--fg-dim); font-size: 12px; }
.pipe-group-picker .import-group-line { margin-top: 5px; }
.pipe-group-picker .pipe-sel { flex: 1; margin-left: 0; }
.ac-import-group-picker { margin-bottom: 10px; color: var(--fg-dim); font-size: 12px; }
.ac-import-group-picker .import-group-line select { background: var(--bg2); }

/* ===== 基础配置 pill 行（点开把真实输入框移进浮层编辑） ===== */
#panel-register .reg-basic.pillmode > .fld { display: none; }
.cfg-pills { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.cfg-pill { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px; background: var(--bg); border: 1px solid var(--line); border-radius: 999px; cursor: pointer; font-size: 12.5px; color: var(--fg); }
.cfg-pill:hover { border-color: var(--accent); }
.cfg-pill.on { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 12%, transparent); }
.cfg-pill .pk { color: var(--fg-dim); }
.cfg-pill .pv { font-weight: 500; max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cfg-pill .pc { color: var(--fg-dim); font-size: 10px; }
.cfg-pop { position: fixed; z-index: 1000; background: var(--bg); border: 1px solid color-mix(in srgb, var(--fg-dim) 32%, transparent); border-radius: 10px; padding: 12px; box-shadow: 0 6px 24px rgba(0,0,0,.3); min-width: 180px; }
.cfg-pop .fld { display: flex; flex-direction: column; gap: 5px; }
.cfg-pop .fld > span { font-size: 11px; color: var(--fg-dim); }
.cfg-pop .fld input, .cfg-pop .fld select { width: 100%; height: 34px; padding: 0 10px; background: var(--bg2); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); font-size: 13px; outline: none; box-sizing: border-box; }
.cfg-pop .fld input:focus, .cfg-pop .fld select:focus { border-color: var(--accent); }
.lg-acct { display: inline-block; max-width: 460px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }

.reg-detail {
  height: 150px;
  border-top: 1px solid var(--line);
  display: flex;
  flex-direction: column;
}
.reg-detail .resp-head { padding: 6px 14px 0; }
.reg-detail pre {
  flex: 1; margin: 0; overflow: auto;
  background: var(--bg); padding: 10px 14px;
  font-family: var(--mono); font-size: 12px; white-space: pre-wrap; word-break: break-word;
}
/* 「最近响应」改为浮动弹层：点详情才显示、点外部关闭，可拖拽缩放。
   用 top/left 定位（不 pin right/bottom），右下角的 resize 手柄才能自由放大缩小。 */
.reg-detail.floating {
  position: fixed;
  left: calc(100vw - 860px);
  top: calc(100vh - 600px);
  width: 820px; height: 560px;
  overflow: hidden;
  border: 1px solid var(--line); border-radius: 10px;
  background: var(--bg2); box-shadow: 0 14px 40px rgba(0,0,0,.5);
  z-index: 60;
}
/* 八向缩放手柄（JS 驱动，像真窗口一样任意边/角拖拽） */
.rd-resize { position: absolute; z-index: 3; }
.rd-n { top: -3px; left: 8px; right: 8px; height: 7px; cursor: ns-resize; }
.rd-s { bottom: -3px; left: 8px; right: 8px; height: 7px; cursor: ns-resize; }
.rd-e { top: 8px; bottom: 8px; right: -3px; width: 7px; cursor: ew-resize; }
.rd-w { top: 8px; bottom: 8px; left: -3px; width: 7px; cursor: ew-resize; }
.rd-ne { top: -3px; right: -3px; width: 14px; height: 14px; cursor: nesw-resize; }
.rd-nw { top: -3px; left: -3px; width: 14px; height: 14px; cursor: nwse-resize; }
.rd-se { bottom: -3px; right: -3px; width: 14px; height: 14px; cursor: nwse-resize; }
.rd-sw { bottom: -3px; left: -3px; width: 14px; height: 14px; cursor: nesw-resize; }
.reg-detail.floating .resp-head { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-bottom: 1px solid var(--line); }
.reg-detail.hidden { display: none; }
#detail-close { line-height: 1; padding: 2px 8px; }
/* 当前在浮层里查看「最近响应」的行高亮 */
table.reg-table tbody tr.row-detailed td { background: color-mix(in srgb, var(--accent) 22%, transparent) !important; }

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: var(--line); border-radius: 5px; }
::-webkit-scrollbar-thumb:hover { background: #4a4a6a; }

/* ====================== 聊天室（多账号，三栏） ====================== */
#panel-chatroom.panel.active { display: flex; }
.cr-wrap { display: flex; flex: 1; min-height: 0; width: 100%; }
/* 聊天室：整体三栏裹进圆角卡片，与其他页保持一致（不改内部三栏结构，仅外层加边框+圆角+内边距） */
#panel-chatroom.panel.active { padding: 14px 16px; box-sizing: border-box; }
#panel-chatroom .cr-wrap { border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }

/* 最左细栏 rail（仿 WhatsApp Web）：顶部当前账号头像、底部账号资料设置 */
.cr-rail { flex: 0 0 56px; display: flex; flex-direction: column; align-items: center; padding: 12px 0; gap: 8px; border-right: 1px solid var(--line); background: var(--bg2); }
.cr-rail-spacer { flex: 1; }
.cr-rail-ava { width: 40px; height: 40px; border-radius: 50%; border: none; padding: 0; cursor: pointer; overflow: hidden; display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 600; color: #fff; background: var(--bg3); position: relative; }
.cr-rail-ava img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.cr-rail-ava:hover { box-shadow: 0 0 0 2px var(--accent); }
.cr-rail-btn { width: 40px; height: 40px; border-radius: 50%; border: none; cursor: pointer; background: transparent; color: var(--fg-dim); font-size: 18px; display: flex; align-items: center; justify-content: center; }
.cr-rail-btn:hover { background: var(--bg3); color: var(--fg); }

/* 账号资料弹窗 */
.cr-profile-sub { font-size: 12px; color: var(--fg-dim); margin: -4px 0 12px; word-break: break-all; }
.cr-profile-avarow { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.cr-profile-ava { width: 64px; height: 64px; border-radius: 50%; overflow: hidden; display: flex; align-items: center; justify-content: center; font-size: 22px; font-weight: 600; color: #fff; background: var(--bg3); position: relative; flex: 0 0 auto; }
.cr-profile-ava img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }

/* 线程头对方头像：可点击看大图（高亮打在里层 .cr-avatar 上，正好贴合圆形，避免外边距导致偏移） */
.cr-th-ava { cursor: pointer; display: inline-flex; vertical-align: middle; }
.cr-th-ava .cr-avatar { transition: box-shadow .12s; }
.cr-th-ava:hover .cr-avatar { box-shadow: 0 0 0 2px var(--accent); }
/* 对方头像大图弹窗 */
.cr-bigava-modal { align-items: center; justify-content: center; cursor: zoom-out; }
.cr-bigava-img { max-width: 80vw; max-height: 80vh; border-radius: 10px; box-shadow: 0 10px 50px rgba(0,0,0,.55); background: var(--bg2); }

/* 左：账号栏 */
.cr-accounts { flex: 0 0 200px; display: flex; flex-direction: column; border-right: 1px solid var(--line); min-height: 0; background: var(--bg2); }
.cr-resizer { flex: 0 0 5px; cursor: col-resize; background: transparent; align-self: stretch; margin-left: -3px; z-index: 5; }
.cr-resizer:hover, .cr-resizer.dragging { background: color-mix(in srgb, var(--accent) 55%, transparent); }
.cr-acc-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; font-size: 12px; color: var(--fg-dim); border-bottom: 1px solid var(--line); }
.cr-acc-head-actions { display: inline-flex; align-items: center; gap: 6px; }
.cr-acc-search { padding: 8px 10px; border-bottom: 1px solid var(--line); display: flex; gap: 6px; flex-wrap: wrap; }
.cr-acc-search input { flex: 1; min-width: 0; box-sizing: border-box; background: var(--bg); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); font-size: 12px; padding: 6px 9px; outline: none; }
.cr-acc-search input:focus { border-color: var(--accent); }
.cr-acc-type { flex: 0 0 auto; background: var(--bg); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); font-size: 12px; padding: 6px 6px; outline: none; cursor: pointer; }
.cr-acc-type:focus { border-color: var(--accent); }
#cr-acc-group { flex: 1 0 100%; }
.cr-acc-list { flex: 1; overflow-y: auto; min-height: 0; }
.cr-list-group { min-width: 0; }
.cr-list-group-head { min-height: 34px; box-sizing: border-box; display: flex; align-items: center; gap: 7px; padding: 5px 8px; border-bottom: 1px solid var(--line); background: color-mix(in srgb, var(--bg3) 72%, var(--bg)); }
.cr-list-group-toggle { flex: 1; min-width: 0; display: flex; align-items: center; gap: 6px; padding: 0; border: 0; background: transparent; color: var(--fg); text-align: left; cursor: pointer; }
.cr-list-group-toggle:hover .cr-list-group-name { color: var(--accent); }
.cr-list-group-caret { flex: 0 0 auto; color: var(--accent); font-size: 11px; transition: transform .14s ease; }
.cr-list-group.collapsed .cr-list-group-caret { transform: rotate(-90deg); }
.cr-list-group.collapsed .cr-list-group-items { display: none; }
.cr-list-group-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 600; }
.cr-list-group-count { flex: 0 0 auto; color: var(--fg-dim); font-size: 10.5px; white-space: nowrap; }
.cr-list-group-count b { color: var(--green); font-weight: 600; }
.cr-list-group-empty { flex: 0 0 auto; padding: 1px 5px; border: 1px solid var(--line); border-radius: 8px; color: var(--fg-dim); font-size: 9.5px; }
.cr-list-group-select { flex: 0 0 auto; margin: 0; cursor: pointer; }
.cr-list-group-select:disabled { cursor: not-allowed; opacity: .45; }
.cr-chat-account-group > .cr-list-group-items > .cr-acc { padding-left: 18px; }
.cr-chat-account-group.empty .cr-list-group-head { opacity: .78; }
.cr-acc { display: flex; align-items: center; gap: 8px; padding: 9px 12px; cursor: pointer; border-bottom: 1px solid var(--line); font-size: 13px; }
.cr-acc:hover { background: var(--bg3); }
.cr-acc.active { background: color-mix(in srgb, var(--accent) 16%, transparent); }
.cr-acc-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.cr-acc-top { display: flex; align-items: center; min-width: 0; }
.cr-acc-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.cr-acc-top .cr-acc-tag { flex: 0 0 auto; }
.cr-acc-wid { font-size: 10.5px; color: var(--fg-dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cr-acc-tag { display: inline-block; font-size: 10px; padding: 0 5px; border-radius: 8px; margin-left: 5px; background: color-mix(in srgb, var(--accent) 20%, transparent); color: var(--accent); vertical-align: middle; }
/* 账号状态圆点（绿=在线 / 红=已封号 / 黄=限制聊天 / 灰=离线其余），稍大易辨识 */
.cr-dot { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; }
.cr-dot.green { background: var(--green); }
.cr-dot.red { background: var(--red); }
.cr-dot.yellow { background: var(--orange); }
.cr-dot.gray { background: var(--fg-dim); opacity: .5; }
/* 未读数量圆点：WhatsApp 风格绿色 */
.cr-badge { background: var(--green); color: #fff; font-size: 10px; font-weight: 600; min-width: 18px; height: 18px; line-height: 18px; text-align: center; border-radius: 9px; padding: 0 5px; flex: 0 0 auto; }

/* 中：会话列表 */
.cr-convos { flex: 0 0 290px; display: flex; flex-direction: column; border-right: 1px solid var(--line); min-height: 0; }
.cr-conv-head { display: flex; gap: 6px; padding: 8px 10px; border-bottom: 1px solid var(--line); }
.cr-conv-head input { flex: 1; height: 30px; padding: 0 10px; background: var(--bg); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); font-size: 12.5px; outline: none; }
.cr-conv-head input:focus { border-color: var(--accent); }
.cr-newbar { display: flex; gap: 6px; padding: 8px 10px; border-bottom: 1px solid var(--line); background: var(--bg3); }
/* 批量打开会话任务窗口（模态） */
.cr-modal { position: absolute; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.45); }
.cr-modal[hidden] { display: none; }
.cr-modal-box { width: 440px; max-width: 92%; max-height: 88%; overflow: auto; background: var(--bg2); border: 1px solid var(--line); border-radius: 12px; padding: 18px; box-shadow: 0 12px 40px rgba(0,0,0,.5); }
.cr-modal-title { font-size: 15px; font-weight: 700; color: var(--fg); margin-bottom: 14px; }
.cr-modal-row { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.cr-modal-row.col { flex-direction: column; align-items: stretch; gap: 5px; }
.cr-modal-row > span { font-size: 12px; color: var(--fg-dim); flex: 0 0 auto; }
.cr-modal-row select, .cr-modal-row textarea { width: 100%; background: var(--bg); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); font-size: 13px; outline: none; padding: 7px 10px; }
.cr-modal-row textarea { resize: vertical; min-height: 120px; font-family: inherit; }
.cr-modal-row select:focus, .cr-modal-row textarea:focus { border-color: var(--accent); }
.cr-modal-chk { display: flex; align-items: center; gap: 7px; font-size: 12.5px; color: var(--fg-dim); margin-bottom: 14px; cursor: pointer; }
.cr-modal-foot { display: flex; align-items: center; gap: 8px; }
.cr-modal-prog { font-size: 11.5px; color: var(--fg-dim); }
.cr-newbar input { flex: 1; height: 28px; padding: 0 10px; background: var(--bg); border: 1px solid var(--line); border-radius: 6px; color: var(--fg); font-size: 12.5px; outline: none; }
.cr-newbar input:focus { border-color: var(--accent); }
.cr-conv-list { flex: 1; overflow-y: auto; min-height: 0; }
/* 左滑会话行：底层操作区 + 上层可滑动的内容层 */
.cr-conv-row {
  position: relative;
  overflow: hidden;
  border-bottom: 1px solid var(--line);
  content-visibility: auto;
  contain-intrinsic-size: auto 57px;
}
/* WhatsApp 风格滑动操作：图标在上、文字在下，归档=青(teal)、删除=红 */
.cr-conv-actions { position: absolute; top: 0; right: 0; height: 100%; display: flex; z-index: 0; }
.cr-conv-act { width: 80px; border: none; cursor: pointer; color: #fff;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; }
.cr-conv-act svg { display: block; }
.cr-conv-act span { font-size: 11px; line-height: 1; }
.cr-conv-act.arch { background: #8696a0; }   /* WhatsApp 归档：青灰 */
.cr-conv-act.del { background: #f15c6d; }     /* WhatsApp 删除：红 */
.cr-conv-act:active { filter: brightness(.92); }
/* 内容层必须满宽且不透明，平时完全盖住底层操作区；滑开时整体左移露出操作 */
.cr-conv-face { position: relative; z-index: 1; box-sizing: border-box; width: 100%; padding: 9px 12px; cursor: pointer; background: var(--bg2); transition: transform .18s ease; will-change: transform; display: flex; align-items: center; gap: 10px; }
.cr-conv-face:hover { background: var(--bg3); }
.cr-conv-face.active { background: color-mix(in srgb, var(--accent) 14%, var(--bg2)); }
.cr-conv-main { flex: 1; min-width: 0; }
/* 头像：底层首字母彩色圆，有图时 img 盖上；img 失败则露出占位 */
.cr-avatar { position: relative; flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; border-radius: 50%; color: #fff; font-weight: 600; vertical-align: middle; }
.cr-avatar.sm { width: 38px; height: 38px; font-size: 15px; }
.cr-avatar.md { width: 30px; height: 30px; font-size: 13px; margin-right: 8px; }
.cr-avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cr-th-title { display: flex; align-items: center; }
.cr-th-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 滑开态由 class 维持视觉：内容层左移露出操作区。拖动中用 inline transform 跟手，松手清掉 inline 后由本规则接管，避免脏残留 */
.cr-conv-row.swiped .cr-conv-face { transform: translateX(-160px); }
#cr-arch-toggle.active { color: var(--accent); border-color: var(--accent); }
.cr-conv-top { display: flex; justify-content: space-between; gap: 8px; }
.cr-conv-name { font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cr-conv-time { font-size: 10.5px; color: var(--fg-dim); flex: 0 0 auto; }
.cr-conv-bot { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-top: 2px; }
.cr-conv-prev { font-size: 11.5px; color: var(--fg-dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cr-conv-acc { background: var(--bg3); color: var(--fg-dim); border-radius: 4px; padding: 0 4px; margin-right: 4px; font-size: 10px; }

/* 字段映射折叠 */
.cr-mapping { border-top: 1px solid var(--line); }
.cr-mapping > summary { padding: 7px 12px; font-size: 11px; color: var(--fg-dim); cursor: pointer; user-select: none; }
.cr-map-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 8px; padding: 4px 12px 8px; }
.cr-map-grid .fld > span { font-size: 10.5px; color: var(--fg-dim); }
.cr-map-grid input { width: 100%; height: 28px; padding: 0 8px; background: var(--bg); border: 1px solid var(--line); border-radius: 6px; color: var(--fg); font-size: 12px; outline: none; }
.cr-map-grid input:focus { border-color: var(--accent); }
.cr-unrouted { padding: 0 12px 8px; max-height: 120px; overflow-y: auto; }
.cr-unrouted-h { font-size: 10.5px; color: var(--red); margin: 4px 0; }
.cr-unrouted-i { font-size: 10.5px; color: var(--fg-dim); font-family: ui-monospace, Menlo, monospace; border-bottom: 1px dashed var(--line); padding: 2px 0; word-break: break-all; }

/* 右：消息流 */
.cr-thread { flex: 1; display: flex; flex-direction: column; min-height: 0; min-width: 0; }
.cr-thread-head { padding: 10px 16px; border-bottom: 1px solid var(--line); display: flex; align-items: baseline; }
.cr-th-title { font-size: 14px; font-weight: 600; }
.cr-th-sub { font-size: 11.5px; color: var(--fg-dim); margin-left: 8px; }
.cr-msglog { flex: 1; overflow-y: auto; min-height: 0; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.cr-bub { max-width: 70%; padding: 7px 11px; border-radius: 10px; font-size: 13px; line-height: 1.4; word-break: break-word; }
.cr-bub.in { align-self: flex-start; background: var(--bg3); }
.cr-bub.out { align-self: flex-end; background: color-mix(in srgb, var(--accent) 22%, transparent); }
.cr-bub.selected { box-shadow: 0 0 0 2px var(--accent); }
.cr-bub.out.selected { background: color-mix(in srgb, var(--accent) 42%, transparent); }
.cr-bub.in.selected { background: color-mix(in srgb, var(--accent) 18%, var(--bg3)); }
.cr-bub.out.revoked { background: var(--bg3); font-style: italic; opacity: .8; }
.cr-bub.out.revoked .cr-bub-text { color: var(--fg-dim); }
.cr-bub-undecrypt { font-style: italic; color: var(--fg-dim); opacity: .85; }
/* 右键消息后的浮动操作菜单（竖向排列） */
.cr-msg-menu { position: fixed; z-index: 60; display: flex; flex-direction: column; gap: 1px; min-width: 96px; background: var(--bg2); border: 1px solid var(--line); border-radius: 8px; padding: 4px; box-shadow: 0 6px 20px rgba(0,0,0,.4); }
.cr-msg-menu[hidden] { display: none; }
.cr-msg-menu button { background: transparent; border: none; color: var(--fg); font-size: 12.5px; text-align: left; padding: 7px 12px; border-radius: 5px; cursor: pointer; width: 100%; }
.cr-msg-menu button[hidden] { display: none; }
.cr-msg-menu button:hover { background: var(--bg3); }
.cr-msg-menu button[data-act="delete"] { color: #f15c6d; }
.cr-msg-menu button:disabled { color: var(--fg-dim); opacity: .5; cursor: not-allowed; }
/* 多选模式操作栏 */
.cr-sel-bar { display: flex; align-items: center; gap: 10px; padding: 8px 14px; border-bottom: 1px solid var(--line); background: var(--bg2); }
.cr-sel-bar[hidden] { display: none; }
.cr-sel-count { font-size: 13px; color: var(--fg); }
#cr-sel-action.danger { background: #f15c6d; border-color: #f15c6d; color: #fff; }
/* 多选模式下的气泡：复用 UI-23 紧凑勾选外观，保持原来的选择事件。 */
.cr-bub.selectable, .cr-bub.sel-disabled { position: relative; }
.cr-bub.selectable { cursor: pointer; padding-left: 34px; }
.cr-bub.sel-disabled { opacity: .45; }
.cr-bub-check { position: absolute; top: 50%; left: 9px; transform: translateY(-50%); }
.cr-bub.checked { background: color-mix(in srgb, var(--accent) 40%, transparent); }
.cr-bub-text { white-space: pre-wrap; }
.cr-bub-err { color: var(--red); font-size: 11px; margin-top: 2px; }
.cr-bub-meta { font-size: 10px; color: var(--fg-dim); margin-top: 3px; text-align: right; }
.cr-bub-meta .ok { color: var(--green); } .cr-bub-meta .err { color: var(--red); } .cr-bub-meta .dim { color: var(--fg-dim); }
/* 回执钩：已发送/已接收=灰，已读=绿，双钩字间收紧一点 */
.cr-bub-meta .ck { margin-left: 3px; font-weight: 600; letter-spacing: -2px; }
.cr-bub-meta .ck.gray { color: var(--fg-dim); }
.cr-bub-meta .ck.green { color: var(--green); }
.cr-bub-meta .ck.dim { color: var(--fg-dim); letter-spacing: 0; }
.cr-bub-meta .ck.err { color: var(--red); letter-spacing: 0; }
.cr-input-row { display: flex; gap: 8px; padding: 10px 16px; border-top: 1px solid var(--line); align-items: center; }
#cr-media-open { flex: 0 0 auto; font-size: 18px; padding: 0 12px; }
/* 发出的链接卡片气泡 */
.cr-linkcard { border-left: 3px solid var(--accent); padding: 2px 0 2px 8px; }
.cr-linkcard-t { font-weight: 600; margin-bottom: 2px; }
.cr-linkcard-u { font-size: 12px; color: var(--accent); word-break: break-all; }
.cr-linkcard-img { margin: 0 0 4px; }
.cr-linkcard-img img { max-width: 200px; max-height: 150px; border-radius: 6px; display: block; }
.cr-bub-img { margin-bottom: 3px; }
.cr-bub-img img { max-width: 220px; max-height: 240px; border-radius: 8px; display: block; }

/* 多媒体消息弹窗：左类型 / 右参数 */
/* 群发任务（独立标签页） */
.bulk-page { max-width: 760px; margin: 0 auto; padding: 20px 18px 28px; }
.bulk-sub { font-size: 12.5px; color: var(--fg-dim); margin: -6px 0 18px; line-height: 1.5; }
.bulk-foot { display: flex; align-items: center; gap: 14px; margin-top: 6px; }
.cr-bulk-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; }
.cr-bulk-lab { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 12px; color: var(--fg-dim); margin-bottom: 5px; }
.cr-lab-actions { display: inline-flex; align-items: center; gap: 8px; }
.cr-selall { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; user-select: none; }
.cr-selall input { cursor: pointer; }
.cr-bulk-senders { height: 200px; overflow: auto; border: 1px solid var(--line); border-radius: 7px; padding: 6px; background: var(--bg); display: flex; flex-direction: column; gap: 1px; }
.cr-bulk-senders .cr-list-group { flex: 0 0 auto; overflow: hidden; margin-bottom: 5px; border: 1px solid var(--line); border-radius: 7px; background: var(--bg2); }
.cr-bulk-senders .cr-list-group:last-child { margin-bottom: 0; }
.cr-bulk-senders .cr-list-group-head { min-height: 32px; padding: 4px 7px; background: color-mix(in srgb, var(--bg3) 62%, var(--bg2)); }
.cr-bulk-senders .cr-list-group-items { display: flex; flex-direction: column; gap: 1px; padding: 3px; }
.cr-bulk-senders .cr-list-group.collapsed .cr-list-group-items { display: none; }
.cr-bulk-senders .cr-list-group.empty .cr-list-group-items { padding: 0; }
.cr-bulk-senders .cr-list-group-count { font-size: 10px; }
.cr-bulk-senders label { display: flex; align-items: center; gap: 7px; font-size: 13px; color: var(--fg); padding: 3px 4px; border-radius: 5px; cursor: pointer; }
.cr-bulk-senders label:hover { background: var(--bg2); }
.cr-bulk-senders label.off { color: var(--fg-dim); cursor: not-allowed; }
#cr-bulk-targets { width: 100%; height: 200px; box-sizing: border-box; background: var(--bg); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); font-size: 13px; outline: none; padding: 7px 10px; resize: none; overflow: auto; white-space: pre; font-family: inherit; }
#cr-bulk-targets:focus { border-color: var(--accent); }
.cr-bulk-msgsec { margin-bottom: 16px; }
/* 养号任务：选项行（互相加好友 / 互发轮数 / 发送间隔） */
/* 养号「消息语料」编辑框：与左侧账号列等高(200px)、可纵向拖大 */
#cr-warm-corpus { width: 100%; height: 200px; box-sizing: border-box; background: var(--bg); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); font-size: 13px; outline: none; padding: 7px 10px; resize: vertical; overflow: auto; white-space: pre; font-family: inherit; }
#cr-warm-corpus:focus { border-color: var(--accent); }
.warm-opts { display: flex; align-items: center; flex-wrap: wrap; gap: 18px; margin-bottom: 14px; }
.warm-opts .fld { display: inline-flex; align-items: center; gap: 6px; }
.warm-opts input[type="number"] { width: 64px; }
.cr-bulk-msglist { display: flex; flex-direction: column; gap: 4px; max-height: 200px; overflow: auto; }
.bulk-histsec { margin-top: 22px; }
.bulk-tasktbl-wrap { border: 1px solid var(--line); border-radius: 7px; overflow: auto; max-height: 260px; }
.bulk-tasktbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.bulk-tasktbl th, .bulk-tasktbl td { text-align: left; padding: 8px 12px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.bulk-tasktbl thead th { position: sticky; top: 0; background: var(--bg3); color: var(--fg-dim); font-weight: 600; font-size: 11.5px; letter-spacing: .02em; z-index: 1; }
.bulk-tasktbl tbody tr:last-child td, .bulk-tasktbl tbody tr:last-child td { border-bottom: none; }
.bulk-tasktbl td { color: var(--fg); }
.bulk-tasktbl .tsenders { max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
/* 群发/养号：配置区 + 记录区卡片化，与注册页/账号中心一致 */
.bulk-card { background: var(--bg2); border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px; margin-bottom: 14px; }
.bulk-card .cr-bulk-grid { margin-bottom: 14px; }
.bulk-card .bulk-foot { margin-bottom: 0; }
.bulk-histsec.bulk-card { margin-top: 0; }
/* .bulk-task-st 的配色已并入统一状态药丸（见 .badge 区块） */

/* 群发工作台：复用养号副标签，任意时刻只展示一张业务表格。 */
#panel-bulk [hidden]{display:none!important}
#panel-bulk .bulk-workspace{display:flex;flex-direction:column;gap:12px;padding:0;min-width:0;flex:1;min-height:0}
#panel-bulk .bulk-workspace>.bulk-summary-card,#panel-bulk .bulk-workspace>.warm-subtabs{flex-shrink:0}
#panel-bulk #cr-bulk-prog:empty{display:none}
#panel-bulk .bulk-workspace:has(#cr-bulk-detail:not([hidden]))>#cr-bulk-prog{display:none}
#panel-bulk #cr-bulk-task-panel{display:flex;flex-direction:column;flex:1;min-height:200px}
#panel-bulk #cr-bulk-task-panel>.bulk-tasktbl-wrap{flex:1;min-height:0;max-height:none}
#panel-bulk .bulk-workspace>.bulk-card,#panel-bulk .warm-subtabs{margin-bottom:0}
#panel-bulk .mini{background:var(--bg3);border-color:var(--line);color:var(--fg-dim)}
#panel-bulk .mini:hover:not(:disabled){color:var(--fg);border-color:color-mix(in srgb,var(--fg-dim) 45%,var(--line))}
#panel-bulk .mini.ghost.act-menu:is(:hover,[aria-expanded="true"]){opacity:1;color:var(--fg);border-color:var(--accent);background:color-mix(in srgb,var(--bg3) 75%,var(--accent) 25%)}
#panel-bulk .mini.danger{color:var(--red);border-color:color-mix(in srgb,var(--red) 40%,var(--line))}
#panel-bulk .bulk-summary-card{padding:18px 20px;gap:24px}
#panel-bulk .bulk-overview{display:grid;grid-template-columns:repeat(5,minmax(80px,1fr));gap:16px;flex:1;min-width:0;color:var(--fg-dim)}
#panel-bulk .bulk-kpi{display:flex;flex-direction:column;gap:7px;border-right:1px solid var(--line);padding-right:16px}
#panel-bulk .bulk-kpi:last-child{border-right:0}
#panel-bulk .bulk-kpi>span{font-size:11px;white-space:nowrap}
#panel-bulk .bulk-kpi b{color:var(--fg);font-size:24px;font-weight:600;line-height:1;font-variant-numeric:tabular-nums}
#panel-bulk .bulk-kpi.running b{color:var(--green)}
#panel-bulk .bulk-kpi.waiting b{color:var(--orange)}
#panel-bulk #cr-bulk-new{background:var(--accent);border-color:var(--accent);color:white;font-weight:600}
#panel-bulk #cr-bulk-new:hover{background:color-mix(in srgb,var(--accent) 88%,black)}
#panel-bulk .bulk-table-card{padding:0;overflow:hidden}
#panel-bulk .bulk-table-card .bulk-tasktbl-wrap{border:0;border-radius:0;background:var(--bg2)}
#panel-bulk table.reg-table .mini{padding:3px 6px}
#panel-bulk table.reg-table .mini:hover:not(:disabled){color:var(--fg);border-color:var(--accent);background:color-mix(in srgb,var(--bg3) 75%,var(--accent) 25%)}
#panel-bulk .bulk-table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap;font-size:13px}
#panel-bulk .bulk-task-picker{display:flex;align-items:center;gap:12px;min-width:0;color:var(--fg-dim)}
#panel-bulk .bulk-task-picker select{width:320px;max-width:60vw}
#panel-bulk #cr-bulk-detail .bulk-table-toolbar{justify-content:flex-end}
#panel-bulk .bulk-campaign-table.bulk-record-table{table-layout:fixed;min-width:1200px}
#panel-bulk .bulk-record-table td{overflow-wrap:anywhere}
#panel-bulk .bulk-record-task{display:block;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
#panel-bulk .bulk-drawer-heading{padding:4px 0 10px}
#panel-bulk .bulk-schedule-list{display:flex;flex-direction:column;gap:10px}
#panel-bulk .bulk-schedule-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}
#panel-bulk .bulk-schedule-row small{display:block;color:var(--fg-dim);font-size:11px;margin-top:5px}
#panel-bulk .bulk-schedule-row>small{grid-column:1/-1;overflow-wrap:anywhere}
#panel-bulk .bulk-schedule-stats{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--fg-dim)}
#panel-bulk .bulk-schedule-stats b{color:var(--fg);font-weight:500}
#panel-bulk .bulk-config-section{margin-top:20px;border-top:1px solid var(--line);padding-top:16px}
#panel-bulk .bulk-config-section>summary{cursor:pointer;font-weight:600;font-size:14px;padding:8px 0}
#panel-bulk .bulk-detail-caption{display:flex;gap:12px;align-items:center;padding:12px 16px 0;font-size:13px}
#panel-bulk .bulk-tasktbl-wrap{max-height:calc(100vh - 280px);min-height:160px;overflow:auto}
#panel-bulk #cr-bulk-detail{display:flex;flex-direction:column;flex:1;min-height:200px}
#panel-bulk #cr-bulk-detail-content{display:flex;flex-direction:column;flex:1;min-height:0}
#panel-bulk #cr-bulk-detail .bulk-tasktbl-wrap{flex:1;min-height:0;max-height:none}
#panel-bulk .bulk-record-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#panel-bulk #cr-bulk-detail-reason:empty{display:none}
#panel-bulk #cr-bulk-detail-reason{max-width:320px;overflow-wrap:anywhere}
#panel-bulk .bulk-record-table .bulk-record-group>td{padding:0;background:color-mix(in srgb,var(--bg2) 92%,var(--accent) 8%)}
#panel-bulk .bulk-record-group button{display:flex;align-items:center;gap:12px;width:100%;padding:10px 16px;border:0;border-radius:0;background:transparent;color:var(--fg);text-align:left;cursor:pointer;font:inherit}
#panel-bulk .bulk-record-group button:hover,#panel-bulk .bulk-record-group button:focus-visible{background:color-mix(in srgb,var(--bg2) 85%,var(--accent) 15%)}
#panel-bulk .bulk-record-group b{max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#panel-bulk .bulk-group-arrow{color:var(--accent)}
#panel-bulk .bulk-record-group-counts{margin-left:auto;font-size:12px;color:var(--fg-dim);white-space:nowrap}
#panel-bulk .bulk-record-table .bulk-record-sentinel td{height:1px;padding:0;border:0}
#panel-bulk .bulk-campaign-table.bulk-task-list-table{table-layout:fixed;min-width:1200px}
#panel-bulk .bulk-col-name{width:25%}#panel-bulk .bulk-col-date{width:17%}#panel-bulk .bulk-col-senders{width:9%}#panel-bulk .bulk-col-progress{width:17%}#panel-bulk .bulk-col-status{width:15%}#panel-bulk .bulk-col-actions{width:17%}
#panel-bulk .bulk-task-date{color:var(--fg-dim);font-size:12px;font-variant-numeric:tabular-nums}
#panel-bulk :is(.bulk-task-list-table,.bulk-record-table) thead th:last-child{border-right:0}
#panel-bulk .bulk-column-filter{display:flex;align-items:center;gap:0;min-width:0}
#panel-bulk .bulk-column-filter label{flex-shrink:0}
#panel-bulk .bulk-column-filter .status-filter{margin-left:10px;min-width:0;flex:1}
#panel-bulk .bulk-task-list-table .bulk-task-link{max-width:100%;font-weight:500;font-size:12.5px}
#panel-bulk .bulk-task-list-table td>small{font-size:11px;margin-top:6px}
#panel-bulk .bulk-sender-count{font-size:12.5px;font-variant-numeric:tabular-nums}
#panel-bulk .bulk-progress-cell{max-width:230px;min-width:120px}
#panel-bulk .bulk-progress-label{display:flex;justify-content:space-between;gap:10px;font-size:12px;font-variant-numeric:tabular-nums;margin-bottom:7px}
#panel-bulk .bulk-progress-track{height:5px;border-radius:99px;overflow:hidden;background:var(--line)}
#panel-bulk .bulk-progress-track>span{display:block;height:100%;background:var(--accent);border-radius:inherit}
#panel-bulk .bulk-progress-note{font-size:10px;margin-top:5px}
#panel-bulk .bulk-progress-note.has-fail{color:var(--red)}
#panel-bulk .bulk-row-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
#panel-bulk td details summary{cursor:pointer;padding:5px 0}
#panel-bulk .bulk-delivery-entry{padding:10px 0;border-bottom:1px solid var(--line);white-space:normal;min-width:180px;max-width:280px}
#panel-bulk .bulk-command{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
#panel-bulk h2,#panel-bulk h3{margin:0 0 5px;font-size:18px}
#panel-bulk .dim{color:var(--fg-dim);font-size:12px}
#panel-bulk .bulk-command-actions,#panel-bulk .bulk-detail-foot{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
#panel-bulk .bulk-tabs,#panel-bulk .bulk-steps{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
#panel-bulk .bulk-tabs .active,#panel-bulk .bulk-steps .active{border-color:var(--accent);color:var(--accent)}
#panel-bulk .bulk-campaign-table{min-width:660px;table-layout:auto}
#panel-bulk .bulk-campaign-table td{vertical-align:middle}
#panel-bulk .bulk-campaign-table small{display:block;color:var(--fg-dim);margin-top:4px}
#panel-bulk .bulk-task-link{border:0;background:none;color:var(--fg);padding:0;text-align:left;cursor:pointer;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
#panel-bulk .bulk-metrics{display:flex;gap:18px;flex-wrap:wrap;padding:12px 16px;color:var(--fg-dim);font-size:12px;border-bottom:1px solid var(--line)}
#panel-bulk .bulk-metrics b{font-size:14px;color:var(--fg);margin-left:6px;font-weight:600}
#panel-bulk .bulk-detail-foot{padding:12px 16px;border-top:1px solid var(--line)}
#panel-bulk .bulk-target-error{white-space:normal;max-width:340px;color:var(--fg-dim)}
#panel-bulk .bulk-drawer{position:fixed;z-index:220;justify-content:flex-end;align-items:stretch;padding:0}
#panel-bulk .bulk-wizard-box{width:min(760px,96vw);max-width:760px;height:100%;max-height:100dvh;box-sizing:border-box;padding:18px;border-radius:0;border:0;border-left:1px solid var(--line);box-shadow:-12px 0 35px rgba(0,0,0,.28);display:flex;flex-direction:column;overflow:hidden}
#panel-bulk .bulk-wizard-box>.bulk-command{padding-bottom:14px;border-bottom:1px solid var(--line);flex-shrink:0}
#panel-bulk .bulk-wizard-body{overflow:auto;min-height:0;flex:1;padding:16px 4px;overscroll-behavior:contain}
#panel-bulk .bulk-steps{margin-top:18px}#panel-bulk .bulk-steps button{flex:1}
#panel-bulk .bulk-step-hint{border-left:2px solid var(--accent);padding:5px 10px;font-size:12px;color:var(--fg-dim);flex-shrink:0;line-height:1.5}
#panel-bulk .bulk-wizard-box .bulk-steps{flex-shrink:0;margin-bottom:12px}
#panel-bulk .bulk-steps button{min-height:34px}
#panel-bulk .bulk-editor-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;margin-top:18px}
#panel-bulk .bulk-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
#panel-bulk .bulk-field{display:flex;flex-direction:column;gap:8px;min-width:0}
#panel-bulk input:not([type=checkbox]),#panel-bulk select,#panel-bulk textarea{color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:9px 12px;min-width:0;max-width:100%;font:inherit}
#panel-bulk #cr-bulk-name::placeholder{color:var(--fg-dim);opacity:1}
/* 分组选择器沿用紧凑行高，不能叠加通用表单的上下内边距。 */
#panel-bulk select.account-group-select{height:32px;min-height:32px;padding:0 8px;line-height:normal;font-size:12px;width:160px;min-width:120px;max-width:100%}
#panel-bulk .cr-bulk-lab,#panel-bulk .cr-lab-actions{flex-wrap:wrap;min-width:0;row-gap:8px}
#panel-bulk .cr-selall{white-space:nowrap;flex-shrink:0}
#panel-bulk .bulk-field>input,#panel-bulk .bulk-field>select{width:100%}
#panel-bulk #cr-bulk-targets{width:100%;min-height:260px;resize:vertical}
#panel-bulk .bulk-wizard-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:16px;margin-top:18px;border-top:1px solid var(--line)}
#panel-bulk #cr-bulk-wizard-error{color:var(--red);font-size:13px}
#panel-bulk .bulk-friend-option{margin-top:20px}
#panel-bulk .bulk-rule-note{color:var(--fg-dim);padding:14px;border:1px solid var(--line);border-radius:8px;margin-top:16px;line-height:1.8}
#panel-bulk .bulk-kv{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;padding:10px 0;line-height:1.6;overflow-wrap:anywhere}
#panel-bulk .bulk-kv>span:nth-child(odd){color:var(--fg-dim)}
#panel-bulk .bulk-task-st.paused,#panel-bulk .bulk-task-st.waiting,#panel-bulk .bulk-task-st.review,#panel-bulk .bulk-task-st.queued,#panel-bulk .bulk-task-st.unknown{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
#cr-media-modal{z-index:2500}
@media(max-width:760px){#panel-bulk .bulk-editor-grid,#panel-bulk .bulk-form-grid{grid-template-columns:1fr}#panel-bulk .bulk-workspace{padding:10px}#panel-bulk .bulk-wizard-box{padding:14px}#panel-bulk .bulk-kv{grid-template-columns:1fr}#panel-bulk .bulk-wizard-foot{flex-wrap:wrap}}
@media(max-width:900px){#panel-bulk .bulk-summary-card>.bulk-command-actions{width:100%;justify-content:flex-end}#panel-bulk .bulk-summary-card{gap:16px}#panel-bulk .bulk-overview{flex-basis:100%}}
@media(max-width:540px){#panel-bulk .bulk-overview{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 12px}#panel-bulk .bulk-kpi:nth-child(3){border-right:0}#panel-bulk .bulk-summary-card{padding:16px}#panel-bulk .bulk-table-toolbar>.bulk-command-actions{width:100%}#panel-bulk #cr-bulk-search{flex:1;width:100px}#panel-bulk .bulk-table-toolbar{gap:10px}#panel-bulk .bulk-steps{display:grid;grid-template-columns:1fr 1fr}}

/* ── 群发/养号：配置横铺在上、任务表铺满在下（对齐批量注册的列式布局） ── */
.bulk-page.split { max-width: none; margin: 0; padding: 0; flex: 1; min-height: 0; display: flex; flex-direction: column; }
.bulk-page.split .bulk-sub { margin: -6px 0 14px; }
.bulk-split { display: flex; flex-direction: column; gap: 14px; flex: 1; min-height: 0; }
.bulk-split > .bulk-card { margin-bottom: 0; }
/* 配置卡：发送号/账号 与 目标号/语料 横向并排，铺满整宽 */
.bulk-split .cr-bulk-grid { grid-template-columns: 1fr 1fr; }
.bulk-split .cr-bulk-senders { height: 168px; }
.bulk-split #cr-bulk-targets, .bulk-split #cr-warm-corpus { height: 168px; }
/* 任务表卡：占满剩余高度，表格随之铺满 */
.bulk-split > .bulk-histsec { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.bulk-split > .bulk-histsec > .cr-bulk-lab { flex: 0 0 auto; }
.bulk-split > .bulk-histsec .bulk-tasktbl-wrap { flex: 1; min-height: 200px; max-height: none; }
@media (max-width: 760px) { .bulk-split .cr-bulk-grid { grid-template-columns: 1fr; } }

/* ── 群发/养号：视觉美化（卡片层次 / 主操作按钮 / 表格 / 空态） ── */
/* 卡片轻微浮起，增强层次 */
.bulk-split > .bulk-card { box-shadow: 0 1px 3px rgba(0, 0, 0, .05); }
/* 区块小标题更醒目：标题文字加重、用前景色 */
.bulk-split .cr-bulk-lab > span:first-child { color: var(--fg); font-weight: 600; font-size: 12.5px; }
/* 主操作按钮（开始群发 / 开始养号）填充强调色，与「停止」形成主次对比 */
#cr-bulk-run, #cr-warm-run { background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 600; }
#cr-bulk-run:hover, #cr-warm-run:hover { background: color-mix(in srgb, var(--accent) 88%, #000); border-color: var(--accent); }
#cr-bulk-run:disabled, #cr-warm-run:disabled { background: var(--bg3); color: var(--fg-dim); border-color: var(--line); opacity: 1; }
/* 操作区与上方配置用细线分隔 */
.bulk-split .bulk-foot { border-top: 1px solid var(--line); margin-top: 16px; padding-top: 14px; }
/* 任务表：内嵌底色与卡片区分、行悬停带强调色微染 */
.bulk-split .bulk-tasktbl-wrap { background: var(--bg); }
.bulk-split > .bulk-histsec > .cr-bulk-lab { margin-bottom: 10px; }
.bulk-tasktbl tbody tr.trow:hover td { background: color-mix(in srgb, var(--accent) 6%, transparent); }
/* 空态：居中提示而非贴边 */
.bulk-task-empty, #cr-warm-empty, #cr-bulk-task-empty { padding: 26px 12px; text-align: center; color: var(--fg-dim); font-size: 12.5px; }

/* ── 群发：发送号 / 目标号 / 发送策略 三栏一行 ── */
.bulk-split .cr-bulk-grid.cr-bulk-grid-3 { grid-template-columns: 1fr 1fr 1fr; align-items: start; }

                              /* 加好友选项 + 开始/停止 收进第三栏（发送策略下面） */
.cr-bulk-grid-3 .cr-modal-chk { margin-top: 12px; }
.cr-bulk-grid-3 .bulk-foot { flex-wrap: wrap; gap: 10px; }
/* 养号手动执行：账号/语料保持双栏 */
.warm-top { grid-template-columns: 1fr 1fr !important; }
@media (max-width: 1000px) { .bulk-split .cr-bulk-grid.cr-bulk-grid-3 { grid-template-columns: 1fr; } }

/* 可展开任务行（点行展开看 4 列之外的详情） */
.bulk-tasktbl tr.trow { cursor: pointer; }
.bulk-tasktbl tr.trow:hover td { background: var(--bg); }
.exp-caret { display: inline-block; margin-right: 5px; color: var(--fg-dim); font-style: normal; transition: transform .12s; }
.bulk-tasktbl tr.trow.open .exp-caret { transform: rotate(90deg); }
.bulk-tasktbl tr.drow > td { background: var(--bg); color: var(--fg-dim); font-size: 12px; padding: 5px 10px 8px 28px; white-space: normal; }
.bulk-tasktbl tr.drow .dv { color: var(--fg); }
.bulk-tasktbl tr.drow.hidden { display: none; }

/* 进度条（替代纯文字进度） */
.bulk-prog-bar { display: inline-flex; align-items: center; gap: 7px; min-width: 92px; font-size: 12px; color: var(--fg-dim); }
.bulk-prog-bar .track { flex: 1; height: 6px; min-width: 44px; border-radius: 99px; background: var(--line); overflow: hidden; }
.bulk-prog-bar .fill { height: 100%; border-radius: 99px; }

/* 养号工作台：总览保持精简，计划/手动/记录通过二级标签隔离 */
.warm-workspace { min-height: 100%; box-sizing: border-box; }
.warm-command.bulk-card { margin: 0 0 12px; padding: 13px 16px; }
.warm-command:has(.warm-auto[hidden]) { display: none; }
.warm-auto { background: transparent; }
.warm-command-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; cursor: pointer; margin: 0; }
.warm-auto-title { display: flex; align-items: center; gap: 10px; min-width: 0; }
.warm-live-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--fg-dim); box-shadow: 0 0 0 4px color-mix(in srgb, var(--fg-dim) 10%, transparent); flex: none; }
.warm-auto.is-on .warm-live-dot { background: var(--green); box-shadow: 0 0 0 4px color-mix(in srgb, var(--green) 13%, transparent); }
.warm-auto.is-paused .warm-live-dot { background: var(--orange); box-shadow: 0 0 0 4px color-mix(in srgb, var(--orange) 14%, transparent); }
.warm-auto-txt, .warm-section-title { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.warm-auto-txt b, .warm-section-title b { color: var(--fg); font-size: 14px; }
.warm-auto-desc, .warm-section-title span { color: var(--fg-dim); font-size: 11.5px; }
.warm-auto-metrics { display: grid; grid-template-columns: repeat(4, minmax(100px, 1fr)); gap: 8px; margin-top: 12px; }
.warm-auto-kpi { border-left: 2px solid var(--line); padding: 3px 12px; min-width: 0; }
.warm-auto-kpi-k { color: var(--fg-dim); font-size: 10.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.warm-auto-kpi-v { color: var(--fg); font-size: 20px; font-weight: 600; line-height: 1.15; margin-top: 3px; font-variant-numeric: tabular-nums; }
.warm-auto-kpi-v.ok { color: var(--green); }
.warm-auto-kpi-v.warn { color: var(--orange); }
.warm-auto-kpi-v.err { color: var(--red); }
.warm-command-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 10px; padding-top: 9px; border-top: 1px solid var(--line); }
.warm-future-panel { margin-top: 10px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); }
.warm-plan-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; min-height: 20px; }
.warm-plan-head > b { font-size: 12px; color: var(--fg); }
.warm-auto-next { position: relative; margin-top: 8px; padding-left: 14px; display: grid; grid-template-columns: repeat(auto-fit, minmax(310px, 1fr)); gap: 7px; font-size: 11px; color: var(--fg-dim); max-height: 196px; overflow: auto; }
.warm-auto-next::before { content: ''; position: absolute; left: 3px; top: 11px; bottom: 11px; width: 1px; background: var(--line); }
.warm-auto-next:has(.warm-plan-empty)::before { display: none; }
.warm-plan-row { position: relative; display: grid; grid-template-columns: 105px minmax(0, 1fr) 54px; align-items: center; gap: 8px; padding: 7px 9px; border: 1px solid var(--line); border-radius: 7px; background: var(--bg2); }
.warm-plan-row::before { content: ''; position: absolute; left: -14px; top: 50%; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 3px var(--bg); transform: translate(-50%, -50%); }
.warm-plan-time { color: var(--fg-dim); font-variant-numeric: tabular-nums; }
.warm-plan-pair { color: var(--fg); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.warm-plan-state { justify-self: end; color: var(--accent); border: 1px solid color-mix(in srgb, var(--accent) 38%, transparent); border-radius: 999px; padding: 1px 6px; font-size: 10px; }
.warm-plan-empty { min-height: 48px; display: flex; align-items: center; justify-content: center; text-align: center; }
.warm-toggle { width: 40px; height: 22px; -webkit-appearance: none; appearance: none; background: var(--line); border-radius: 99px; position: relative; cursor: pointer; transition: background .15s; flex: none; margin: 0; }
.warm-toggle::after { content: ''; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: left .15s; }
.warm-toggle:checked { background: var(--green); }
.warm-toggle:checked::after { left: 20px; }

.warm-subtabs { display: flex; align-items: center; gap: 4px; margin-bottom: 12px; padding: 4px; width: fit-content; border: 1px solid var(--line); border-radius: 9px; background: var(--bg2); }
.warm-subtab { border: 0; border-radius: 6px; background: transparent; color: var(--fg-dim); padding: 7px 13px; cursor: pointer; font-size: 12px; }
.warm-subtab:hover { color: var(--fg); background: color-mix(in srgb, var(--fg) 4%, transparent); }
.warm-subtab.active { color: var(--fg); background: var(--bg); box-shadow: 0 1px 3px rgba(0,0,0,.14); }
.warm-subtab-count { display: inline-flex; align-items: center; justify-content: center; min-width: 17px; height: 17px; margin-left: 4px; padding: 0 4px; box-sizing: border-box; border-radius: 99px; background: var(--bg3); color: var(--fg-dim); font-size: 9.5px; }
.warm-subtab.active .warm-subtab-count { background: color-mix(in srgb, var(--accent) 18%, var(--bg3)); color: var(--accent); }
.warm-view[hidden] { display: none !important; }
.warm-view > .bulk-card { margin-bottom: 0; }

.warm-plans { padding: 0; overflow: hidden; }
.warm-plans-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 16px; border-bottom: 1px solid var(--line); }
.warm-plan-table-head, .warm-plan-card { display: grid; grid-template-columns: minmax(180px, 1.6fr) 90px 74px minmax(120px, .8fr) 130px 115px 54px; gap: 12px; align-items: center; }
.warm-plan-table-head { padding: 8px 14px; background: var(--bg3); color: var(--fg-dim); font-size: 10.5px; }
.warm-plan-list { max-height: calc(100vh - 360px); min-height: 150px; overflow: auto; }
.warm-plan-card { padding: 11px 14px; border-bottom: 1px solid var(--line); color: var(--fg-dim); font-size: 11.5px; cursor: pointer; transition: background .12s; }
.warm-plan-card:last-child { border-bottom: 0; }
.warm-plan-card:hover, .warm-plan-card.selected { background: color-mix(in srgb, var(--accent) 6%, var(--bg2)); }
.warm-plan-card:focus-visible { outline: 1px solid var(--accent); outline-offset: -2px; }
.warm-plan-main, .warm-plan-progress { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.warm-plan-main strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--fg); font-size: 12.5px; }
.warm-plan-main small, .warm-plan-progress small { color: var(--fg-dim); font-size: 9.5px; }
.warm-plan-progress strong, .warm-plan-cell-strong { color: var(--fg); font-weight: 600; font-variant-numeric: tabular-nums; }
.warm-plan-card-status { display: inline-flex; font-size: 10px; border-radius: 999px; padding: 2px 7px; color: var(--fg-dim); border: 1px solid var(--line); }
.warm-plan-card-status.active { color: var(--green); border-color: color-mix(in srgb, var(--green) 45%, transparent); }
.warm-plan-card-status.paused { color: var(--orange); border-color: color-mix(in srgb, var(--orange) 45%, transparent); }
.warm-plan-edit { justify-self: end; color: var(--accent); }

.warm-plan-backdrop { position: fixed; inset: 0; z-index: 210; background: rgba(0,0,0,.46); backdrop-filter: blur(1px); }
.warm-plan-editor { position: fixed; z-index: 211; top: 0; right: 0; bottom: 0; width: min(680px, 94vw); display: flex; flex-direction: column; background: var(--bg2); border-left: 1px solid var(--line); box-shadow: -12px 0 35px rgba(0,0,0,.28); }
.warm-plan-editor[hidden], .warm-plan-backdrop[hidden] { display: none !important; }
.warm-plan-editor-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 15px 18px; border-bottom: 1px solid var(--line); }
.warm-plan-editor-head > .mini { width: 30px; height: 30px; padding: 0; font-size: 18px; }
.warm-plan-editor-scroll { flex: 1; min-height: 0; overflow: auto; padding: 2px 18px 18px; }
.warm-editor-group { padding: 15px 0; border-bottom: 1px solid var(--line); }
.warm-editor-group:last-child { border-bottom: 0; }
.warm-editor-group-title { margin-bottom: 10px; color: var(--fg); font-size: 12.5px; font-weight: 600; }
.warm-plan-form-grid { display: grid; grid-template-columns: repeat(2, minmax(160px, 1fr)); gap: 10px 12px; }
.warm-plan-form-grid .fld { display: flex; flex-direction: column; gap: 4px; color: var(--fg-dim); font-size: 11px; }
.warm-plan-form-grid input, .warm-plan-form-grid select { width: 100%; min-width: 0; box-sizing: border-box; background: var(--bg); border: 1px solid var(--line); color: var(--fg); border-radius: 6px; padding: 7px 8px; }
.warm-plan-inline { display: flex; align-items: center; gap: 5px; }
.warm-plan-inline input { min-width: 0; }
.warm-plan-addfriend { margin: 10px 0 0; }
.warm-plan-accounts { height: 220px; }
.warm-plan-accounts label { justify-content: flex-start; }
.warm-plan-member-extra { margin-left: auto; display: inline-flex; gap: 5px; align-items: center; color: var(--fg-dim); font-size: 10px; }
.warm-plan-overlap { color: var(--orange); font-size: 10.5px; }
.warm-plan-corpus-lab { margin-top: 12px; }
#cr-warm-plan-corpus { width: 100%; min-height: 88px; max-height: 180px; resize: vertical; box-sizing: border-box; background: var(--bg); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); padding: 8px 9px; font: inherit; font-size: 12px; }
.warm-plan-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; padding: 12px 18px; border-top: 1px solid var(--line); background: var(--bg2); }
.warm-plan-actions #cr-warm-plan-msg { margin-right: auto; }
.warm-plan-actions .danger { color: var(--red); border-color: color-mix(in srgb, var(--red) 40%, var(--line)); }
body.warm-drawer-open { overflow: hidden; }

.warm-manual-card, .warm-history-card { min-height: 310px; }
.warm-manual-title { margin-bottom: 16px; }
.warm-history-card { display: flex; flex-direction: column; }
.warm-history-card .bulk-tasktbl-wrap { flex: 1; max-height: calc(100vh - 330px); min-height: 260px; }

@media (max-width: 1120px) {
  .warm-plan-table-head, .warm-plan-card { grid-template-columns: minmax(160px, 1.4fr) 82px 66px minmax(105px, .8fr) 120px 48px; }
  .warm-plan-table-head > :nth-child(6), .warm-plan-card > :nth-child(6) { display: none; }
}
@media (max-width: 760px) {
  .warm-auto-metrics { grid-template-columns: repeat(2, minmax(90px, 1fr)); }
  .warm-command-foot { align-items: flex-start; flex-direction: column; }
  .warm-subtabs { width: 100%; box-sizing: border-box; }
  .warm-subtab { flex: 1; padding-left: 6px; padding-right: 6px; }
  .warm-top { grid-template-columns: 1fr !important; }
  .warm-plan-table-head { display: none; }
  .warm-plan-card { grid-template-columns: minmax(140px, 1fr) 76px 42px 48px; gap: 8px; }
  .warm-plan-card > :nth-child(n+4):not(:last-child) { display: none; }
  .warm-plan-edit { display: block !important; }
  .warm-plan-form-grid { grid-template-columns: 1fr; }
  .warm-plan-row { grid-template-columns: 94px minmax(0, 1fr); }
  .warm-plan-state { display: none; }
}
.bulk-task-empty { font-size: 12px; color: var(--fg-dim); padding: 14px; text-align: center; }
.cr-bulk-msgitem { display: flex; align-items: center; gap: 8px; padding: 5px 9px; border: 1px solid var(--line); border-radius: 7px; background: var(--bg); font-size: 13px; }
.cr-bulk-msgitem .idx { color: var(--fg-dim); flex: 0 0 auto; }
.cr-bulk-msgitem .ico { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 20px; color: var(--fg-dim); }
.cr-bulk-msgitem .ico svg { width: 18px; height: 18px; display: block; }
.cr-bulk-msgitem .sum { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--fg); }
.cr-bulk-msgempty { font-size: 12px; color: var(--fg-dim); padding: 8px; text-align: center; }

/* 分身设备登录：二维码弹窗 + 方式标签 */
.cl-qr-box { width: 380px; text-align: center; }
.cl-qr-sub { font-size: 13px; color: var(--fg); margin-bottom: 12px; word-break: break-all; }
.cl-qr-img { display: flex; align-items: center; justify-content: center; min-height: 200px; background: #fff; border-radius: 8px; padding: 10px; }
.cl-qr-img img { display: block; image-rendering: pixelated; max-width: 100%; }
.cl-qr-raw { font-family: monospace; font-size: 11px; color: #333; word-break: break-all; max-height: 200px; overflow: auto; }
.cl-qr-count { font-size: 11.5px; color: var(--accent); margin-top: 8px; text-align: center; }
.ac-code-val { font-family: var(--mono); font-size: 30px; font-weight: 700; letter-spacing: 4px; text-align: center; color: var(--accent); background: var(--bg); border: 1px solid var(--line); border-radius: 10px; padding: 18px 10px; margin: 4px 0 6px; user-select: all; }
.cl-qr-tip { font-size: 12px; color: var(--fg-dim); margin: 12px 0; line-height: 1.5; text-align: left; }
.cl-mode { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 11px; background: color-mix(in srgb, var(--fg-dim) 18%, transparent); color: var(--fg-dim); vertical-align: middle; }
.cl-mode.gen { background: color-mix(in srgb, var(--accent) 20%, transparent); color: var(--accent); }
/* 个人号 / 商业号 标识：商业号高亮(橙)，个人号淡灰 */
.cl-biz { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 11px; background: color-mix(in srgb, var(--fg-dim) 18%, transparent); color: var(--fg-dim); vertical-align: middle; }
.cl-biz.biz { background: color-mix(in srgb, #e0a84a 26%, transparent); color: #e0a84a; }
/* 限制发消息中（2030）：红色描边小标签，title 显示解除时间 */
.cl-lock { display: inline-block; padding: 0 7px; border-radius: 10px; font-size: 11px; vertical-align: middle; background: color-mix(in srgb, var(--red, #e05b6b) 22%, transparent); color: var(--red, #e05b6b); cursor: help; }
/* 单号健康度药丸（账号健康中心 v1）：颜色按分档经 --hc 注入 */
.ac-health { display: inline-block; min-width: 20px; text-align: center; padding: 0 6px; line-height: 17px; border-radius: 6px; font-size: 11px; font-weight: 600; vertical-align: middle; color: var(--hc); border: 1px solid color-mix(in srgb, var(--hc) 45%, transparent); background: color-mix(in srgb, var(--hc) 14%, transparent); cursor: default; }
/* 账号中心：所有单元格垂直居中；账号类型标签已并入账号列 */
#panel-accounts table.reg-table tbody td { vertical-align: middle; }

.cr-media-box { width: 600px; }
.cr-media-wrap { display: flex; gap: 14px; min-height: 240px; }
.cr-media-types { flex: 0 0 140px; display: flex; flex-direction: column; gap: 6px; border-right: 1px solid var(--line); padding-right: 12px; }
.cr-media-type { display: flex; align-items: center; gap: 8px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); color: var(--fg); font-size: 13px; cursor: pointer; text-align: left; }
.cr-media-type:hover { border-color: var(--accent); }
.cr-media-type.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.cr-media-ico { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 20px; color: var(--fg-dim); }
.cr-media-ico svg { width: 19px; height: 19px; display: block; }
.cr-media-type.active .cr-media-ico { color: #fff; }
.cr-media-form { flex: 1; display: flex; flex-direction: column; gap: 12px; }
.cr-media-field { display: flex; flex-direction: column; gap: 5px; }
.cr-media-lab { font-size: 12px; color: var(--fg-dim); }
.cr-media-lab .req { color: #e05b6b; }
.cr-media-ctrl { width: 100%; background: var(--bg); border: 1px solid var(--line); border-radius: 7px; color: var(--fg); font-size: 13px; outline: none; padding: 7px 10px; font-family: inherit; box-sizing: border-box; }
.cr-media-ctrl:focus { border-color: var(--accent); }
textarea.cr-media-ctrl { resize: vertical; min-height: 70px; }
.cr-media-pick { align-self: flex-start; }
.cr-media-imgprev { position: relative; margin-top: 6px; display: inline-block; }
.cr-media-imgprev img { max-width: 160px; max-height: 160px; border-radius: 8px; display: block; border: 1px solid var(--line); }
.cr-media-imgclear { position: absolute; top: 4px; right: 4px; padding: 0 6px; line-height: 18px; background: rgba(0,0,0,.6); color: #fff; border: none; border-radius: 4px; }
.cr-media-filename { margin-top: 6px; font-size: 12px; color: var(--fg-dim); display: flex; align-items: center; gap: 8px; }
.cr-media-chk { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--fg); cursor: pointer; }
.cr-media-chk input { width: auto; }
.cr-media-group { display: flex; flex-direction: column; gap: 6px; border: 1px solid var(--line); border-radius: 8px; padding: 8px; background: var(--bg); }
.cr-media-subfield { display: flex; align-items: center; gap: 8px; }
.cr-media-subfield label { flex: 0 0 110px; font-size: 11.5px; color: var(--fg-dim); }
.cr-media-sub { flex: 1; background: var(--bg2); border: 1px solid var(--line); border-radius: 6px; color: var(--fg); font-size: 12px; padding: 5px 8px; outline: none; }
.cr-media-sub:focus { border-color: var(--accent); }
.cr-media-btns { display: flex; flex-direction: column; gap: 6px; margin-bottom: 6px; }
.cr-media-btnrow { display: flex; gap: 6px; align-items: center; }
.cr-media-btnrow input, .cr-media-btnrow select { background: var(--bg); border: 1px solid var(--line); border-radius: 6px; color: var(--fg); font-size: 12px; padding: 5px 8px; outline: none; }
.cr-media-btn-text { flex: 1; }
.cr-media-btn-url { flex: 1; }
.cr-media-btnrow input:focus, .cr-media-btnrow select:focus { border-color: var(--accent); }
.cr-media-btn-add { align-self: flex-start; }
/* 左侧类型列表较长时可滚动 */
.cr-media-types { max-height: 420px; overflow-y: auto; }
.cr-input-row textarea { flex: 1; resize: none; height: 46px; background: var(--bg); border: 1px solid var(--line); border-radius: 8px; color: var(--fg); padding: 8px 10px; font-family: inherit; font-size: 13px; outline: none; }
.cr-input-row textarea:focus { border-color: var(--accent); }
.cr-input-row button { padding: 0 22px; }
.cr-empty { padding: 20px 14px; text-align: center; color: var(--fg-dim); font-size: 12px; }

/* ================= 统计中心（统一卡片风格，scoped #panel-stats） ================= */
#panel-stats.panel.active { display: flex; flex-direction:column; min-height:0; overflow:hidden; padding: 14px 16px; }
.stats-scope .stats-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.stats-scope .stats-title-wrap { display: flex; align-items: baseline; gap: 10px; }
.stats-scope .stats-title { font-size: 18px; font-weight: 600; color: var(--fg); }
.stats-scope .stats-updated { font-size: 11.5px; color: var(--fg-dim); }
.stats-scope .stats-head-btns { display: flex; gap: 6px; align-items: center; }
.admin-stats-clear { color: var(--red); border-color: color-mix(in srgb, var(--red) 40%, var(--line)); }
.admin-stats-clear.armed { background: var(--red); color: #fff; border-color: var(--red); }
.stats-scope .stats-body { display: flex; flex-direction: column; gap: 12px; }

.stats-scope .stat-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; }
.stats-scope .stat-kpi { background: var(--bg2); border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; }
.stats-scope .stat-kpi-k { font-size: 12px; color: var(--fg-dim); }
.stats-scope .stat-kpi-v { font-size: 26px; font-weight: 600; color: var(--fg); margin-top: 3px; line-height: 1.1; }
.stats-scope .stat-kpi-v.ok { color: var(--green); }
.stats-scope .stat-kpi-v.err { color: var(--red); }
.stats-scope .stat-kpi-sub { font-size: 11px; color: var(--fg-dim); margin-top: 4px; }

.stats-scope .stat-grid2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 12px; }
.stats-scope .stat-card { background: var(--bg2); border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; }
.stats-scope .stat-card-h { font-size: 14px; font-weight: 600; color: var(--fg); margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }

.stats-scope .stat-health { display: flex; align-items: center; gap: 18px; }
.stats-scope .stat-donut-wrap { position: relative; width: 120px; height: 120px; flex: 0 0 auto; }
.stats-scope .stat-donut-c { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.stats-scope .stat-donut-c b { font-size: 22px; font-weight: 600; color: var(--fg); }
.stats-scope .stat-donut-c span { font-size: 10px; color: var(--fg-dim); }
.stats-scope .stat-legend { flex: 1; display: flex; flex-direction: column; gap: 7px; font-size: 12.5px; }
.stats-scope .stat-leg-row { display: flex; align-items: center; justify-content: space-between; color: var(--fg); }
.stats-scope .stat-leg-row.dim { color: var(--fg-dim); }
.stats-scope .stat-leg-row b { font-weight: 600; }
.stats-scope .stat-leg-l { display: flex; align-items: center; gap: 7px; }
.stats-scope .stat-dot { width: 9px; height: 9px; border-radius: 2px; display: inline-block; }
.stats-scope .stat-splits { display: flex; gap: 8px; margin-top: 12px; }
.stats-scope .stat-split { flex: 1; text-align: center; padding: 7px; background: var(--bg3); border-radius: 8px; font-size: 11.5px; color: var(--fg-dim); }
.stats-scope .stat-split b { color: var(--fg); font-weight: 600; }

.stats-scope .stat-barwrap { margin-bottom: 12px; }
.stats-scope .stat-bar-top { display: flex; justify-content: space-between; font-size: 12px; color: var(--fg-dim); margin-bottom: 4px; }
.stats-scope .stat-bar-top span:last-child { color: var(--fg); }
.stats-scope .stat-bar { height: 7px; background: var(--bg3); border-radius: 4px; overflow: hidden; }
.stats-scope .stat-bar-fill { height: 100%; border-radius: 4px; }
.stats-scope .stat-mini { font-size: 12px; color: var(--fg-dim); margin-top: 4px; }
.stats-scope .stat-mini b { color: var(--fg); font-weight: 600; }
.stats-scope .stat-mini b.err { color: var(--red); }
.stats-scope .stat-sub-h { font-size: 12px; color: var(--fg-dim); margin: 12px 0 6px; }
.stats-scope .stat-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.stats-scope .stat-chip { font-size: 11px; padding: 3px 9px; border-radius: 999px; background: var(--bg3); color: var(--fg-dim); }
.stats-scope .stat-chip.hot { background: color-mix(in srgb, var(--accent) 18%, transparent); color: var(--accent); }

.stats-scope .stat-nums { display: flex; gap: 18px; flex-wrap: wrap; font-size: 12px; color: var(--fg-dim); }
.stats-scope .stat-nums b { font-size: 16px; font-weight: 600; color: var(--fg); margin-left: 2px; }
.stats-scope .stat-nums b.ok { color: var(--green); }
.stats-scope .stat-nums b.err { color: var(--red); }
.stats-scope .stat-tag { font-size: 11px; padding: 2px 8px; border-radius: 999px; font-weight: 400; }
.stats-scope .stat-tag.run { background: color-mix(in srgb, var(--green) 20%, transparent); color: var(--green); }
.stats-scope .stat-tag.idle { background: var(--bg3); color: var(--fg-dim); }

.stats-scope .stat-trend { display: flex; align-items: flex-end; gap: 8px; height: 150px; }
.stats-scope .stat-tbar { flex: 1; display: flex; flex-direction: column; align-items: center; height: 100%; }
.stats-scope .stat-tbar-v { font-size: 11px; color: var(--fg-dim); height: 16px; }
.stats-scope .stat-tbar-track { flex: 1; width: 100%; display: flex; align-items: flex-end; justify-content: center; }
.stats-scope .stat-tbar-fill { width: 70%; min-height: 2px; background: var(--accent); border-radius: 4px 4px 0 0; }
.stats-scope .stat-tbar-x { font-size: 11px; color: var(--fg-dim); margin-top: 6px; }
.stats-scope .stat-empty { font-size: 12.5px; color: var(--fg-dim); text-align: center; padding: 24px 12px; }

/* 任务趋势：多折线 + 范围选择 + 放大 */
.stats-scope .stat-trend-ctrls { margin-left: auto; display: flex; gap: 4px; align-items: center; }
.stats-scope .stat-range-btn { border: 1px solid var(--line); background: var(--bg); color: var(--fg-dim); font-size: 11px; padding: 2px 8px; border-radius: 5px; cursor: pointer; line-height: 1.5; }
.stats-scope .stat-range-btn:hover { color: var(--fg); border-color: var(--accent); }
.stats-scope .stat-range-btn.on { background: var(--accent); color: #fff; border-color: var(--accent); }
.stats-scope .stat-trend-legend { display: flex; gap: 16px; margin-bottom: 8px; font-size: 12px; color: var(--fg-dim); }
.stats-scope .stat-trend-legend .stat-leg-row { display: flex; align-items: center; gap: 6px; }
.stats-scope .stat-trend-chart { width: 100%; }
.stats-scope .stat-linechart { width: 100%; height: 180px; display: block; }
.stats-scope .stat-trend-chart.big .stat-linechart { height: 380px; }
.stats-scope .lc-ax { font-size: 9px; fill: var(--fg-dim); }

/* Reporting workspace: compact controls, fixed headers and independent table scrolling. */
#panel-stats.active{display:flex;flex-direction:column;min-height:0;overflow:hidden}
#admin-sub-stats.active{display:flex;flex-direction:column;height:calc(100vh - 170px);min-height:520px}
#admin-sub-stats .stats-head{flex-wrap:wrap;gap:8px;flex-shrink:0}
#stats-body,#admin-stats-body{display:flex;flex-direction:column;flex:1;min-height:0;gap:12px}
.report-toolbar,.report-ranges,.report-meta,.report-detail-head{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap;flex-shrink:0}
.report-toolbar .warm-subtabs{margin:0}
.report-ranges{justify-content:flex-end;gap:8px;max-width:100%}
.report-ranges input,.report-ranges select,.report-filter{background:var(--bg2);color:var(--fg);border:1px solid var(--line);border-radius:7px;padding:6px 10px;font:inherit;min-height:34px;color-scheme:inherit}
.report-ranges input{width:146px}
.report-meta{color:var(--fg-dim);font-size:12px;position:relative}
.report-meta summary{cursor:pointer}
.report-meta details[open]{max-width:100%}
.report-meta p{max-width:900px;line-height:1.6}
.report-content{display:flex;flex-direction:column;gap:14px;flex:1;min-height:0}
.report-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;flex-shrink:0}
.report-kpis .stat-kpi{min-width:0;padding:16px 18px;background:var(--bg2);border:1px solid var(--line);border-radius:12px}
.report-kpis .stat-kpi-v{font-size:28px;margin:6px 0}
.report-kpis .stat-kpi-sub{font-size:12px;line-height:1.5}
.report-table-wrap{flex:1;min-height:160px;overflow:auto;border:1px solid var(--line);border-radius:12px;background:var(--bg2)}
.report-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.report-table th,.report-table td{padding:14px 16px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
.report-table th{position:sticky;top:0;background:var(--bg3);color:var(--fg-dim);z-index:1;font-weight:500}
.report-table td{height:52px;box-sizing:border-box}
.report-table tbody tr:hover{background:color-mix(in srgb,var(--bg3) 88%,var(--accent) 12%)}
.report-table small{display:block;color:var(--fg-dim);margin-top:5px;max-width:250px;overflow:hidden;text-overflow:ellipsis}
.report-table .report-empty{text-align:center;color:var(--fg-dim);height:160px}
.report-filter{margin-left:8px;width:130px;min-width:0}
.report-filter::placeholder{color:var(--fg-dim)}
.report-green{color:var(--green)}
.report-red{color:var(--red)}
.report-amber{color:var(--yellow,var(--accent))}
.report-overview{flex:1;min-height:0;overflow:auto;padding-right:3px}
.report-overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.report-overview-card{min-width:0;border:1px solid var(--line);border-radius:12px;background:var(--bg2);overflow:hidden}
.report-overview-card>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;flex-wrap:wrap}
.report-overview-card h3{font-size:15px;font-weight:600;margin:0}
.report-overview-card>header>span{font-size:11px;color:var(--fg-dim)}
.report-overview-card .report-table-wrap{min-height:0;border:0;border-radius:0;overflow:visible}
.report-overview-card .report-table{table-layout:fixed}
.report-overview-card .report-table th,.report-overview-card .report-table td{padding:6px 16px;white-space:normal;height:32px}
.report-overview-card .report-table th{position:static;font-size:11px}
.report-overview-card .report-table th:first-child{width:42%}
.report-overview-card .report-table td:nth-child(2){font-size:16px;font-variant-numeric:tabular-nums}
.report-overview-card .report-table small{display:inline;margin-left:8px;font-size:11px}
.report-card-note{padding:12px 18px;font-size:11px;color:var(--fg-dim);line-height:1.6}
.report-overview>.report-overview-card{margin-top:16px}
.report-overview>.report-kpis{margin-bottom:16px}
.report-donut-layout{display:flex;align-items:center;gap:24px;padding:12px 24px;min-height:200px}
.report-donut{width:180px;max-width:42%;flex-shrink:0;position:relative}
.report-donut svg{width:100%;display:block}
.report-donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;pointer-events:none}
.report-donut-center b{font-size:28px;font-weight:600;font-variant-numeric:tabular-nums}
.report-donut-center span{font-size:11px;color:var(--fg-dim)}
.report-donut-legend{flex:1;min-width:0;display:flex;flex-direction:column;gap:14px;font-size:12px}
.report-donut-legend>div{display:grid;grid-template-columns:minmax(0,1fr) auto 48px;gap:12px;align-items:center}
.report-donut-legend span,.report-chart-legend>span{display:flex;align-items:center;gap:8px}
.report-donut-legend small{font-size:11px;text-align:right;color:var(--fg-dim)}
.report-donut-legend b,.report-chart-chips b{font-weight:600;font-variant-numeric:tabular-nums}
.report-donut-legend i,.report-chart-legend i{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.report-chart-chips{display:flex;flex-wrap:wrap;gap:10px 20px;padding:10px 20px;color:var(--fg-dim);font-size:12px}
.report-chart-chips b{color:var(--fg);margin-left:5px}
.report-outcome-chips{border-top:1px solid var(--line);margin:4px 20px 0}
.report-outcome-chips .report-chart-chips{padding:12px 0 0}
.report-receipt-bars{padding:16px 20px;display:flex;flex-direction:column;gap:18px}
.report-receipt-row{display:grid;grid-template-columns:50px minmax(0,1fr) 50px;align-items:center;gap:14px;font-size:12px}
.report-receipt-row>span{color:var(--fg-dim)}
.report-receipt-row>b{text-align:right;font-variant-numeric:tabular-nums}
.report-bar-track{height:14px;border-radius:4px;background:var(--line);overflow:hidden}
.report-bar-track>div{height:100%;border-radius:4px}
.report-chart-legend{display:flex;flex-wrap:wrap;gap:10px 20px;padding:8px 20px;color:var(--fg-dim);font-size:12px}
.report-chart-tools{display:flex;align-items:center;gap:10px;padding:12px 0;flex-wrap:wrap}
.report-overview-card .report-chart-tools{padding:0 20px 8px}
.report-chart-tools .report-filter{margin:0;width:220px;max-width:100%}
.report-stacked-list{padding:12px 20px 20px;max-height:540px;overflow:auto}
.report-stack-row+.report-stack-row{margin-top:24px}
.report-stack-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:13px;margin-bottom:10px}
.report-stack-heading>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;min-width:0}
.report-stack-heading>span{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--fg-dim)}
.report-stack-heading .mini{margin-left:8px}
.report-stack-track{height:18px;display:flex;overflow:hidden;background:var(--line);border-radius:4px}
.report-stack-track>span{height:100%;flex-shrink:0}
.report-stack-counts{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:8px;color:var(--fg-dim);font-size:11px}
.report-stack-counts b{font-weight:500;color:var(--fg)}
.report-chart-empty{padding:55px 20px;text-align:center;color:var(--fg-dim);font-size:13px}
.report-trend-wrap{padding:4px 20px 0;overflow:auto}
.report-trend-chart{display:block;width:100%;min-width:520px;max-height:330px}
.report-trend-chart text{font-size:11px;fill:var(--fg-dim)}
.report-chart-grid{stroke:var(--line);stroke-dasharray:3 4;stroke-width:1}
.report-trend-chart circle:hover,.report-trend-chart circle:focus{stroke:var(--fg);stroke-width:2;outline:none}
@media(max-width:560px){.report-donut-layout{padding:12px;gap:12px}.report-donut-center b{font-size:22px}.report-donut-legend>div{gap:6px;grid-template-columns:minmax(0,1fr) auto 42px}.report-donut-legend{font-size:11px}.report-chart-chips{padding:10px 12px}.report-ranges input{width:126px}}
.report-daily{margin-top:16px}
.report-daily>summary{padding:12px 4px;color:var(--fg-dim);cursor:pointer;font-size:12px}
.report-daily .report-table-wrap{max-height:360px}
@media(max-width:1000px){.report-overview-grid{grid-template-columns:1fr}}
.report-detail-box{width:min(1100px,94vw)!important;max-width:94vw!important;height:min(760px,90vh);display:flex;flex-direction:column;gap:14px;overflow:hidden!important}
.report-detail-content{flex:1;min-height:0;display:flex;flex-direction:column}
.report-detail-content pre{max-width:350px;white-space:pre-wrap;overflow-wrap:anywhere}
.report-next{align-self:center;flex-shrink:0}
@media(max-width:900px){.report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.report-toolbar{align-items:flex-start}.report-ranges{justify-content:flex-start}.report-kpis .stat-kpi{padding:12px}}

/* 接码平台：六个平台共用模态骨架，复用 UI-03/04/05/07/18/23 的皮肤。 */
.cr-modal-box.sms-provider-modal-box { width: 960px; max-width: calc(100% - 48px); display: flex; flex-direction: column; gap: 12px; overflow: hidden; }
.sms-provider-head, .sms-provider-actions, .sms-provider-footer { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; flex: none; }
.sms-provider-head { justify-content: space-between; }
.sms-provider-head .cr-modal-title { margin: 0; }
.sms-provider-body { display: flex; flex-direction: column; gap: 12px; overflow: auto; min-height: 0; padding: 3px; margin: -3px; }
.sms-provider-body > * { flex-shrink: 0; }
.sms-provider-body p { margin: 0; }
.sms-provider-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.sms-provider-grid > .fld { min-width: 0; justify-content: flex-end; }
.sms-provider-grid > .sms-provider-wide { grid-column: 1 / -1; }
.sms-provider-grid input, .sms-provider-grid select { width: 100%; min-width: 0; box-sizing: border-box; }
.sms-provider-footer { padding-top: 12px; border-top: 1px solid var(--line); }
.sms-provider-modal-box button { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
.sms-provider-message, .sms-provider-body .hint { overflow-wrap: anywhere; }
.sms-provider-message:empty { display: none; }
.sms-provider-actions .fetch-bal { margin-left: auto; }
.fetch-bal { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; color: var(--fg-dim); font-size: 12px; }
.fetch-bal b { color: var(--green); font-size: 14px; font-family: var(--mono); }
.hero-catalog-summary { min-width: 0; color: var(--fg-dim); font-size: 11px; line-height: 1.4; overflow-wrap: anywhere; }
.hero-catalog-summary.error { color: var(--red); }
.hero-hint { font-size: 11px; color: var(--fg-dim); line-height: 1.4; }
.qm-login-wrap { align-self: end; }
.qm-modal-box .qm-import-fld { margin: 0; }
.qm-modal-box .qm-import-fld textarea { min-height: 140px; resize: vertical; white-space: pre; overflow: auto; font-family: var(--mono); }
@media (max-width: 600px) {
  .cr-modal-box.sms-provider-modal-box { max-width: calc(100% - 24px); }
  .sms-provider-grid { grid-template-columns: minmax(0, 1fr); }
  .sms-provider-footer > .secondary { flex: 1 1 0; min-width: 0; }
  .sms-provider-footer > .spacer { display: none; }
  .sms-provider-actions .fetch-bal { margin-left: 0; }
}

/* UI-23：统一方形勾选。表单 20px，表格/账号列表 18px；滑动开关单独保留。 */
:is(input[type="checkbox"]:not(.warm-toggle), .cr-bub-check) { appearance: none; -webkit-appearance: none; box-sizing: border-box; width: var(--check-size, 20px); height: var(--check-size, 20px); min-width: var(--check-size, 20px); min-height: var(--check-size, 20px); flex: 0 0 var(--check-size, 20px); margin: 0; padding: 0; display: inline-grid; place-content: center; border: 1px solid var(--fg-dim); border-radius: calc(var(--check-size, 20px) / 4); background: var(--bg); color: var(--bg); cursor: pointer; vertical-align: middle; transition: background .12s, border-color .12s; }
:is(input[type="checkbox"]:not(.warm-toggle), .cr-bub-check)::after { content: ''; box-sizing: border-box; width: calc(var(--check-size, 20px) * .3); height: calc(var(--check-size, 20px) * .5); border: solid currentColor; border-width: 0 2px 2px 0; transform: translateY(-1px) rotate(45deg); visibility: hidden; }
input[type="checkbox"]:not(.warm-toggle):is(:checked,:indeterminate), .cr-bub.checked .cr-bub-check { background: var(--accent); border-color: var(--accent); }
input[type="checkbox"]:not(.warm-toggle):checked::after, .cr-bub.checked .cr-bub-check::after { visibility: visible; }
input[type="checkbox"]:not(.warm-toggle):indeterminate::after { width: 10px; height: 2px; border: 0; background: currentColor; transform: none; visibility: visible; }
input[type="checkbox"]:not(.warm-toggle):focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
input[type="checkbox"]:not(.warm-toggle):disabled { opacity: .4; cursor: not-allowed; }
.ui-check-row { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 8px 12px; box-sizing: border-box; border: 1px solid var(--line); border-radius: 8px; background: var(--bg2); color: var(--fg); font-size: 13px; cursor: pointer; }
.ui-check-row > span { min-width: 0; overflow-wrap: anywhere; line-height: 1.5; }
.ui-check-row:has(input:checked) { border-color: color-mix(in srgb, var(--accent) 50%, var(--line)); background: color-mix(in srgb, var(--accent) 8%, var(--bg2)); }
.ui-check-row:has(input:not(:disabled)):hover { border-color: var(--accent); }
.ui-check-row:has(input:disabled) { cursor: not-allowed; }
.ui-check-row:has(input:disabled) > span { color: var(--fg-dim); }
@media (prefers-reduced-motion: reduce) { input[type="checkbox"]:not(.warm-toggle) { transition: none; } }
@media (forced-colors: active) { input[type="checkbox"]:not(.warm-toggle) { appearance: auto; } input[type="checkbox"]:not(.warm-toggle)::after { display: none; } }

:where(table, .cr-selall, .cr-bulk-senders, .cr-list-group-head, .lg-auto) input[type="checkbox"]:not(.warm-toggle),
input[type="checkbox"].ui-checkbox--compact, .cr-bub-check { --check-size: 18px; }
:where(label:has(> input[type="checkbox"]:not(.warm-toggle)):not(.ui-check-row)) { display: inline-flex; align-items: center; gap: 8px; min-height: 28px; cursor: pointer; }
label:has(> input[type="checkbox"]:not(.warm-toggle):disabled) { cursor: not-allowed; }
input[type="checkbox"]:not(.warm-toggle):not(:disabled):hover { border-color: var(--accent); }
/* 代理表头的勾选与“使用”文本要留出间距。 */
.config-proxy-use-col input[type="checkbox"] { margin-right: 5px; }

/* UI-07 + UI-06：可搜索候选，沿用输入和操作菜单皮肤。 */
.catalog-suggestions { box-sizing: border-box; min-width: 0; overflow: auto; overscroll-behavior: contain; }
.catalog-suggestions .ops-item { white-space: normal; overflow-wrap: anywhere; }
.catalog-suggestions .ops-item[aria-selected="true"] { background: color-mix(in srgb, var(--accent) 16%, var(--bg)); }
.catalog-suggestions-status { padding: 7px 11px; font-size: 12px; color: var(--fg-dim); overflow-wrap: anywhere; }

/* 注册详情：倒计时保留在事件前面，复用原响应框字体与主题。 */
.reg-detail #detail-countdowns { flex: 0 0 auto; max-height: 160px; border-bottom: 1px solid var(--line); color: var(--st-wait); font-variant-numeric: tabular-nums; }
.reg-detail #detail-countdowns[hidden] { display: none; }
.reg-detail.floating { left: max(8px, calc(100vw - 860px)); top: max(8px, calc(100vh - 600px)); max-width: calc(100vw - 16px); max-height: calc(100vh - 16px); }
.reg-detail #detail-body { min-height: 0; }
.reg-detail .resp-head > span:first-child { flex-shrink: 0; }
.reg-detail #detail-meta { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.reg-detail #detail-close { flex-shrink: 0; }

/* Unified entry: layout only; select uses the existing UI-07 form skin. */
#edge-server-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 8px 16px; border-bottom: 1px solid var(--line); }
#edge-server-select { width: 260px; max-width: 100%; }
#edge-server-bar [role="status"] { overflow-wrap: anywhere; min-width: 0; }

/* 首屏先完成身份、权限和运行时能力初始化，避免未授权页面短暂绘制。 */
html[data-ui-boot="pending"] #app-shell { visibility: hidden; }
#app-boot-status {
  position: fixed; inset: 0; z-index: 10000;
  display: grid; place-items: center; padding: 24px; box-sizing: border-box;
  background: var(--bg); color: var(--fg);
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity 180ms ease, visibility 0s linear 180ms;
}
html[data-ui-boot="pending"] #app-boot-status {
  opacity: 1; visibility: visible; pointer-events: auto; transition: none;
}
.app-boot-content { width: 100%; max-width: 320px; text-align: center; }
.app-boot-mark {
  display: grid; place-items: center; width: 56px; height: 56px; margin: 0 auto 24px;
  border: 1px solid var(--line); border-radius: 12px; background: var(--bg2);
  color: var(--accent); font-size: 18px; font-weight: 700; letter-spacing: 1px;
}
.app-boot-title { margin: 0; font-size: 16px; font-weight: 600; line-height: 1.5; }
.app-boot-description { margin: 8px 0 0; color: var(--fg-dim); font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
.app-boot-progress { width: 160px; height: 3px; margin: 24px auto 0; border-radius: 4px; overflow: hidden; background: var(--line); }
.app-boot-progress > span { display: block; width: 40%; height: 100%; border-radius: inherit; background: var(--accent); animation: app-boot-progress 1600ms ease-in-out infinite; }
#app-boot-status[data-state="error"] .app-boot-progress { display: none; }
#app-boot-retry { margin-top: 24px; }
@keyframes app-boot-progress { from { transform: translateX(-110%); } to { transform: translateX(360%); } }
@media (prefers-reduced-motion: reduce) {
  #app-boot-status { transition: none; }
  .app-boot-progress > span { animation: none; margin: auto; }
}
.settings-section[data-settings-feature][hidden] { display: none; }

/* Registration report composition: reuse UI-25 charts and UI-05 detail buttons. */
.report-registration-stage h4{margin:12px 20px 0;font-size:13px;font-weight:600}
.report-registration-breakdown{display:flex;flex-direction:column;gap:16px;min-width:0}
[data-report-block="registration-statuses"] .report-stack-counts{display:none}
[data-report-block="registration-statuses"] .report-stack-row+.report-stack-row{margin-top:14px}

/* Header preference composition: UI-05 compact actions + UI-06 option menu. */
#tab-strip{flex-wrap:wrap;align-items:center}
#tab-strip>.tab{white-space:nowrap;flex-shrink:0}
.shell-actions{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}
.shell-preference{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.shell-preference[aria-expanded="true"]{color:var(--accent);border-color:var(--accent)}
.shell-chevron{font-size:11px;color:var(--fg-dim)}
.shell-preference-menu{width:272px;max-width:calc(100vw - 16px);box-sizing:border-box;max-height:calc(100vh - 16px);overflow:auto}
.shell-preference-menu .ops-item{display:flex;align-items:center;gap:10px}
.shell-preference-menu .ops-item b{display:block;font-weight:500}
.shell-preference-menu .ops-item small{display:block;margin-top:4px;color:var(--fg-dim);font-size:11px;white-space:normal}
.shell-preference-menu .ops-item[aria-checked="true"]{background:color-mix(in srgb,var(--accent) 16%,var(--bg))}
.shell-menu-check{margin-left:auto;color:var(--accent);visibility:hidden}
[aria-checked="true"]>.shell-menu-check{visibility:visible}
.shell-menu-heading,.shell-menu-note{padding:8px 11px;color:var(--fg-dim);font-size:11px;line-height:1.5}
.shell-menu-note{border-top:1px solid var(--line);margin-top:4px}
@media(max-width:700px){#tab-strip{gap:4px;padding:8px 8px 0}.shell-actions{margin-left:0;width:100%;justify-content:flex-end}#tab-strip>.spacer{display:none}#tab-strip>.tab{padding-left:12px;padding-right:12px}}

.shell-preference:focus-visible,.shell-preference-menu .ops-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* User menu: compact action and existing UI-06 menu, with a circular initial. */
.shell-user{min-width:0;max-width:220px}
.shell-user-avatar{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;flex:none;border-radius:50%;background:color-mix(in srgb,var(--accent) 16%,var(--bg));color:var(--accent);font-weight:600}
.shell-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.shell-user-menu{width:200px}
.shell-user-menu [hidden]{display:none}
.shell-user-error{color:var(--red)}
.shell-empty{padding:32px 16px;color:var(--fg-dim);text-align:center}
@media(max-width:700px){.shell-user{max-width:150px}.shell-actions{max-width:100%;flex-wrap:wrap}}

.admin-user-identity{display:flex;flex-direction:column;min-width:0;gap:4px;flex:1}
.admin-user-node{font-size:11px;color:var(--fg-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#admin-node-filter-wrap{margin:8px 0}
#admin-node-filter-wrap[hidden],#admin-add-node-wrap[hidden],#admin-placement[hidden],#admin-user-enabled[hidden]{display:none}

/* Central user management reuses form/list skins; only arrangement changes here. */
#admin-node-filter-wrap select, #admin-add-node { min-width: 0; width: 100%; }
.admin-user-node { overflow-wrap: anywhere; }
@media (max-width: 720px) {
  .admin-wrap { flex-direction: column; gap: 12px; }
  .admin-side, .admin-main { width: 100%; box-sizing: border-box; }
  .admin-side { flex-basis: auto; }
  .admin-user-list { max-height: 220px; }
  .admin-redis-grid, .admin-tabs-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-cfg-foot { flex-wrap: wrap; }
}

/* Registration queue composes existing buttons, progress, modal and table skins. */
#panel-register .reg-actions .reg-queue-slot { flex: 1 1 220px; min-width: 180px; display: flex; justify-content: center; }
.reg-queue-trigger { display: grid; grid-template-columns: auto auto; align-items: center; gap: 4px 12px; width: 250px; max-width: 100%; }
.reg-queue-trigger > span { overflow: hidden; text-overflow: ellipsis; }
.reg-queue-trigger .ac-group-progress { grid-column: 1 / -1; width: 100%; margin: 0; }
.reg-queue-trigger .ac-group-progress[hidden] { display: none !important; }
#reg-queue-modal { position: fixed; z-index: 1200; }
.cr-modal-box.reg-queue-box { width: 960px; max-width: calc(100vw - 32px); display: flex; flex-direction: column; gap: 12px; overflow: hidden; }
.reg-queue-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.reg-queue-head .cr-modal-title { margin: 0; }
.reg-queue-box p { margin: 0; }
.reg-queue-box .reg-queue-filters { flex-wrap: wrap; margin: 0; }
.reg-queue-filters .fld { flex: 1 1 160px; min-width: 0; }
.reg-queue-filters input { width: 100%; box-sizing: border-box; }
#reg-queue-table-wrap { flex: 1 1 auto; min-height: 110px; max-height: 50vh; overflow: auto; }
#reg-queue-table-wrap table { min-width: 590px; width: 100%; }
.reg-queue-box .cr-modal-foot { flex-wrap: wrap; }
#reg-queue-error { color: var(--red); }
#reg-queue-table-wrap table { table-layout: fixed; min-width: 700px; }
#reg-queue-table-wrap th:nth-child(1) { width: 56px; }
#reg-queue-table-wrap th:nth-child(2) { width: 180px; }
#reg-queue-table-wrap th:nth-child(3) { width: 160px; }
#reg-queue-table-wrap th:nth-child(5) { width: 120px; }
#reg-queue-table-wrap td { overflow: hidden; text-overflow: ellipsis; }
@media (max-height: 520px) {
  .cr-modal-box.reg-queue-box { max-height: calc(100vh - 24px); overflow: auto; }
  #reg-queue-table-wrap { flex: 0 0 auto; max-height: 35vh; }
}

/* Sign-in composes existing fields, primary/mini buttons and warm theme tokens. */
html.login-document { height: auto; min-height: 100%; overflow: auto; }
body.login-page { height: auto; min-height: 100vh; min-height: 100dvh; overflow: auto; display: grid; place-items: center; padding: 32px 20px; }
.login-shell { width: min(100%, 400px); }
.login-card { padding: 28px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg2); }
.login-brand { display: flex; align-items: center; gap: 12px; padding-bottom: 24px; border-bottom: 1px solid var(--line); }
.login-brand img { flex: none; object-fit: contain; }
.login-wordmark { font-size: 22px; font-weight: 650; letter-spacing: -.5px; line-height: 1.2; }
.login-brand p { margin: 5px 0 0; font-size: 12px; color: var(--fg-dim); }
.login-intro { margin: 24px 0 22px; }
.login-intro h1 { margin: 0 0 8px; font-size: 18px; font-weight: 600; }
.login-intro p { margin: 0; color: var(--fg-dim); font-size: 13px; line-height: 1.6; }
.login-field { gap: 8px; margin-bottom: 16px; }
.login-field > span, .login-field > label { font-size: 12px; color: var(--fg-dim); }
.login-field input { width: 100%; min-width: 0; height: 42px; font: inherit; }
.login-password { position: relative; }
.login-password input { padding-right: 112px; }
.login-password .mini { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); margin: 0; }
.login-error { color: var(--red); font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
.login-error:not(:empty) { margin: 0 0 16px; }
button.login-submit { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; min-height: 42px; }
.login-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding: 16px 2px 0; color: var(--fg-dim); font-size: 11px; }
.login-footer select.ui-select { width: auto; font-size: 12px; }
.login-page button:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
@media (max-width: 420px) { body.login-page { padding: 24px 16px; } .login-card { padding: 24px 20px; } }
@media (prefers-reduced-motion: reduce) { .login-page button { transition: none; } }

/* Registration columns reuse the existing table/filter skin. */

#panel-register #reg-table { min-width: 1150px; }
#reg-table .reg-channel, #reg-table .reg-account-type { text-overflow: ellipsis; }
