@keyframes modalBoxIn {
  from { opacity: 0; transform: scale(.96) translateY(-8px); }
  to   { opacity: 1; transform: scale(1)   translateY(0); }
}

.app-modal-overlay {
  display: none; position: fixed; inset: 0;
  background: var(--overlay); z-index: 1000;
  align-items: center; justify-content: center;
}
.app-modal-overlay.show { display: flex; }
/* 判定详情查看弹窗需可叠加在站点配置弹窗之上 */
#ins-view-modal { z-index: 1200; }
.app-modal-box {
  background: var(--white); border-radius: 8px; padding: 24px;
  width: 380px;
  box-shadow: var(--shadow-lg);
  animation: modalBoxIn .18s cubic-bezier(.16,1,.3,1);
  box-sizing: border-box;
}
.modal-sm { width: 440px; }
/* 中型弹窗：与 modal-lg.modal-vp 同框架（零内边距盒 + 头部下边框 + body-pad 滚动区），宽度 840（容 4 张 pft-card 一行） */
.app-modal-box.modal-md { width: 840px; max-width: 92vw; max-height: 85vh; display: flex; flex-direction: column; padding: 0; }
.app-modal-box.modal-md .pft-cards { grid-template-columns: repeat(4, 1fr); }
.app-modal-box.modal-md .app-modal-head { padding: 14px 20px; border-bottom: 1px solid var(--border); flex-shrink: 0; margin-bottom: 0; }
.app-modal-box.modal-md .app-modal-body { margin-bottom: 0; }
.app-modal-box.modal-md .app-modal-body.body-pad { padding: 16px 20px; overflow-y: auto; min-height: 0; }
.modal-lg { width: 960px; }
.modal-xl { width: 1200px; max-width: 96vw; max-height: 90vh; display: flex; flex-direction: column; }
.modal-xl .app-modal-body { flex: 1; overflow-y: auto; min-height: 0; }
.modal-2xl { width: 1600px; max-width: 98vw; }
.modal-full { width: 100vw; height: 100vh; max-width: none; max-height: none; border-radius: 0; box-shadow: none; }
/* ════ modal-full 全屏弹窗框架：覆盖 #app-modal 通用 90vw/85vh 上限与 modal-vp 的 88vh 高度 ════ */
#app-modal .app-modal-box.modal-full { max-width: none; max-height: none; }
.app-modal-box.modal-full.modal-vp { padding: 0; height: 100vh; max-height: none; }
.app-modal-box.modal-full.modal-vp .app-modal-head {
  padding: 14px 20px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
  margin-bottom: 0;
}
.app-modal-box.modal-full.modal-vp .app-modal-body { margin-bottom: 0; }
.app-modal-box.modal-full.modal-vp .app-modal-body.body-pad {
  padding: 16px 20px;
  overflow-y: auto;
  min-height: 0;
}
.app-modal-box.modal-full.modal-vp .app-modal-foot {
  padding: 12px 20px;
  border-top: 1px solid var(--border);
  margin-top: 0;
}

/* 通用提示/确认弹窗：长内容自动内部滚动，避免超出视口 */
#app-modal .app-modal-box {
  max-width: 90vw;
  max-height: 85vh;
  display: flex;
  flex-direction: column;
}
#app-modal .app-modal-body {
  flex: 1;
  overflow-y: auto;
  min-height: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}
#app-modal .app-modal-input-wrap { flex-shrink: 0; }

/* 任务中心明细弹窗：表格长 URL/JSON 自动折行 */
#jc-view-body,
#jc-all-body {
  min-width: 0;
}
#jc-view-body table,
#jc-all-body table {
  table-layout: fixed;
  width: 100%;
}
#jc-view-body td,
#jc-view-body th,
#jc-all-body td,
#jc-all-body th {
  word-break: break-all;
  overflow-wrap: anywhere;
}
#jc-view-body th:last-child,
#jc-all-body th:last-child {
  width: 160px;
}

.app-modal-head  { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
/* 弹窗标题内的链接与纯文本外观一致（如站点配置标题链到站点工作区） */
.app-modal-title a { color: inherit; text-decoration: none; }
.app-modal-head .app-modal-title { margin-bottom: 0; }
.app-modal-close {
  width: 30px; height: 30px; border-radius: 6px; border: none;
  background: var(--bg); cursor: pointer; font-size: 16px; color: var(--text-muted);
  display: flex; align-items: center; justify-content: center;
  transition: background .12s; flex-shrink: 0;
}
.app-modal-close:hover { background: var(--border); }
.app-modal-title { font-size: 14px; font-weight: 700; margin-bottom: 10px; }
.app-modal-body  { font-size: 13px; color: var(--text-muted); line-height: 1.6; margin-bottom: 18px; box-sizing: border-box; }
.app-modal-input-wrap { margin-bottom: 18px; }
.app-modal-input-field {
  width: 100%; padding: 7px 10px;
  border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; color: var(--text);
  outline: none; box-sizing: border-box;
  transition: border-color .15s, box-shadow .15s;
  font-family: inherit; background: var(--white);
}
.app-modal-input-field:focus {
  border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-light);
}
.app-modal-foot  { display: flex; justify-content: flex-end; gap: 6px; margin-top: 16px; }
.modal-vp { height: 88vh; max-height: 1000px; display: flex; flex-direction: column; }
.modal-vp .app-modal-body { flex: 1; overflow: hidden; }
/* 统一 modal-lg + modal-vp 弹窗大框架 */
.app-modal-box.modal-lg.modal-vp {
  padding: 0;
}
.app-modal-box.modal-lg.modal-vp .app-modal-head {
  padding: 14px 20px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
  margin-bottom: 0;
}
.app-modal-box.modal-lg.modal-vp .app-modal-body {
  margin-bottom: 0;
}
.app-modal-box.modal-lg.modal-vp .app-modal-foot {
  padding: 12px 20px;
  border-top: 1px solid var(--border);
  margin-top: 0;
}
/* ════ body 内边距变体（大弹窗内容区留白） ════ */
.app-modal-box.modal-lg.modal-vp .app-modal-body.body-pad {
  padding: 16px 20px;
  overflow-y: auto;
  min-height: 0;
}
.app-modal-box.modal-xl.modal-vp .app-modal-body.body-pad {
  padding: 16px 20px;
  overflow-y: auto;
  min-height: 0;
}
/* 自动巡检弹窗：高度随内容自适应（modal-vp 默认固定 88vh，内容少时下方大片空白）；
   站点多时由内部列表自己的 max-height 滚动 */
#sys-con-auto-overlay .app-modal-box.modal-lg.modal-vp {
  height: auto;
  max-height: 85vh;
}
/* 统一 modal-xl + modal-vp 弹窗大框架 */
.app-modal-box.modal-xl.modal-vp {
  padding: 0;
}
.app-modal-box.modal-xl.modal-vp .app-modal-head {
  padding: 14px 20px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
  margin-bottom: 0;
}
.app-modal-box.modal-xl.modal-vp .app-modal-body {
  margin-bottom: 0;
}
.app-modal-box.modal-xl.modal-vp .app-modal-foot {
  padding: 12px 20px;
  border-top: 1px solid var(--border);
  margin-top: 0;
}
/* ════ 站点正文指令管理弹窗 ════ */
.app-modal-box.evo-mgr-box { overflow: hidden; }
.app-modal-box.evo-mgr-box .app-modal-body { overflow-y: auto; }

/* ════ 通用 Modal.show 里嵌 niche-cfg-box 结构时，让 emb-topbar 固定、niche-cfg-body 自己滚动
   （generic #app-modal-body 默认整体滚动，会把筛选栏一起卷走，这里改成 body 自身不滚、
   转交给内层 .niche-cfg-body 滚动，跟真实「全部任务」弹窗一致） ════ */
.app-modal-body.wop-body {
  display: flex; flex-direction: column;
  padding: 0; margin-bottom: 0;
  overflow: hidden !important;
}
.evo-mgr-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.evo-mgr-table th { text-align: left; padding: 7px 14px; background: var(--bg); color: var(--text-faint); border-bottom: 1px solid var(--border); font-weight: 600; font-size: 11px; }
.evo-mgr-table td { padding: 8px 14px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.evo-mgr-table tr:last-child td { border-bottom: none; }
.evo-mgr-table tr:hover td { background: var(--hover); }
.evo-mgr-name { max-width: 260px; }
.evo-mgr-rename-input { width: 100%; font-size: 12px; border: 1px solid var(--accent); border-radius: 4px; padding: 2px 6px; outline: none; }
.evo-mgr-actions { white-space: nowrap; }
.evo-mgr-actions .btn-sm { margin-right: 3px; }
.evo-version-badge { display: inline-block; padding: 2px 7px; background: var(--accent); color: var(--white); border-radius: 4px; font-size: 11px; font-weight: 700; }
/* 编辑视图 */
.evo-mgr-edit-wrap { display: flex; flex-direction: column; height: 100%; }
.evo-mgr-edit-head { display: flex; align-items: center; gap: 10px; padding: 10px 16px; border-bottom: 1px solid var(--border); flex-shrink: 0; }
.evo-mgr-edit-title { font-size: 13px; font-weight: 600; }
.evo-mgr-edit-ta { flex: 1; width: 100%; border: none; outline: none; resize: none; font-size: 12px; line-height: 1.75; font-family: var(--font-mono, monospace); padding: 14px 16px; }
.evo-mgr-edit-foot { display: flex; gap: 8px; justify-content: flex-end; padding: 10px 16px; border-top: 1px solid var(--border); flex-shrink: 0; }

/* 文档型弹窗：内容长、需要内部滚动区域 */
.modal-doc { padding: 0; }
.modal-doc .app-modal-head { padding: 24px 24px 0; }
.modal-doc .app-modal-body { flex: 1; overflow: hidden; padding: 0; display: flex; flex-direction: column; }
.modal-doc .modal-scroll   { overflow-y: auto; flex: 1; padding: 24px; }
.app-modal-cancel {
  padding: 4px 9px; border-radius: 6px;
  border: 1px solid var(--border); background: var(--white);
  color: var(--text-muted); font-size: 11px; font-weight: 600; cursor: pointer;
  transition: border-color .12s, color .12s;
}
.app-modal-cancel:hover { border-color: var(--accent); color: var(--accent); }
.app-modal-confirm {
  padding: 4px 9px; border-radius: 6px;
  background: var(--accent); color: var(--white); border: 1px solid var(--accent);
  font-size: 11px; font-weight: 600; cursor: pointer;
  transition: background .12s;
}
.app-modal-confirm:hover        { background: var(--accent-hover); }
.app-modal-confirm.danger       { background: var(--red); border-color: var(--red); }
.app-modal-confirm.danger:hover { background: var(--red-hover); border-color: var(--red-hover); }
.clr-group { margin-bottom: 12px; }
.clr-group:last-child { margin-bottom: 0; }
.clr-group-label { font-size: 11px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 4px; }
.clr-opt-list { display: flex; flex-direction: column; gap: 2px; }
.clr-opt { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text); cursor: pointer; padding: 3px 0; }
.clr-opt input[type=checkbox] { width: 15px; height: 15px; accent-color: var(--accent); cursor: pointer; flex-shrink: 0; }

/* ════════════════════════════════
   AI 生成目录弹窗
   ════════════════════════════════ */
.gen-modal {
  background: var(--white); border-radius: 8px; padding: 24px 28px; width: 440px;
  box-shadow: var(--shadow-lg);
  animation: modalBoxIn .18s cubic-bezier(.16,1,.3,1);
}
.gen-modal h3  { font-size: 14px; font-weight: 700; margin-bottom: 4px; }
.gen-sub       { font-size: 12px; color: var(--text-muted); margin-bottom: 14px; }
.gen-log {
  background: var(--bg); border-radius: 6px; padding: 10px 12px;
  font-size: 11px; color: var(--text-muted); line-height: 2;
  min-height: 90px; max-height: 190px; overflow-y: auto; font-family: monospace;
}
.log-line { animation: fadeIn .22s ease; }
@keyframes fadeIn { from{opacity:0;transform:translateY(3px)} to{opacity:1;transform:none} }
.prog-wrap2  { height: 3px; background: var(--border-light); border-radius: 2px; margin-top: 10px; overflow: hidden; }
.prog-fill2  { height: 100%; background: var(--accent); border-radius: 2px; transition: width .3s; }
.gen-done-btn {
  width: 100%; margin-top: 14px; padding: 10px; border-radius: 8px;
  background: var(--accent); color: var(--white); border: none; cursor: pointer;
  font-size: 13px; font-weight: 600; 
}

/* ════════════════════════════════
   站点配置弹窗
   ════════════════════════════════ */
.app-modal-box.site-cfg-box {
  padding: 0;
}
.app-modal-box.site-cfg-box .app-modal-head {
  padding: 16px 20px 14px; border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between;
  flex-shrink: 0;
  margin-bottom: 0;
}
.app-modal-box.site-cfg-box .app-modal-title { font-size: 14px; font-weight: 700; }
/* left-right layout */
.scfg-lr { display: flex; flex: 1; overflow: hidden; }
.scfg-nav {
  width: 130px; flex-shrink: 0; border-right: 1px solid var(--border);
  padding: 12px 8px; display: flex; flex-direction: column; gap: 2px;
  background: var(--bg);
}
.scfg-nav-item {
  padding: 8px 12px; border-radius: 6px; font-size: 13px; color: var(--text-muted);
  cursor: pointer; transition: all .12s; user-select: none;
}
.scfg-nav-item:hover { background: var(--border-light); color: var(--text); }
.scfg-nav-item.active { background: var(--accent-light); color: var(--accent); font-weight: 600; }
.scfg-panel { padding: 20px 24px 8px; height: 100%; overflow-y: auto; box-sizing: border-box; }
.scfg-row { display: flex; gap: 12px; margin-bottom: 12px; }
.scfg-field { flex: 1; min-width: 0; }
/* 卡片行：始终 3 列等宽，切换 tab 时视觉一致 */
.scfg-panel-v2 .scfg-row:has(> .scfg-field.border) {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
}
.scfg-field.align-end { display: flex; justify-content: flex-end; align-items: center; padding-top: 22px; gap: 8px; }
.scfg-field-wide   { flex: 1.5; }
.scfg-field-narrow { flex: 0 0 100px; }
.scfg-field-fixed  { flex: 0 0 160px; }
.scfg-field label, .scfg-field-label {
  display: block; font-size: 11px; font-weight: 600;
  color: var(--text-muted); margin-bottom: 4px;
}
.scfg-field input,
.scfg-field select,
.scfg-field textarea {
  width: 100%; padding: 7px 10px;
  border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; color: var(--text); outline: none;
  background: var(--white); transition: border-color .12s;
  font-family: inherit;
}
.scfg-field input:focus,
.scfg-field select:focus,
.scfg-field textarea:focus { border-color: var(--accent); }
.scfg-field input.pw { font-family: monospace; letter-spacing: .05em; }
.scfg-field.align-end input { width: auto; }
/* 宽/高尺寸输入框：复用标准边框，定宽不撑满（含品牌图行等无 .scfg-field 包裹的场景）*/
.scfg-size-input,
.scfg-field .scfg-size-input {
  width: 84px; padding: 7px 10px;
  border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; color: var(--text); outline: none;
  background: var(--white); transition: border-color .12s;
  font-family: inherit;
}
.scfg-size-input:focus { border-color: var(--accent); }
.scfg-hint { font-size: 11px; color: var(--text-faint); margin-top: 3px; }
.scfg-inner-title {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .5px; color: var(--text-faint);
  border-top: 1px solid var(--border);
  padding: 12px 0 4px;
  margin: 8px 0 0;
}.scfg-section-title {
  font-size: 12px; font-weight: 700; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .05em;
  margin-bottom: 8px;
}
.scfg-translate-action {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 0; border-bottom: 1px solid var(--border);
}
.scfg-translate-action:last-child { border-bottom: none; }
.scfg-translate-action-label { font-size: 13px; font-weight: 600; color: var(--text); }
.scfg-translate-action-sub   { font-size: 11px; color: var(--text-faint); margin-top: 2px; }
.scfg-preview-box { margin: -4px 0 12px; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.scfg-preview-head { font-size: 11px; font-weight: 600; color: var(--text-muted); background: var(--bg); padding: 6px 12px; border-bottom: 1px solid var(--border); }
.scfg-preview-cols { display: flex; }
.scfg-preview-col { flex: 1; min-width: 0; border-right: 1px solid var(--border); }
.scfg-preview-col:last-child { border-right: none; }
.scfg-preview-lang { font-size: 10px; font-weight: 600; color: var(--text-faint); padding: 4px 10px; background: var(--bg); border-bottom: 1px solid var(--border-light); }
.scfg-preview-pre { margin: 0; padding: 10px; font-size: 11px; font-family: inherit; white-space: pre-wrap; word-break: break-word; color: var(--text); background: var(--white); max-height: 180px; overflow-y: auto; line-height: 1.6; cursor: pointer; transition: background 0.15s; }
.scfg-preview-pre:hover { background: var(--bg); }
.scfg-preview-pre.copied { background: var(--green-light); }
.ail-pre { white-space: pre-wrap; word-break: break-word; font-size: 12px; line-height: 1.6; font-family: var(--font-mono, monospace); color: var(--text); background: var(--gray-bg); padding: 10px 12px; border-radius: 6px; margin: 0; cursor: pointer; transition: background 0.15s; }
.evo-import-preview-body { white-space: pre-wrap; word-break: break-word; font-size: 11px; line-height: 1.6; max-height: 240px; overflow-y: auto; border: 1px solid var(--border); border-radius: 4px; padding: 8px 10px; background: var(--white); margin: 0; font-family: monospace; }
.ail-pre:hover { background: var(--bg); }
.ail-pre.copied { background: var(--green-light); }
/* 同步日志行 */
.wpt-log-row { display: flex; align-items: center; gap: 8px; padding: 3px 8px; border-radius: 4px; font-size: 11px; line-height: 1.4; }
.wpt-log-row.ok   { background: var(--green-bg); color: var(--green-text); }
.wpt-log-row.skip { background: var(--gray-bg); color: var(--text-muted); }
.wpt-log-row.fail { background: var(--red-bg); color: var(--red-text); }
.scfg-attr-row { display: flex; gap: 8px; align-items: flex-start; margin-bottom: 10px; padding: 10px; background: var(--bg); border: 1px solid var(--border); border-radius: 8px; }
.scfg-attr-body { flex: 1; display: flex; flex-direction: column; gap: 6px; }
.scfg-attr-row-top { display: flex; gap: 6px; }
.scfg-attr-name-cn { flex: 0 0 140px; padding: 4px 8px; border-radius: 6px; border: 1px solid var(--border); font-size: 12px; background: var(--white); color: var(--text); }
.scfg-attr-name { flex: 1; padding: 4px 8px; border-radius: 6px; border: 1px solid var(--border); font-size: 12px; background: var(--white); color: var(--text); }
.scfg-attr-opts { width: 100%; padding: 4px 8px; border-radius: 6px; border: 1px solid var(--border); font-size: 12px; background: var(--white); color: var(--text); box-sizing: border-box; }
.scfg-attr-name-cn:focus, .scfg-attr-name:focus, .scfg-attr-opts:focus { border-color: var(--accent); outline: none; }
.scfg-attr-del { width: 24px; height: 24px; flex-shrink: 0; border: 1px solid var(--border); background: none; border-radius: 4px; cursor: pointer; font-size: 14px; color: var(--text-muted); display: flex; align-items: center; justify-content: center; }
.scfg-attr-del:hover { background: var(--red-bg); color: var(--red-hover); border-color: var(--red-border); }
/* ── 属性选项块（上下排列：英文上 / 中文下）── */
.scfg-attr-opt-pair { min-width: 90px; padding: 8px 12px; background: var(--white); border: 1px solid var(--border); border-radius: 6px; text-align: center; position: relative; cursor: default; }
.scfg-attr-opt-pair:hover { border-color: var(--accent); }
.scfg-attr-opt-pair .scfg-attr-opt-en, .scfg-attr-opt-pair .scfg-attr-opt-cn { width: 100%; border: none; background: transparent; text-align: center; outline: none; padding: 0; display: block; }
.scfg-attr-opt-pair .scfg-attr-opt-en { font-size: 13px; color: var(--text); font-family: ui-monospace, SFMono-Regular, monospace; }
.scfg-attr-opt-pair .scfg-attr-opt-cn { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.scfg-attr-opt-pair .scfg-attr-opt-en:focus, .scfg-attr-opt-pair .scfg-attr-opt-cn:focus { background: var(--bg); border-radius: 4px; }
.scfg-attr-opt-pair > .scfg-attr-del { position: absolute; top: -8px; right: -8px; width: 20px; height: 20px; border-radius: 4px; background: var(--white); border: 1px solid var(--border); font-size: 12px; color: var(--text-muted); display: none; padding: 0; align-items: center; justify-content: center; }
.scfg-attr-opt-pair:hover > .scfg-attr-del { display: flex; }
.scfg-attr-opt-pair > .scfg-attr-del:hover { background: var(--red-bg); color: var(--red-hover); border-color: var(--red-border); }
#scfg-kw-attrs-list, #scfg-title-attrs-list { margin-top: 6px; }
.scfg-struct-hints { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin-top: 2px; }
.scfg-struct-hints-label { font-size: 11px; color: var(--text-faint); white-space: nowrap; }
.scfg-struct-chip { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 999px; background: var(--accent-light); color: var(--accent); font-size: 11px; cursor: pointer; border: 1px solid transparent; user-select: none; }
.scfg-struct-chip:hover { border-color: var(--accent); }
.scfg-struct-chip em { font-style: normal; opacity: .6; font-size: 10px; }
.scfg-struct-bar { display: flex; gap: 6px; align-items: center; margin-top: 2px; }
.scfg-struct-panel { margin-top: 4px; display: flex; flex-direction: column; gap: 8px; }
.scfg-struct-item { display: flex; flex-direction: column; gap: 4px; }
.scfg-struct-item-label { font-size: 11px; font-weight: 600; color: var(--text-muted); }
.scfg-struct-ta { width: 100%; box-sizing: border-box; padding: 4px 8px; border-radius: 6px; border: 1px solid var(--border); font-size: 12px; font-family: monospace; line-height: 1.5; background: var(--white); color: var(--text); resize: vertical; }
.scfg-struct-ta:focus { border-color: var(--accent); outline: none; }
.scfg-time-row {
  display: flex; gap: 6px; align-items: center; margin-top: 4px;
}
.scfg-time-row span { font-size: 12px; color: var(--text-muted); }
.scfg-time-row input { flex: 1; }
.scfg-toggle-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 0; border-bottom: 1px solid var(--border-light);
}
.scfg-toggle-row:last-child { border-bottom: none; }
.scfg-toggle-label { font-size: 13px; color: var(--text); }
.scfg-toggle-sub   { font-size: 11px; color: var(--text-muted); margin-top: 1px; }
.scfg-tracker-dl { display: flex; align-items: center; gap: 10px; padding: 8px 0 4px; }

/* ── 建站方向：纵向堆叠分区 ── */
.dir-layout-stack { display: flex; flex-direction: column; gap: 20px; }
.dir-section { margin-bottom: 0; }
.dir-section-title {
  font-size: 12px; font-weight: 700; color: var(--text-faint);
  text-transform: uppercase; letter-spacing: .5px;
  margin-bottom: 10px; padding-bottom: 6px;
  border-bottom: 1px solid var(--border-light);
}
.dir-info-bar { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; min-height: 0; }
.dir-info-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 12px; background: var(--bg); border: 1px solid var(--border-light);
  border-radius: 20px; font-size: 12px; color: var(--text);
}
.dir-info-chip .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
.dir-badge-good    { background: var(--green);       color: var(--white); }
.dir-badge-caution { background: var(--orange-deep); color: var(--white); }
.dir-badge-poor    { background: var(--gray-mid);    color: var(--white); }
/* ── 站点配置弹窗：内容约束展示卡片 ── */
.scfg-cc-para    { font-size: 12px; line-height: 1.6; color: var(--text); margin: 0 0 6px; }
.scfg-cc-para-en { color: var(--text-muted); }
/* ── 种子词内嵌标签页 ── */
.sk-tabs {
  display: flex; gap: 2px;
  padding: 14px 0 0;
  border-bottom: 1px solid var(--border);
}
.sk-tab {
  padding: 6px 14px; font-size: 12px; font-weight: 600;
  color: var(--text-muted); cursor: pointer;
  border-radius: 6px 6px 0 0; border: 1px solid transparent;
  border-bottom: 1px solid transparent; background: transparent;
  transition: color .12s, background .12s;
  user-select: none; outline: none; text-decoration: none;
  -webkit-tap-highlight-color: transparent;
}
.sk-tab:hover { color: var(--text); background: var(--bg); text-decoration: none; }
.sk-tab:active { text-decoration: none; }
.sk-tab.active {
  color: var(--accent); background: var(--white);
  border-color: var(--border); border-bottom-color: var(--white);
  margin-bottom: -1px; position: relative; z-index: 1;
}
.sk-tab-panel { display: none; padding: 14px 0 0; }
.sk-tab-panel.active { display: block; }

/* ── 站点信息内嵌标签页 ── */
.si-tabs {
  display: flex; gap: 2px;
  padding: 14px 0 0;
  border-bottom: 1px solid var(--border);
}
.si-tab {
  padding: 6px 14px; font-size: 12px; font-weight: 600;
  color: var(--text-muted); cursor: pointer;
  border-radius: 6px 6px 0 0; border: 1px solid transparent;
  border-bottom: 1px solid transparent; background: transparent;
  transition: color .12s, background .12s;
  user-select: none; outline: none; text-decoration: none;
  -webkit-tap-highlight-color: transparent;
}
.si-tab:hover { color: var(--text); background: var(--bg); text-decoration: none; }
.si-tab:active { text-decoration: none; }
.si-tab.active {
  color: var(--accent); background: var(--white);
  border-color: var(--border); border-bottom-color: var(--white);
  margin-bottom: -1px; position: relative; z-index: 1;
}
.si-tab-panel { display: none; padding: 14px 0 0; }
.si-tab-panel.active { display: block; }

/* 中控流水线：去掉 si-tabs 自带的 14px 顶距，使其与流量/收支面板的 p-20 顶距一致 */
#pl-detail .si-tabs { padding-top: 0; }

/* 收支分类圆点（记账 > 分类 子 tab）*/
.fin-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; background: var(--green); }
.fin-dot.expense { background: var(--yellow); }
.fin-ed-hint { font-size: 12px; color: var(--text-muted); background: var(--gray-bg); border-radius: 6px; padding: 8px 10px; }
.fin-ledger { margin-top: 18px; }

/* ── 结构模板内嵌标签页 ── */
.tmpl-tabs {
  display: flex; gap: 2px;
  padding: 10px 0 0;
  border-bottom: 1px solid var(--border);
}
.tmpl-tab {
  padding: 6px 14px; font-size: 12px; font-weight: 600;
  color: var(--text-muted); cursor: pointer;
  border-radius: 6px 6px 0 0; border: 1px solid transparent;
  border-bottom: 1px solid transparent; background: transparent;
  transition: color .12s, background .12s;
  user-select: none; outline: none;
  display: flex; align-items: center; gap: 6px;
}
.tmpl-tab:hover { color: var(--text); background: var(--bg); }
.tmpl-tab.active {
  color: var(--accent); background: var(--white);
  border-color: var(--border); border-bottom-color: var(--white);
  margin-bottom: -1px; position: relative; z-index: 1;
}
.tmpl-tab-badge {
  font-size: 10px; padding: 1px 6px; border-radius: 999px;
  background: var(--accent-light); color: var(--accent);
}
.tmpl-tab-panel { display: none; padding: 12px 0 0; }
.tmpl-tab-panel.active { display: block; }

/* ════════════════════════════════
   语义配置 — 左右分栏
   ════════════════════════════════ */
.sem-layout { display: flex; gap: 16px; }
.sem-left { flex: 1; min-width: 0; }
.sem-right { width: 260px; flex-shrink: 0; }

.sem-match-card {
  border: 1px solid var(--border); border-radius: 8px;
  padding: 14px; background: var(--white);
}
.sem-match-title {
  font-size: 11px; font-weight: 700; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .5px; margin-bottom: 10px;
}
.sem-match-params { display: flex; gap: 16px; align-items: flex-end; margin-bottom: 8px; }
.sem-match-param { display: flex; align-items: center; gap: 8px; }
.sem-match-param label { font-size: 11px; font-weight: 600; color: var(--text-muted); white-space: nowrap; }
.sem-match-param input[type="number"] {
  width: 56px; padding: 5px 8px;
  border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; font-weight: 600; color: var(--text); text-align: center;
  background: var(--white); font-family: inherit;
}
.sem-match-param input[type="number"]:focus { outline: none; border-color: var(--accent); }
.sem-match-hint { font-size: 11px; color: var(--text-faint); line-height: 1.5; }

.sem-status-card {
  border: 1px solid var(--border); border-radius: 8px;
  background: var(--white); overflow: hidden;
}
.sem-status-head {
  padding: 10px 14px; background: var(--bg);
  border-bottom: 1px solid var(--border);
  font-size: 12px; font-weight: 700; color: var(--text);
}
.sem-status-body { padding: 14px; }
.sem-status-desc { font-size: 11px; color: var(--text-muted); line-height: 1.5; margin-bottom: 12px; }
.sem-status-btn { width: 100%; padding: 8px; justify-content: center; }
.sem-status-result { font-size: 12px; color: var(--text-muted); margin-top: 10px; min-height: 18px; }

/* 特征词生成结果预览内边距 */
#scfg-nt-result.scfg-preview-box { padding: 0 12px; }
#scfg-nt-result .scfg-preview-head { margin: 0 -12px 10px; }

/* 域名工具卡片 */
.si-tool-card {
  margin-top: 14px; padding: 14px;
  background: var(--bg); border-radius: 8px;
}
.si-tool-card-title { font-size: 12px; font-weight: 700; color: var(--text-muted); margin-bottom: 8px; }
.si-tool-card-hint { font-size: 11px; color: var(--text-muted); margin-bottom: 10px; }

.connect-tab-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 14px 20px;
}
.connect-tab-field { display: flex; flex-direction: column; gap: 4px; }
.connect-tab-field.full { grid-column: 1 / -1; }
.connect-tab-field label {
  font-size: 11px; font-weight: 600; color: var(--text-muted);
}
.connect-tab-field input,
.connect-tab-field select,
.connect-tab-field textarea {
  padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; color: var(--text); background: var(--white);
  outline: none; font-family: inherit;
}
.connect-tab-field input:focus,
.connect-tab-field select:focus,
.connect-tab-field textarea:focus { border-color: var(--accent); }
.connect-tab-field input[type="number"] { width: 80px; text-align: center; }
.connect-tab-field .scfg-hint { margin-top: 2px; }
.connect-tab-field .scfg-pool-list { margin: 0; }
.connect-tab-field > .btn, .connect-tab-field > .btn-sm, .connect-tab-field > .btn-lg { align-self: flex-start; }
.connect-tab-switch {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 14px; background: var(--bg); border-radius: 8px;
}
.connect-tab-switch-text { font-size: 12px; font-weight: 600; color: var(--text); }
.connect-tab-switch-sub { font-size: 11px; color: var(--text-muted); margin-top: 2px; }

.scfg-toggle { position: relative; width: 36px; height: 20px; flex-shrink: 0; }
.scfg-toggle input { opacity: 0; width: 0; height: 0; }
.scfg-toggle-track {
  position: absolute; inset: 0; background: var(--border);
  border-radius: 999px; cursor: pointer; transition: background .2s;
}
.scfg-toggle input:checked + .scfg-toggle-track { background: var(--accent); }
.scfg-toggle-track::before {
  content:''; position: absolute;
  width: 14px; height: 14px; background: var(--white); border-radius: 50%;
  top: 3px; left: 3px; transition: transform .2s;
  box-shadow: var(--shadow-sm);
}
.scfg-toggle input:checked + .scfg-toggle-track::before { transform: translateX(16px); }

/* ── Cloudflare 极简行（方案五）── */
.cf-minimal-row { display: flex; gap: 24px; }
.cf-minimal-item {
  flex: 1; display: flex; align-items: center; justify-content: space-between;
  gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--border-light);
}
.cf-minimal-title { font-size: 14px; font-weight: 500; color: var(--text); }
.cf-minimal-hint  { font-size: 12px; color: var(--text-muted); margin-top: 2px; }

.scfg-foot {
  padding: 14px 24px 16px; display: flex; justify-content: flex-end; align-items: center;
  gap: 6px; border-top: 1px solid var(--border);
}
.scfg-foot-right { display: flex; gap: 8px; }
.scfg-foot-left  { display: flex; gap: 8px; margin-right: auto; align-items: center; }
.scfg-foot-sep   { width: 1px; height: 18px; background: var(--border); margin: 0 4px; flex-shrink: 0; }

.scfg-foot-tmpl-name { display: flex; align-items: center; gap: 8px; }
.scfg-foot-tmpl-name label { font-size: 12px; font-weight: 600; color: var(--text-muted); white-space: nowrap; }
.scfg-foot-tmpl-name input {
  padding: 4px 8px; border: 1px solid var(--border); border-radius: 6px;
  font-size: 12px; color: var(--text); background: var(--white); outline: none;
  width: 200px;
}
.scfg-foot-tmpl-name input:focus { border-color: var(--accent); }

/* ════════════════════════════════
   站点配置弹窗 — 三栏布局 V2
   ════════════════════════════════ */
.scfg-lr-v2 { display: flex; flex: 1; overflow: hidden; }
.scfg-nav-v2 {
  width: 180px; flex-shrink: 0; border-right: 1px solid var(--border);
  background: var(--bg); overflow-y: auto; padding: 8px 0;
}
.scfg-group { margin-bottom: 2px; }
.scfg-group-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 14px; font-size: 11px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .5px;
  color: var(--text-faint); cursor: pointer; user-select: none;
  transition: all .12s;
}
.scfg-group-header:hover { color: var(--text-muted); }
.scfg-group-header .arrow {
  font-size: 10px; transition: transform .2s; color: var(--text-faint);
}
.scfg-group.collapsed .scfg-group-header .arrow { transform: rotate(-90deg); }
.scfg-group.collapsed .scfg-group-items { display: none; }
.scfg-group-items { padding: 0 8px 6px; }
.scfg-nav-item-v2 {
  padding: 6px 10px; border-radius: 6px;
  font-size: 12px; color: var(--text-muted);
  cursor: pointer; transition: all .12s; user-select: none;
  margin-bottom: 1px;
  display: flex; align-items: center; gap: 6px;
}
.scfg-nav-item-v2:hover { background: var(--border-light); color: var(--text); }
.scfg-nav-item-v2.active { background: var(--accent-light); color: var(--accent); font-weight: 600; }
.scfg-nav-item-v2 .dot {
  width: 6px; height: 6px; border-radius: 50%; background: var(--border); flex-shrink: 0;
}
.scfg-nav-item-v2.active .dot { background: var(--accent); }
/* 导航项标签 + 数量徽标 */
.scfg-nav-item-v2 .nav-lbl { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.scfg-nav-item-v2 .nav-n {
  margin-left: auto; flex-shrink: 0;
  font-size: 10px; font-weight: 600; color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}
.scfg-nav-item-v2.active .nav-n { color: var(--accent); }
/* 导航项数据完成状态：对号/错号 */
.scfg-nav-item-v2 .nav-check {
  margin-left: auto; flex-shrink: 0;
  font-size: 11px; font-weight: 700;
  font-family: var(--font-mono, monospace);
}
.scfg-nav-item-v2 .nav-check.ok  { color: var(--green); }
.scfg-nav-item-v2 .nav-check.bad { color: var(--text-faint); opacity: .5; }
.scfg-nav-item-v2 .nav-check.tier-non,
.scfg-nav-item-v2 .nav-check.tier-weak,
.scfg-nav-item-v2 .nav-check.tier-strong {
  font-family: inherit;
  font-size: 10px; font-weight: 600; line-height: 1;
  padding: 2px 8px; border-radius: 999px;
  transform: translate(7px, -1px);
  transition: background .12s, color .12s;
}
.scfg-nav-item-v2 .nav-check.tier-non   { background: var(--green-bg);   color: var(--green-dark); }
.scfg-nav-item-v2 .nav-check.tier-weak  { background: var(--orange-bg);  color: var(--orange-text); }
.scfg-nav-item-v2 .nav-check.tier-strong{ background: var(--red-bg);     color: var(--red); }
.scfg-nav-divider {
  border-top: 1px solid var(--border);
  margin: 6px 0;
}

/* 中控导航下半区：分组卡片式，与上半区区分开 */
.scfg-nav-sub {
  padding: 10px 10px 12px;
  border-top: 1px solid var(--border);
  display: flex; flex-direction: column; gap: 8px;
}
.scfg-sub-group {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--gray-bg);
  overflow: hidden;
}
.scfg-sub-group-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 7px 10px;
  font-size: 11px; font-weight: 600;
  color: var(--text-muted); cursor: pointer; user-select: none;
  transition: all .12s;
}
.scfg-sub-group-header:hover { color: var(--text); background: var(--black-04); }
.scfg-sub-group-header .sub-title { display: flex; align-items: center; gap: 6px; }
.scfg-sub-group-header .sub-title::before {
  content: ''; width: 6px; height: 6px; border-radius: 2px;
  background: var(--sub-tone, var(--slate-light)); flex-shrink: 0;
}
.scfg-sub-group-header .arrow {
  font-size: 10px; transition: transform .2s; color: var(--text-faint);
}
.scfg-sub-group.collapsed .scfg-sub-group-header .arrow { transform: rotate(-90deg); }
.scfg-sub-group.collapsed .scfg-sub-group-items { display: none; }
.scfg-sub-group-items { padding: 2px 6px 6px; display: flex; flex-direction: column; gap: 1px; }
.scfg-sub-item, .scfg-sub-link {
  font-size: 11px; color: var(--text-muted); text-decoration: none;
  display: block; padding: 5px 8px 5px 12px; border-radius: 5px;
  transition: all .12s;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.scfg-sub-item:hover, .scfg-sub-link:hover { background: var(--white); color: var(--text); }
/* 二级项选中态：左侧竖条 + 浅蓝底，与上半区明显区分 */
.scfg-sub-item.active {
  background: var(--accent-light); color: var(--accent); font-weight: 600;
  box-shadow: inset 2px 0 0 var(--accent);
}
.scfg-sub-link { color: var(--text-faint); }

/* 站点详情上下文头（中控 · 站点总览右侧）*/
.sys-dt-head {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 20px; border-bottom: 1px solid var(--border); flex-shrink: 0;
}
.sys-dt-head:empty { display: none; }
.sys-dt-info { flex: 1; min-width: 0; }
.sys-dt-name { font-size: 14px; font-weight: 700; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sys-dt-sub  { font-size: 11px; color: var(--text-faint); margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sys-dt-sub a { color: inherit; text-decoration: underline; }
.sys-dt-sub a:hover { color: var(--accent); }
/* 详情头内嵌统一站点标题块时不额外撑开头部高度 */
.sys-dt-info .site-title-block { margin-bottom: 0; }
.sys-dt-chip {
  display: inline-flex; align-items: center; gap: 4px; flex-shrink: 0;
  font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; white-space: nowrap;
}
.sys-dt-chip.green { background: var(--green-bg); color: var(--green-text); border: 1px solid var(--green-light); }
.sys-dt-chip.blue  { background: var(--accent-light); color: var(--accent); border: 1px solid var(--blue-border); }
.sys-dt-chip.amber { background: var(--yellow-bg); color: var(--orange-text); border: 1px solid var(--amber-pale); }
.sys-dt-chip.gray  { background: var(--bg); color: var(--text-muted); border: 1px solid var(--border); }

.scfg-content-v2 {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column;
  border-right: 1px solid var(--border);
}
.scfg-panel-v2 {
  flex: 1; overflow-y: auto; padding: 16px 20px;
  display: none;
}
.scfg-panel-v2.active { display: block; }
/* 包含 aim-body 的分栏面板：改为 flex 布局，去除内边距和滚动 */
.scfg-panel-v2.is-split.active { display: flex; overflow: hidden; padding: 0; }
/* 冷启动爬坡：独立面板（非分栏），普通块布局可纵向滚动 */
.scfg-panel-v2.active[data-sys-panel="ramp"],
.scfg-panel-v2.active[data-sys-panel="stock"] { overflow-y: auto; }
/* 一致性：与 Agent 面板同交互——头部/筛选/分页固定，仅站点列表滚动 */
.scfg-panel-v2.active[data-sys-panel="consistency"] { display: flex; flex-direction: column; overflow: hidden; }
.scfg-panel-v2[data-sys-panel="consistency"] .sys-stock-box { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.scfg-panel-v2[data-sys-panel="consistency"] #sys-con-list { flex: 1; min-height: 0; overflow-y: auto; }
/* 尾部收敛：不要通栏白底大横条，去掉底/边并右对齐 */
.scfg-panel-v2[data-sys-panel="consistency"] #sys-con-pagination {
  background: transparent; border-top: none; min-height: 0; padding: 8px 0 0; justify-content: flex-end;
}
/* 月份工具条（中控数据视图）*/
.sys-monthbar {
  display: flex; gap: 6px; flex-wrap: wrap; align-items: center;
  padding-bottom: 14px; margin-bottom: 16px;
  border-bottom: 1px solid var(--border-light);
}
.sys-monthbar:empty { display: none; }

/* ── 流水线状态点 / 进度条（中控站点详情用，原 pipeline.php）── */
.pl-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.pl-dot.done    { background: var(--green); }
.pl-dot.pending { background: var(--border); }
.pl-dot.warn    { background: var(--yellow); }
.pl-dot.running { background: var(--accent); animation: pl-pulse 1.4s ease-in-out infinite; }
.pl-dot.info    { background: var(--slate-300); }
@keyframes pl-pulse { 0%,100%{opacity:1} 50%{opacity:.4} }
.pl-list-dot {
  display: inline-block; width: 6px; height: 6px; border-radius: 50%;
  flex-shrink: 0; margin-right: 4px; vertical-align: middle; position: relative; top: -1px;
}
.pl-list-dot.init    { background: var(--yellow); }
.pl-list-dot.running { background: var(--accent); animation: pl-pulse 1.4s ease-in-out infinite; }
.pl-list-dot.ok      { background: var(--green); }
.pl-list-dot.idle    { background: var(--slate-300); }
.pl-progress { height: 4px; background: var(--border); border-radius: 2px; overflow: hidden; margin-top: 4px; }
.pl-progress-bar { height: 100%; background: var(--accent); border-radius: 2px; transition: width .3s; }
.pl-out-line { display: block; }
.pl-out-header  { color: var(--border-light); font-weight: 700; border-bottom: 1px solid var(--text); padding-bottom: 3px; margin-bottom: 2px; }
.pl-out-step    { color: var(--amber-strong); font-weight: 700; margin-top: 6px; }
.pl-out-ok      { color: var(--emerald); }
.pl-out-ok::before    { content: '✓ '; }
.pl-out-err     { color: var(--rose); }
.pl-out-err::before   { content: '✗ '; }
.pl-out-info    { color: var(--sky); }
.pl-out-info::before  { content: '› '; }
.pl-out-done    { color: var(--emerald); font-weight: 700; margin-top: 4px; }
.pl-out-warn    { color: var(--amber-strong); }
.pl-out-warn::before  { content: '⚠ '; }
.pl-out-loading { color: var(--text-faint); font-style: italic; }
.pl-out-empty   { color: var(--orange); }
.pl-out-empty::before { content: '⚠ '; }
.pl-out-api-err   { color: var(--rose); font-weight: 600; }
.pl-out-api-err::before { content: '✗ API · '; }

.scfg-preview-sidebar {
  width: 280px; flex-shrink: 0;
  display: flex; flex-direction: column;
  overflow: hidden;
  background: var(--bg);
}
.scfg-preview-sidebar .scfg-preview-head {
  padding: 12px 16px; border-bottom: 1px solid var(--border);
  font-size: 12px; font-weight: 700; color: var(--text-muted);
  display: flex; align-items: center; gap: 6px;
  flex-shrink: 0;
}
.scfg-preview-head .live-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--text-faint);
}
.scfg-preview-head .live-dot.active {
  background: var(--green); animation: scfgPulse 2s infinite;
}
#scfg-preview-admin-link { text-decoration: none; }
@keyframes scfgPulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .4; }
}
.scfg-preview-sidebar .scfg-preview-body {
  flex: 1; overflow-y: auto; padding: 12px 16px;
}
.scfg-preview-sidebar .scfg-preview-foot {
  padding: 10px 16px; border-top: 1px solid var(--border);
  background: var(--white); flex-shrink: 0;
}
/* 中控站群体征：统计行 / 任务行 / 待办行 */
.sys-prev-stat { display: flex; align-items: center; justify-content: space-between; padding: 5px 0; font-size: 12px; }
.sys-prev-stat + .sys-prev-stat { border-top: 1px solid var(--border-light); }
.sys-prev-stat .k { color: var(--text-muted); display: flex; align-items: center; gap: 6px; }
.sys-prev-stat .v { font-weight: 700; font-variant-numeric: tabular-nums; }
.sys-prev-task, .sys-prev-todo { display: flex; align-items: center; gap: 8px; padding: 6px 0; font-size: 12px; }
.sys-prev-task + .sys-prev-task, .sys-prev-todo + .sys-prev-todo { border-top: 1px solid var(--border-light); }
.sys-prev-task .nm, .sys-prev-todo .nm { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sys-prev-task .st, .sys-prev-todo .st { font-size: 11px; color: var(--text-muted); flex-shrink: 0; }
.sys-prev-todo { cursor: pointer; transition: color .12s; }
.sys-prev-todo:hover { color: var(--accent); }
.sys-prev-empty { font-size: 11px; color: var(--text-faint); padding: 2px 0; }

/* Preview cards */
.scfg-prev-card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px;
  margin-bottom: 10px;
}
.scfg-prev-card:last-child { margin-bottom: 0; }
.scfg-prev-card table { border-collapse: collapse; }
.scfg-prev-card table td { border-right: 1px solid var(--border); }
.scfg-prev-card table td:last-child { border-right: none; }
.scfg-prev-card table td:has(+ .si-card-selected) { border-right: 1.5px solid var(--accent) !important; }

/* 版本卡片横向滚动容器：多版本横排超出宽度时出现水平滚动条，
   而不是把右侧列裁掉看不见。 */
.scfg-ver-scroll {
  overflow-x: auto;
  overflow-y: hidden;
}
/* 用固定布局，列宽完全由下面的 width 决定，不再被长文本撑开 */
.scfg-ver-scroll > table {
  table-layout: fixed;
  width: auto;
  min-width: 100%;
}
/* 每个版本列固定 260px，长文本在列内换行，而不是把列撑到很宽 */
.scfg-ver-scroll > table td[data-si-col],
.scfg-ver-scroll > table td[data-cd-col],
.scfg-ver-scroll > table td[data-cat-col] {
  width: 260px;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}
/* 左侧标签列固定窄宽，横向滚动时冻结，方便对照 */
.scfg-ver-scroll > table tr > td:first-child {
  width: 92px;
  position: sticky;
  left: 0;
  z-index: 1;
  background: var(--white);
}
.scfg-prev-card-title {
  font-size: 11px; font-weight: 700; color: var(--text-faint);
  text-transform: uppercase; letter-spacing: .5px;
  margin-bottom: 8px;
}
.scfg-prev-card-content {
  font-size: 12px; color: var(--text);
  line-height: 1.6;
}
.scfg-prev-card-content .muted {
  color: var(--text-muted); font-size: 11px;
}
.scfg-prev-note-ta {
  width: 100%; min-height: 120px; max-height: 260px;
  padding: 8px; border: 1px solid var(--border);
  border-radius: 6px; font-size: 12px; line-height: 1.6;
  color: var(--text); background: var(--white);
  resize: vertical; font-family: inherit;
  transition: border-color .15s, box-shadow .15s;
}
.scfg-prev-note-ta:focus {
  outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-light);
}

/* 同行站网址列表（站点配置弹窗右侧预览栏） */
.scfg-comp-add {
  display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px;
}
.scfg-comp-add input, .scfg-comp-add textarea {
  width: 100%; box-sizing: border-box; padding: 6px 8px;
  border: 1px solid var(--border); border-radius: 6px;
  font-size: 12px; color: var(--text); background: var(--white);
  font-family: inherit; resize: vertical;
}
.scfg-comp-add input:focus, .scfg-comp-add textarea:focus {
  outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-light);
}
.scfg-comp-add-bar { display: flex; justify-content: flex-end; }
.scfg-comp-item {
  display: flex; flex-direction: column; gap: 3px;
  padding: 6px 0; border-bottom: 1px dashed var(--border);
  font-size: 12px; line-height: 1.5;
}
.scfg-comp-item:last-child { border-bottom: none; }
.scfg-comp-line1 { display: flex; align-items: center; gap: 6px; }
.scfg-comp-line1 a {
  flex: 1; min-width: 0; color: var(--accent); word-break: break-all; text-decoration: none;
}
.scfg-comp-line1 a:hover { text-decoration: underline; }
.scfg-comp-acts {
  flex-shrink: 0; display: flex; gap: 2px;
  opacity: 0; transition: opacity .15s;
}
.scfg-comp-item:hover .scfg-comp-acts { opacity: 1; }
.scfg-comp-act {
  width: 18px; height: 18px; padding: 0; cursor: pointer;
  border: none; border-radius: 4px; background: transparent;
  color: var(--text-faint); font-size: 11px; line-height: 18px; text-align: center;
}
.scfg-comp-act:hover { background: var(--accent-light); color: var(--accent); }
.scfg-comp-del {
  flex-shrink: 0; width: 18px; height: 18px; line-height: 16px;
  border: none; border-radius: 4px; cursor: pointer;
  background: transparent; color: var(--text-faint); font-size: 13px;
  padding: 0; text-align: center;
}
.scfg-comp-del:hover { background: var(--red-bg, #fee2e2); color: var(--red, #dc2626); }
.scfg-comp-noteview {
  color: var(--text-faint); cursor: pointer;
  white-space: pre-wrap; word-break: break-all;
}
.scfg-comp-noteview:hover { color: var(--accent); }
.scfg-comp-note-empty { font-style: normal; opacity: .7; }
.scfg-comp-noteview textarea {
  width: 100%; padding: 4px 6px; font-size: 12px; line-height: 1.5; font-family: inherit;
  border: 1px solid var(--accent); border-radius: 4px; color: var(--text); background: var(--white);
  resize: vertical;
}
.scfg-comp-noteview textarea:focus { outline: none; }
.scfg-prev-site-card {
  background: linear-gradient(135deg, var(--accent-light), var(--blue-bg));
  border-radius: 8px; padding: 14px;
  text-align: center;
}
.scfg-prev-site-card .site-name {
  font-size: 14px; font-weight: 700; color: var(--text);
}
.scfg-prev-site-card .site-tagline {
  font-size: 11px; color: var(--text-muted); margin-top: 4px; padding: 0 8px;
}
.scfg-prev-site-card .site-domain {
  font-size: 10px; color: var(--accent); margin-top: 6px;
  font-family: monospace;
}
/* ════════════════════════════════
   目录管理弹窗
   ════════════════════════════════ */
.app-modal-body.cat-manage-list { margin: 4px 0 0; flex: 1; overflow-y: auto; margin-bottom: 0; }
.cat-manage-row { border-bottom: 1px solid var(--border-light); }
.cat-manage-row:last-child { border-bottom: none; }
.cat-manage-l2 .cmr-main { padding-left: 36px; background: var(--bg); }
.cat-manage-l2 .cmr-edit-form { padding-left: 36px; }
.cmr-main { display: flex; align-items: center; padding: 9px 16px; gap: 8px; }
.cmr-names { flex: 1; min-width: 0; display: flex; align-items: baseline; gap: 6px; }
.cmr-en { font-size: 13px; font-weight: 600; color: var(--text); }
.cmr-cn { font-size: 11px; color: var(--text-muted); }
.cmr-count { font-size: 11px; color: var(--accent); background: var(--accent-light); border-radius: 999px; padding: 1px 7px; }
.cmr-actions { display: flex; gap: 4px; flex-shrink: 0; }
.cmr-btn {
  width: 26px; height: 26px; border: 1px solid var(--border); background: var(--white);
  border-radius: 4px; cursor: pointer; font-size: 12px; color: var(--text-muted);
  display: flex; align-items: center; justify-content: center; transition: border-color .12s, color .12s;
}
.cmr-btn:hover:not(:disabled) { border-color: var(--accent); color: var(--accent); }
.cmr-btn:disabled { opacity: .3; cursor: default; }
.cmr-btn.danger:hover:not(:disabled) { border-color: var(--red); color: var(--red); }
.cmr-edit-form { display: none; padding: 8px 16px 10px; gap: 8px; flex-wrap: wrap; }
.cmr-edit-form.open { display: flex; }
.cmr-input {
  flex: 1; min-width: 130px; padding: 7px 10px;
  border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; color: var(--text); outline: none; background: var(--white);
  transition: border-color .15s;
}
.cmr-input:focus { border-color: var(--accent); }
.cmr-form-btns { display: flex; gap: 6px; }
.cmr-desc { font-size: 11px; color: var(--text-faint); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 300px; }
.cmr-input.desc { min-width: 100%; width: 100%; }
textarea.cmr-input { resize: vertical; min-height: 60px; font-family: inherit; box-sizing: border-box; line-height: 1.5; }
.cmr-field { flex: 1; min-width: 130px; display: flex; flex-direction: column; gap: 4px; }
.cmr-field.desc { min-width: 100%; width: 100%; }
.cmr-field label { font-size: 11px; font-weight: 600; color: var(--text-muted); }

/* ── 多模型/指令池 Toggle Chips ── */
.scfg-pool-list { display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.scfg-pool-item {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 12px; color: var(--text); cursor: pointer;
  padding: 4px 10px; border-radius: 4px;
  border: 1px solid var(--border-light); background: var(--bg);
  transition: all .15s;
}
.scfg-pool-item:hover { background: var(--accent-light); border-color: var(--accent); }
.scfg-pool-item.active { background: var(--accent); color: var(--white); border-color: var(--accent); }
.scfg-pool-item input[type="checkbox"] { accent-color: var(--accent); width: 13px; height: 13px; cursor: pointer; flex-shrink: 0; }

/* ── 折叠式选择器：默认只显示已选 chips，点击展开完整勾选列表 ──
   仅当 .scfg-pool-list 内含 summary/panel 折叠结构时才改列布局，
   避免影响未采用折叠结构的普通 pool-list（如行业洞察筛选行） */
.scfg-pool-list:has(.scfg-pool-summary) { flex-direction: column; align-items: stretch; }
.scfg-pool-summary {
  display: flex; align-items: center; gap: 8px;
  padding: 5px 10px; border-radius: 4px;
  border: 1px solid var(--border-light); background: var(--bg);
  cursor: pointer; transition: border-color .15s;
}
.scfg-pool-summary:hover { border-color: var(--accent); }
.scfg-pool-summary-chips { flex: 1; display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; color: var(--text-muted); font-size: 12px; }
/* 摘要栏里的已选 chip 复用 .scfg-pool-item.active 的样式，跟展开面板里勾选态视觉完全一致 */
.scfg-pool-chip {
  display: inline-flex; align-items: center;
  font-size: 12px; padding: 4px 10px; border-radius: 4px;
  background: var(--accent); color: var(--white); border: 1px solid var(--accent);
}
.scfg-pool-summary-toggle { flex-shrink: 0; font-size: 11.5px; color: var(--text-faint); white-space: nowrap; }
.scfg-pool-panel { display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.scfg-pool-panel.hidden { display: none; }

/* ── 批量建站方向 - 联级分类选择器 ── */
.batch-dir-cascade { display: flex; border: 1px solid var(--border); border-radius: 6px; height: 200px; overflow-x: auto; overflow-y: hidden; margin-top: 6px; }
.batch-dir-cascade-col { width: 148px; min-width: 148px; flex-shrink: 0; border-right: 1px solid var(--border); overflow-y: auto; overflow-x: hidden; }
.batch-dir-cascade-col:last-child { border-right: none; }
.batch-dir-cascade-item { display: flex; align-items: center; padding: 5px 10px; font-size: 12px; cursor: pointer; user-select: none; gap: 4px; }
.batch-dir-cascade-item > span:first-child { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.batch-dir-cascade-item:hover { background: var(--accent-light); }
.batch-dir-cascade-item.active { background: var(--accent-light); color: var(--accent); font-weight: 500; }
.batch-dir-cascade-arrow { flex-shrink: 0; font-size: 10px; color: var(--text-faint); }
.batch-dir-cascade-item.active .batch-dir-cascade-arrow { color: var(--accent); }

/* ── 批量建站方向 - 分类搜索 ── */
.batch-dir-cat-search { width: 100%; margin-top: 6px; margin-bottom: 4px; }
.batch-dir-search-results { border: 1px solid var(--border); border-radius: 6px; max-height: 200px; overflow-y: auto; margin-bottom: 4px; }
.batch-dir-search-item { padding: 6px 10px; cursor: pointer; font-size: 12px; border-bottom: 1px solid var(--border-faint); }
.batch-dir-search-item:last-child { border-bottom: none; }
.batch-dir-search-item:hover { background: var(--accent-light); }
.batch-dir-search-name { font-size: 12px; }
.batch-dir-search-path { font-size: 11px; color: var(--text-muted); margin-top: 2px; }

/* ── 模型+指令并排 ── */
.scfg-ai-row { display: flex; gap: 16px; }
.scfg-ai-row .scfg-model-col { width: 35%; flex-shrink: 0; }
.scfg-ai-row .scfg-prompt-col { flex: 1; min-width: 0; }
/* ════════════════════════════════
   内链词弹窗 / 关联文章弹窗
   ════════════════════════════════ */
.ilink-modal-body {
  padding: 8px 0 4px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.im-field { display: flex; flex-direction: column; gap: 4px; }
.im-label { font-size: 12px; font-weight: 600; color: var(--text-muted); }
.im-req   { color: var(--red); }
.im-input {
  width: 100%; padding: 7px 10px; border: 1px solid var(--border);
  border-radius: 6px; font-size: 13px; color: var(--text);
  background: var(--white); transition: border-color .15s;
}
.im-input:focus { outline: none; border-color: var(--accent); }
.kwm-select-link {
  background: none; border: none; cursor: pointer;
  color: var(--accent); font-size: 12px; padding: 0;
}
.kwm-select-link:hover { text-decoration: underline; }
.kwm-divider {
  border-top: 1px solid var(--border); margin: 14px 0 10px;
}

/* ════ 关键词大弹窗 ════ */
.app-modal-box.kw-modal-box,
.app-modal-box.aim-box {
  display: flex; flex-direction: column;
  padding: 0; overflow: hidden;
}
.app-modal-box.kw-modal-box .app-modal-head {
  padding: 14px 20px;
  display: flex; align-items: center; justify-content: space-between;
  border-bottom: 1px solid var(--border); flex-shrink: 0;
  margin-bottom: 0;
}
/* main layout wrapper */
#kwm-main-layout {
  flex: 1; min-height: 0; display: flex; flex-direction: column;
}
.kw-modal-tab {
  padding: 10px 16px; font-size: 13px; font-weight: 600;
  color: var(--text-muted); cursor: pointer;
  border: none; background: none;
  border-bottom: 2px solid transparent; margin-bottom: -1px;
  transition: color .12s, border-color .12s;
}
/* tab panels */
.kw-tab-panel { display: none; flex: 1; min-height: 0; flex-direction: column; }

/* ── 种子词 Tab ── */
.seed-kw-panel { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.seed-kw-toolbar-title { flex: 1; font-size: 12px; color: var(--text-muted); }
#kwtp-seed .seed-kw-list { flex: 1; overflow-y: auto; padding: 8px 10px; display: flex; flex-direction: column; gap: 4px; }
#kwtp-seed .seed-kw-add-area { padding: 0 10px; flex-shrink: 0; }

/* ── 所有关键词 Tab ── */
.kw-list-toolbar {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 14px; flex-shrink: 0;
  border-bottom: 1px solid var(--border);
}
.kw-status-tab.active { background: var(--accent-light); color: var(--accent); border-color: var(--accent-light); }
.kw-status-tab:hover:not(.active) { background: var(--bg); color: var(--text); }
.kw-ai-badge.keep    { background: var(--green-bg); color: var(--green-dark); }
.kw-ai-badge.exclude { background: var(--red-bg); color: var(--red-hover); }
.kw-source-badge.adjacent   { background: var(--sky-bg); color: var(--blue-text); }
.kw-source-badge.human      { background: var(--gray-bg-alt); color: var(--text-muted); }
.kw-src-tab {
  padding: 8px 7px; font-size: 12px; font-weight: 600;
  color: var(--text-muted); cursor: pointer;
  border: none; background: none;
  border-bottom: 2px solid transparent; margin-bottom: -1px;
  transition: color .12s, border-color .12s; white-space: nowrap;
}
.kw-src-tab.active,
.kw-modal-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
.kw-src-tab:hover:not(.active),
.kw-modal-tab:hover:not(.active) { color: var(--text); }
.kw-src-panel { display: none; flex-direction: column; gap: 10px; }
.kw-tab-panel.active,
.kw-src-panel.active { display: flex; }
/* right panel */
.kw-result-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 14px; flex-shrink: 0; border-bottom: 1px solid var(--border);
}
.kw-result-meta { font-size: 12px; color: var(--text-muted); }
.kw-result-body { flex: 1; overflow-y: auto; padding: 6px 8px; }
.kw-result-group-head {
  font-size: 11px; font-weight: 700; color: var(--text-muted);
  letter-spacing: .04em; padding: 8px 4px 3px; margin-top: 4px;
}
.kw-result-group-head:first-child { margin-top: 0; padding-top: 3px; }
.kw-result-item {
  display: flex; align-items: center; gap: 8px;
  padding: 4px 6px; border-radius: 4px; font-size: 13px; cursor: pointer;
}
.kw-result-item:hover { background: var(--bg); }
.kw-result-item input[type=checkbox] { flex-shrink: 0; accent-color: var(--accent); }
.kw-result-item .kw-reason {
  font-size: 11px; color: var(--text-muted); margin-left: auto;
  flex-shrink: 0; max-width: 120px; text-align: right;
}
.kw-result-item.excluded { opacity: .45; }
.kw-result-foot {
  padding: 10px 14px; display: flex; align-items: center;
  justify-content: flex-end; gap: 8px;
  border-top: 1px solid var(--border); flex-shrink: 0;
}
/* exist badge in add-tab results */
.kw-exist-badge {
  font-size: 10px; font-weight: 600; padding: 2px 6px;
  border-radius: 8px; white-space: nowrap; flex-shrink: 0;
}
.kw-exist-badge.db-new      { background: var(--blue-bg); color: var(--accent-hover); }
.kw-exist-badge.db-excluded { background: var(--red-bg); color: var(--red-hover); }
.kw-exist-badge.db-used     { background: var(--green-bg); color: var(--green-text); }
/* shared */
.kw-empty {
  padding: 50px 20px; text-align: center;
  color: var(--text-muted); font-size: 13px; line-height: 1.6;
}

/* 关联文章弹窗 */
.lam-search-wrap { padding: 4px 0 10px; }
.lam-list {
  max-height: 340px; overflow-y: auto;
  border: 1px solid var(--border); border-radius: 8px;
  margin-bottom: 4px;
}
.lam-item {
  padding: 10px 14px; cursor: pointer; border-bottom: 1px solid var(--border-light);
  transition: background .12s;
}
.lam-item:last-child { border-bottom: none; }
.lam-item:hover { background: var(--accent-light); }
.lam-cn { font-size: 13px; font-weight: 600; color: var(--text); }
.lam-en { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
.lam-loading { padding: 20px; text-align: center; color: var(--text-faint); font-size: 12px; }
.iv-item {
  border: 1px solid var(--border); border-radius: 8px; padding: 12px 14px;
  cursor: pointer; transition: all .15s;
}
.iv-item:hover,
.iv-item.selected { border-color: var(--accent); background: var(--accent-light); }
.iv-label { font-size: 11px; font-weight: 700; color: var(--accent); margin-bottom: 5px; }

/* AI 模型弹窗 */
.app-modal-box.aim-box .app-modal-head {
  display: flex; align-items: center; justify-content: space-between; padding: 14px 20px;
  border-bottom: 1px solid var(--border); flex-shrink: 0;
  margin-bottom: 0;
}
.app-modal-box.aim-box .app-modal-title { margin: 0; font-size: 14px; font-weight: 700; flex: 1; }
.aim-body { display: flex; flex: 1; min-height: 0; }
.aim-list-panel {
  width: 260px; flex-shrink: 0; border-right: 1px solid var(--border);
  display: flex; flex-direction: column;
}
.aim-list-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 12px; border-bottom: 1px solid var(--border);
  font-size: 12px; font-weight: 600; color: var(--text-muted); flex-shrink: 0;
}
#aim-model-list, #oss-account-list, #preset-list, #sys-pp-list, #pp-list, #adsg-group-list,
#pl-site-list, #pl-plan-list, #voice-list, #sys-cache-site-list, #sys-page-cache-site-list, #sys-slug-conflicts-site-list, #sys-sync-site-list, #sys-schema-site-list, #sys-wpt-site-list { flex: 1; overflow-y: auto; padding: 0; }
.aim-model-item {
  padding: 9px 12px; cursor: pointer; position: relative;
  transition: background .1s; border-bottom: 1px solid var(--bg);
}
.aim-model-item:hover { background: var(--bg); }
.aim-model-item.active { background: var(--accent-light); }
.aim-model-name { font-size: 13px; font-weight: 600; color: var(--text); }
.aim-model-sub  { font-size: 11px; color: var(--text-muted); margin-top: 2px; }

/* 列表内分组标题（结构模板按 content_type 分组、预设按类型分组等）。
   比原来的 text-muted 小灰字显眼：深色粗体 + accent 竖条 + 浅背景条 + 底线，
   与 .aim-* 列表同一套主题变量，深浅主题都自适应、和整体搭。 */
.list-group-head {
  display: flex; align-items: center; gap: 8px;
  padding: 7px 12px 7px 10px;
  border-left: 3px solid var(--accent);
  border-bottom: 1px solid var(--border);
  background: var(--bg);
  font-size: 12px; font-weight: 700; color: var(--text);
  letter-spacing: .01em; position: sticky; top: 0; z-index: 1;
}
.list-group-head .lgh-count { font-weight: 600; color: var(--text-muted); font-size: 11px; }

/* AI 模型列表的账户分组：账户头可点击（管理账户），余额靠右，组内模型缩进 */
.aim-acc-head { cursor: pointer; }
.aim-acc-head .aim-acc-bal { margin-left: auto; font-size: 12px; }
.aim-acc-models .aim-model-item { padding-left: 26px; }

/* 指令预设列表内"流量站/商业站"子分组标题：比 list-group-head 弱一级 */
.preset-sub-head {
  display: flex; align-items: center; gap: 8px;
  padding: 5px 12px 5px 24px;
  font-size: 11px; font-weight: 600; color: var(--text-muted);
  background: rgba(0,0,0,.02);
  border-bottom: 1px dashed var(--border);
}
.preset-sub-head .lgh-count { font-weight: 600; font-size: 11px; }

/* 结构模板 skeleton 骨架子标题：比 content_type 分组标题弱一级，
   用于展示同一 content_type 下的不同骨架组。 */
.ctpl-skeleton-head {
  display: flex; align-items: center; gap: 8px;
  padding: 5px 12px 5px 24px;
  font-size: 11px; font-weight: 600; color: var(--text-muted);
  background: rgba(0,0,0,.02);
  border-bottom: 1px dashed var(--border);
}
.ctpl-skeleton-head .lgh-count { font-weight: 500; color: var(--text-faint); font-size: 10px; }

/* 通用列表拖拽手柄：绝对定位在条目右侧，不挤压原有内容布局 */
.drag-handle {
  position: absolute; right: 10px; top: 50%; transform: translateY(-50%);
  color: var(--text-faint); font-size: 15px; line-height: 1; padding: 4px;
  cursor: grab;
}
.drag-handle:hover { color: var(--text-muted); }
.drag-handle:active { cursor: grabbing; }
.aim-editor-panel {
  flex: 1; padding: 20px; overflow-y: auto;
}
/* 左列表可滚动：条目多于面板高度时出垂直滚动条（写作人格条目少一直没暴露，
   结构模板 28 条迁入后必需） */
#voice-list, #ctpl-list { flex: 1; min-height: 0; overflow-y: auto; }
.aim-editor-empty {
  height: 100%; display: flex; align-items: center; justify-content: center;
  color: var(--text-faint); font-size: 13px;
}
.aim-editor-empty.error { color: var(--red); font-size: 12px; padding: 16px; height: auto; }
.jb-progress-track { height: 6px; background: var(--border); border-radius: 3px; overflow: hidden; }
.jb-progress-fill { height: 100%; background: var(--accent); border-radius: 3px; transition: width .3s; }
.jb-progress-fill.done { background: var(--green); }
.aim-editor-form { display: flex; flex-direction: column; gap: 14px; }
.aim-form-btns { display: flex; gap: 8px; padding-top: 4px; }
/* AI 模型可用时间段编辑器（按天分组：周一~周日 + 法定节假日） */
.aim-unavailable-windows { display: flex; flex-direction: column; gap: 2px; }
.aim-day-group { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 5px 8px; border-radius: 6px; }
.aim-day-group:hover { background: var(--border); }
.aim-day-name { width: 84px; flex: none; font-size: 12px; color: var(--text-muted); }
.aim-day-ranges { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; flex: 1; min-width: 0; }
.aim-range-chip { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: var(--text); background: var(--bg); border: 1px solid var(--border); border-radius: 10px; padding: 2px 4px 2px 8px; white-space: nowrap; }
.aim-range-del { border: none; background: none; color: var(--text-muted); cursor: pointer; font-size: 13px; line-height: 1; padding: 0 3px; border-radius: 50%; }
.aim-range-del:hover { color: #e05c5c; }
.aim-range-editor { display: inline-flex; align-items: center; gap: 4px; }
.aim-range-editor .ed-input { width: 58px; padding: 3px 6px; font-size: 12px; }
.aim-day-add { padding: 2px 8px; line-height: 1.4; }
.aim-range-ok, .aim-range-cancel { padding: 2px 7px; line-height: 1.4; }
.aim-range-ok:hover { color: #2ea44f; }
.aim-range-cancel:hover { color: #e05c5c; }
/* 实时可用状态点（编辑器标题 + 模型列表项，判定来自服务端 availability 接口） */
.aim-avail-status { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.aim-avail-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; vertical-align: middle; flex: none; }
.aim-avail-dot.aim-avail-ok { background: #3fb950; }
.aim-avail-dot.aim-avail-bad { background: #e05c5c; }
.aim-avail-ok { color: #3fb950; }
.aim-avail-bad { color: #e05c5c; }
/* 编辑表单两列网格：默认一行两个字段，长字段加 .ed-col-full 独占整行 */
.ed-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 14px; }
.ed-grid > .ed-col-full { grid-column: 1 / -1; }
@media (max-width: 640px) { .ed-grid { grid-template-columns: 1fr; } }

/* ════ AI 方案预设弹窗 ════ */
.aim-list-btns { display: flex; gap: 8px; align-items: center; }
.aip-preset-item {
  padding: 9px 12px; cursor: pointer; border-left: 3px solid transparent;
  transition: background .1s; border-bottom: 1px solid var(--bg);
}
.aip-preset-item:hover { background: var(--bg); }
.aip-preset-item.active { background: var(--accent-light); border-left-color: var(--accent); }
.aip-def-badge {
  font-size: 10px; background: var(--green-light); color: var(--green-text);
  padding: 1px 6px; border-radius: 999px; font-weight: 700; margin-left: 4px;
}
.aip-group { margin-bottom: 16px; }
.aip-group-title {
  font-size: 12px; font-weight: 700; color: var(--text);
  text-transform: uppercase; letter-spacing: .04em;
  padding: 8px 0; border-bottom: 1px solid var(--border); margin-bottom: 8px;
}
.aip-step-table { display: flex; flex-direction: column; gap: 4px; }
.aip-step-row {
  display: grid;
  grid-template-columns: 100px 1fr 1fr;
  gap: 12px; align-items: flex-start;
  padding: 8px 10px; border-radius: 6px;
}
.aip-step-row:hover { background: var(--bg); }
/* 发布工作台文章/评论行：复用 .aip-step-row 但列数远多，收窄列间距、中间内容列保证最小宽度，避免与后续列重叠 */
.pw-art-row { flex-wrap: nowrap; gap: 6px; }
.pw-art-row > .flex-col.flex-1 { flex: 1 1 0; min-width: 220px; }
.aip-step-label {
  font-size: 13px; font-weight: 600; color: var(--text);
  padding-top: 4px; white-space: nowrap;
}
.aip-step-models, .aip-step-prompts { min-width: 0; }
.aip-check-list {
  display: flex; flex-wrap: wrap; gap: 6px 12px;
}
.aip-check-item {
  display: flex; align-items: center; gap: 4px;
  font-size: 12px; color: var(--text-muted); cursor: pointer;
  user-select: none;
}
.aip-check-item input { margin: 0; cursor: pointer; }
.aip-check-item span { white-space: nowrap; }
.aip-preset-name { font-size: 13px; font-weight: 600; color: var(--text); }
.aip-preset-desc  { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
.aip-empty { padding: 20px 0; }
.aip-editor-foot { justify-content: space-between; }

/* 配置编辑器 - prompt 区块 */
.aip-prompt-section {
  border: 1px solid var(--border); border-radius: 8px;
  padding: 14px 16px; display: flex; flex-direction: column; gap: 8px;
}
.aip-prompt-section-title {
  font-size: 12px; font-weight: 700; color: var(--text);
  text-transform: uppercase; letter-spacing: .04em;
}
.aip-prompt-hint {
  font-size: 11px; color: var(--text-faint);
  font-family: ui-monospace, 'SFMono-Regular', monospace;
}
.aip-textarea {
  min-height: 320px !important;
  font-family: ui-monospace, 'SFMono-Regular', monospace !important;
  font-size: 12px !important;
  line-height: 1.6 !important;
}

/* ════ JZ Agent 管理（内嵌于中控面板 system.php，复用 aim-body 骨架）════ */
.agent-key-row {
  display: flex; align-items: center; gap: 6px;
  background: var(--bg-2); border-radius: 6px; padding: 7px 10px;
}
.agent-key-val {
  flex: 1; font-size: 12px; color: var(--text); word-break: break-all; line-height: 1.4;
  user-select: all;
}
.agent-key-eye {
  background: none; border: none; cursor: pointer; font-size: 14px;
  padding: 0 2px; flex-shrink: 0; opacity: .7;
}
.agent-key-eye:hover { opacity: 1; }
.agent-hint { font-size: 11px; color: var(--text-faint); line-height: 1.5; }
.agent-version-row { display: flex; align-items: center; justify-content: space-between; }
.agent-ver-badge {
  font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 999px;
  background: var(--accent-light); color: var(--accent-hover);
}
.agent-batch-msg { font-size: 12px; min-height: 16px; }
.agent-stat-row {
  display: flex; align-items: center; gap: 7px;
  padding: 3px 0; font-size: 12px;
}
.agent-stat-label { flex: 1; color: var(--text-muted); }
.agent-stat-row strong { font-size: 12px; font-weight: 700; }
/* filter bar */
.agent-filter-bar {
  display: flex; gap: 8px; padding: 12px 16px;
  border-bottom: 1px solid var(--border); flex-shrink: 0;
}
.agent-search {
  flex: 1; height: 30px; border: 1px solid var(--border); border-radius: 6px;
  padding: 0 10px; font-size: 13px; background: var(--bg); color: var(--text);
}
.agent-search:focus { outline: none; border-color: var(--accent); }
.agent-status-sel {
  height: 30px; border: 1px solid var(--border); border-radius: 6px;
  padding: 0 8px; font-size: 12px; background: var(--bg); color: var(--text); cursor: pointer;
}
/* site list */
.agent-site-list { flex: 1; overflow-y: auto; padding: 6px 0; }
.agent-empty { padding: 40px 20px; text-align: center; color: var(--text-faint); font-size: 13px; }
.agent-site-row {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 16px; border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.agent-site-row:last-child { border-bottom: none; }
.agent-site-row:hover { background: var(--bg-2); }
.agent-site-name  { width: 160px; flex-shrink: 0; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.agent-site-domain{ flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.agent-site-ver   { width: 52px; flex-shrink: 0; font-size: 12px; font-weight: 600; color: var(--accent); text-align: center; }
.agent-site-time  { width: 120px; flex-shrink: 0; font-size: 11px; text-align: right; }
.agent-site-acts  { width: 90px; flex-shrink: 0; display: flex; gap: 5px; justify-content: flex-end; }

/* ════ 收支管理弹窗 ════ */
/* 财务/统计弹窗布局修饰（无统一 padding，头部自带边框） */
.modal-fin { padding: 0; }
.modal-fin .app-modal-head {
  padding: 14px 20px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 0;
}
.fin-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 20px;
  flex-shrink: 0;
  gap: 10px;
}
.fin-panel > .fin-toolbar:first-child {
  margin: -16px -20px 10px;
  border-bottom: 1px solid var(--border);
}
.fin-site-label {
  font-size: 12px; color: var(--text-muted);
  background: var(--bg); border: 1px solid var(--border);
  padding: 2px 8px; border-radius: 999px;
}
.fin-month-sel {
  font-size: 12px; padding: 4px 8px; border-radius: 6px;
  border: 1px solid var(--border); background: var(--white);
  color: var(--text); cursor: pointer;
}
.fin-tabs {
  display: flex; gap: 0; border-bottom: 1px solid var(--border);
  padding: 0 16px; flex-shrink: 0;
}
.fin-tab {
  padding: 8px 16px; font-size: 13px; border: none; background: none;
  color: var(--text-muted); cursor: pointer; border-bottom: 2px solid transparent;
  margin-bottom: -1px; transition: all .12s;
}
.fin-tab:hover { color: var(--text); }
.fin-tab.active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }
.scfg-content, .fin-body { flex: 1; overflow: hidden; }
.fin-panel { height: 100%; overflow-y: auto; padding: 16px 20px; box-sizing: border-box; }

/* 汇总卡片 */
.fin-summary-row {
  display: flex; gap: 10px; margin-bottom: 16px;
}
.fin-card {
  flex: 1; background: var(--bg); border: 1px solid var(--border);
  border-radius: 8px; padding: 12px 14px;
}
.fin-card-label { font-size: 11px; color: var(--text-muted); margin-bottom: 4px; }
.fin-card-value { font-size: 20px; font-weight: 700; color: var(--text); }
.fin-card-value.income  { color: var(--green-text); }
.fin-card-value.expense { color: var(--red-hover); }
.fin-card-value.net-pos { color: var(--green-text); }
.fin-card-value.net-neg { color: var(--red-hover); }
.fin-card-sub { font-size: 11px; color: var(--text-faint); margin-top: 3px; }

/* 工具栏 */
.fin-section-bar {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 10px;
}
.fin-section-title { font-size: 13px; font-weight: 600; color: var(--text); }

/* 添加表单行 */
.fin-add-form, .fin-add-cat-row, .fin-server-form {
  display: flex; gap: 8px; align-items: center;
  background: var(--bg); border: 1px solid var(--border);
  border-radius: 8px; padding: 10px 12px; margin-bottom: 12px;
  flex-wrap: wrap;
}
.fin-form-input {
  flex: 1; min-width: 100px; max-width: 220px;
  padding: 5px 8px; border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; background: var(--white); color: var(--text);
}
.fin-form-input:focus { outline: none; border-color: var(--accent); }
.fin-form-select {
  flex: 1; min-width: 140px;
  padding: 5px 8px; border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; background: var(--white); color: var(--text);
}
.fin-form-select-sm {
  padding: 5px 8px; border: 1px solid var(--border); border-radius: 6px;
  font-size: 13px; background: var(--white); color: var(--text);
}

/* 条目表格 */
.fin-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.fin-table th {
  text-align: left; padding: 7px 10px;
  font-size: 11px; font-weight: 600; color: var(--text-muted);
  border-bottom: 1px solid var(--border); background: var(--bg);
}
.fin-table td { padding: 8px 10px; border-bottom: 1px solid var(--border-light); }
.fin-table tr:last-child td { border-bottom: none; }
.fin-table tr:hover td { background: var(--bg); }
.fin-badge-income  { display:inline-block; background:var(--green-light); color:var(--green-dark); font-size:10px; padding:1px 6px; border-radius:999px; font-weight:600; }
.fin-badge-expense { display:inline-block; background:var(--red-bg); color:var(--red-hover); font-size:10px; padding:1px 6px; border-radius:999px; font-weight:600; }
.fin-badge-auto    { display:inline-block; background:var(--code-bg); color:var(--code-text); font-size:10px; padding:1px 6px; border-radius:999px; }
.fin-amount        { font-weight: 600; font-variant-numeric: tabular-nums; }
.fin-empty         { text-align: center; color: var(--text-faint); padding: 32px; font-size: 13px; }
.ai-step-tab.active { background:var(--accent); border-color:var(--accent); color:var(--white); font-weight:600; }
.ai-step-panel.active { display:block; }
.ai-step-meta .cost { font-size:13px; font-weight:600; color:var(--accent); }
.ai-model-card-stats .cost { font-weight:600; color:var(--text); }

/* 分类列表 */
.fin-cat-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px; border-radius: 6px; font-size: 13px;
  border-bottom: 1px solid var(--border-light);
}
.fin-cat-item:hover { background: var(--bg); }
.fin-cat-name  { flex: 1; }
.fin-cat-type  { font-size: 11px; color: var(--text-muted); }
.fin-cat-sys   { font-size: 11px; color: var(--accent); background: var(--accent-light); padding: 1px 6px; border-radius:999px; }

/* 服务器列表 */
.fin-srv-item {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; border-radius: 6px; font-size: 13px;
  border-bottom: 1px solid var(--border-light);
}
.fin-srv-item:hover { background: var(--bg); }
.fin-srv-name  { flex: 1; font-weight: 500; }
.fin-srv-cost  { font-weight: 600; color: var(--accent); }
.fin-srv-sites { font-size: 11px; color: var(--text-muted); }

/* ════ 流量统计模块 ════ */

/* 汇总卡片行 */
.sstat-summary-row { display: flex; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.sstat-card { background: var(--bg); border: 1px solid var(--border); border-radius: 8px; padding: 12px 20px; min-width: 100px; }
.sstat-card-val   { font-size: 22px; font-weight: 700; color: var(--text); }
.sstat-card-label { font-size: 11px; color: var(--text-muted); margin-top: 2px; }

/* 柱状图 */
.sstat-chart-wrap { margin-bottom: 16px; }
.sstat-bar-chart  { display: flex; align-items: flex-end; gap: 4px; height: 80px; overflow-x: auto; padding-bottom: 18px; position: relative; }
.sstat-bar-col    { display: flex; flex-direction: column; align-items: center; flex-shrink: 0; width: 28px; }
.sstat-bar        { width: 18px; background: var(--accent); border-radius: 4px 4px 0 0; min-height: 2px; transition: height .15s; }
.sstat-bar-col:hover .sstat-bar { opacity: .75; }
.sstat-bar-label  { font-size: 10px; color: var(--text-muted); margin-top: 4px; transform: rotate(-45deg); white-space: nowrap; }

/* 来源分布 */
.sstat-section-bar { font-size: 12px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: .5px; margin-bottom: 8px; }
.sstat-sources-wrap { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.sstat-sources-col  { display: flex; flex-direction: column; gap: 6px; }
.sstat-src-head { font-size: 11px; font-weight: 600; color: var(--text-muted); margin-bottom: 4px; }
.sstat-src-row  { display: flex; align-items: center; gap: 8px; font-size: 12px; }
.sstat-src-label { width: 56px; color: var(--text-muted); flex-shrink: 0; }
.sstat-src-bar  { flex: 1; height: 8px; background: var(--bg); border-radius: 4px; overflow: hidden; }
.sstat-src-fill { height: 100%; border-radius: 4px; transition: width .3s; background: var(--accent); }
.sstat-src-pct  { width: 32px; text-align: right; font-weight: 600; color: var(--text); }

/* Top 页面表格 */
.sstat-num      { text-align: right; font-weight: 600; white-space: nowrap; }
.fin-table th.sstat-num { text-align: right; }
.sstat-top-title { font-size: 12px; font-weight: 500; color: var(--text); margin-bottom: 2px; }
.sstat-top-url  { font-size: 11px; color: var(--text-muted); word-break: break-all; }

/* ── 计划发布弹窗 ── */
.pp-modal-body { display: flex; height: 100%; overflow: hidden; }
.pp-plan-item.active { background: var(--accent-light); border-left-color: var(--accent); }
.pp-plan-item.active .pp-plan-meta { color: var(--accent); opacity: 0.8; }
.pp-form .scfg-row { margin-bottom: 14px; }
/* 站点配置：方案多选 */
.scfg-pp-meta { font-size: 11px; color: var(--text-muted); margin-left: 2px; }
.scfg-pool-item.active .scfg-pp-meta { color: var(--white); }

/* ══ 种子词弹窗 ══════════════════════════════════════════ */
/* header */
#seed-kw-overlay .app-modal-head { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:14px 20px; flex-shrink:0; border-bottom:1px solid var(--border); }
#seed-kw-overlay .app-modal-title { flex:1; font-size:15px; font-weight:700; }
.skwm-site-label { font-size:12px; font-weight:400; color:var(--text-muted); }
.skwm-head-actions { display:flex; gap:6px; align-items:center; }
/* import area — below header, above body */
.skwm-import-area { padding:12px 20px; border-bottom:1px solid var(--border); display:flex; flex-direction:column; gap:8px; background:var(--bg); }
.skwm-import-ta { width:100%; font-size:12px; font-family:monospace; resize:vertical; padding:7px 10px; border:1px solid var(--border); border-radius:6px; background:var(--bg-2); color:var(--text); box-sizing:border-box; outline:none; }
.skwm-import-ta:focus { border-color:var(--accent); }
.skwm-row-actions { display:flex; gap:8px; }
.skwm-err { font-size:12px; color:var(--red); margin-top:2px; }
/* result preview — below header */
.skwm-result { border-bottom:1px solid var(--border); }
.skwm-result-head { display:flex; align-items:center; gap:8px; padding:10px 20px; background:var(--bg); font-size:13px; font-weight:600; border-bottom:1px solid var(--border); }
.skwm-result-count { background:var(--accent); color:var(--white); border-radius:999px; padding:1px 8px; font-size:11px; font-weight:500; }
.skwm-result-hint-label { font-size:12px; font-weight:400; color:var(--text-muted); margin-left:auto; }
.skwm-result-body { padding:12px 20px; display:flex; flex-direction:column; gap:10px; }

/* ════ 数据中心弹窗（pft-* / adsg-*，从 profit.php & adsense-groups.php 迁入）════ */

/* 月份选择器 */
.pft-month-sel { padding:4px 8px;border:1px solid var(--border);border-radius:6px;font-size:12px;color:var(--text);background:var(--white);outline:none;cursor:pointer;margin-left:auto; }

/* 全局视图切换按钮 */
.pft-gview-btn { flex:1;padding:5px 0;border:1px solid var(--border);border-radius:6px;font-size:11px;font-weight:600;color:var(--text-muted);background:transparent;cursor:pointer;transition:all .12s; }
.pft-gview-btn:hover { background:var(--bg);color:var(--text); }
.pft-gview-btn.active { background:var(--accent);color:var(--white);border-color:var(--accent); }

/* 站点搜索框 */
.pft-search { width:100%;box-sizing:border-box;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:12px;color:var(--text);background:var(--bg);outline:none;font-family:inherit;transition:border-color .15s; }
.pft-search:focus { border-color:var(--accent);background:var(--white); }

/* 站点列表项 */
.pft-site-item { padding:8px 12px;cursor:pointer;border-left:3px solid transparent;border-bottom:1px solid var(--bg);transition:background .1s;display:flex;align-items:center;gap:8px; }
.pft-site-item:hover { background:var(--bg); }
.pft-site-item.active { background:var(--accent-light);border-left-color:var(--accent); }
.pft-site-dot { width:7px;height:7px;border-radius:50%;flex-shrink:0; }
.pft-dot-green { background:var(--green); }
.pft-dot-red   { background:var(--red); }
.pft-dot-gray  { background:var(--slate-300); }
.pft-site-info { min-width:0;flex:1; }
.pft-site-name { font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.pft-site-sub  { font-size:10px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }

/* 底部设置链接 */
.pft-setting-link { font-size:11px;color:var(--text-muted);cursor:pointer;transition:color .1s; }
.pft-setting-link:hover,.pft-setting-link.active { color:var(--accent);font-weight:700; }

/* 汇总卡片 */
.pft-cards { display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:22px; }
.pft-card { border:1px solid var(--border);border-radius:8px;padding:14px 16px; }
.pft-card-label { font-size:11px;color:var(--text-muted);margin-bottom:6px; }
.pft-card-num   { font-size:22px;font-weight:700;line-height:1; }
.pft-card-sub   { font-size:11px;color:var(--text-muted);margin-top:5px; }
.pft-card-num.green  { color:var(--green-text); }
.pft-card-num.orange { color:var(--orange-text); }
.pft-card-num.pos    { color:var(--green-text); }
.pft-card-num.neg    { color:var(--red-text); }

/* 区块标题 */
.pft-sec { display:flex;align-items:center;gap:10px;padding:14px 0 10px;border-bottom:1px solid var(--border-light);margin-bottom:12px; }
.pft-sec:not(:first-child) { margin-top:24px; }
.pft-sec-title { font-size:13px;font-weight:700;color:var(--text); }
.pft-sec-sub   { font-size:11px;color:var(--text-muted); }
.pft-sec-right { margin-left:auto; }

/* 收支表格 */
.pft-table { width:100%;border-collapse:collapse;font-size:12px; }
.pft-table th { background:var(--bg);color:var(--text-muted);font-weight:700;font-size:10px;padding:7px 12px;text-align:left;border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em; }
.pft-table th.sstat-num, .pft-table th.num { text-align:right; }
.pft-table td { padding:9px 12px;border-bottom:1px solid var(--border-light); }
.pft-table tr:last-child td { border-bottom:none; }
.pft-table tbody tr:hover td { background:var(--bg);cursor:pointer; }
.pft-table tfoot td { font-weight:700;background:var(--bg);border-top:1px solid var(--border); }
.pft-table .num    { text-align:right;font-variant-numeric:tabular-nums; }
.pft-table .green  { color:var(--green-text);font-weight:600; }
.pft-table .orange { color:var(--orange-text); }
.pft-table .red    { color:var(--red-text);font-weight:600; }
.pft-table .muted  { color:var(--text-muted); }
.pft-table th.pft-hl, .pft-table td.pft-hl { background:rgba(245,158,11,.08); }

/* SSL 证书管理 */
.ssl-badge { display:inline-block;font-size:10px;font-weight:600;padding:1px 6px;border-radius:999px;margin-right:4px; }
.ssl-badge.warn { background:var(--yellow-light);color:var(--yellow-dark); }
.ssl-badge.err  { background:var(--red-bg);color:var(--red-hover); }
.ssl-status { display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px; }
.ssl-status.ok      { background:var(--green-light);color:var(--green-dark); }
.ssl-status.warn    { background:var(--yellow-light);color:var(--yellow-dark); }
.ssl-status.err     { background:var(--red-bg);color:var(--red-hover); }
.ssl-status.none    { background:var(--gray-bg);color:var(--text-muted); }
.ssl-status.unknown { background:var(--code-bg);color:var(--code-text); }
.ssl-err { font-size:11px;color:var(--red-text);margin-top:4px; }
.ssl-action-bar { display:flex;justify-content:flex-end;margin-bottom:10px; }

/* AI 成本明细表 */
.pft-ai-table { width:100%;border-collapse:collapse;font-size:12px; }
.pft-ai-table th { font-size:10px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;padding:6px 10px;border-bottom:1px solid var(--border);text-align:left; }
.pft-ai-table th.sstat-num { text-align:right; } /* 「调用」列表头与右对齐的数字列对齐 */
.pft-ai-table td { padding:7px 10px;border-bottom:1px solid var(--border-light); }
.pft-ai-table tr:last-child td { border-bottom:none; }
.pft-ai-bar-wrap { width:80px;height:6px;background:var(--border-light);border-radius:3px;overflow:hidden;display:inline-block;vertical-align:middle;margin-right:6px; }
.pft-ai-bar { height:100%;background:var(--yellow);border-radius:3px; }

/* 空态 / 添加行 / 列表项 */
.pft-empty    { padding:40px 0;text-align:center;color:var(--text-faint);font-size:13px; }
.pft-add-row  { display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;padding:12px;background:var(--bg);border-radius:8px;margin-top:8px; }
.pft-add-row .ed-field { flex:1;min-width:90px; }
.pft-list-item { display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border-light);font-size:12px; }
.pft-list-item:last-child { border-bottom:none; }
.pft-rate-hint { font-size:11px;color:var(--text-faint);padding:8px 0 0; }

/* 归属选择弹窗（记账「归属」平铺点选） */
.sys-tgt-btn { text-align:left;cursor:pointer;background:var(--white); }
.sys-tgt-filter { width:100%;margin-bottom:10px; }
.sys-tgt-sec { font-size:11px;font-weight:600;color:var(--text-faint);margin:10px 0 6px; }
.sys-tgt-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px; }
.sys-tgt-tile { border:1px solid var(--border);border-radius:8px;padding:8px 10px;cursor:pointer;background:var(--white); }
.sys-tgt-tile:hover { border-color:var(--accent);background:var(--accent-light); }
.sys-tgt-tile.active { border-color:var(--accent);background:var(--accent-light); }
.sys-tgt-name { font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.sys-tgt-sub { font-size:11px;color:var(--text-faint);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }

/* AdSense 分组管理 */
.adsg-sec-bar { font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;padding:12px 0 8px;margin-top:6px;border-top:1px solid var(--border); }
.adsg-sec-bar:first-child { border-top:none;padding-top:0; }
.adsg-sec-bar span { font-weight:400;text-transform:none;letter-spacing:0;margin-left:6px; }
.adsg-site-toolbar { display:flex;align-items:center;gap:6px;margin-bottom:8px; }
.adsg-site-toolbar input[type="text"] { flex:1;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:12px;color:var(--text);background:var(--white);outline:none;font-family:inherit;transition:border-color .15s; }
.adsg-site-toolbar input[type="text"]:focus { border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light); }
.adsg-site-sel-count { font-size:11px;color:var(--text-muted);white-space:nowrap; }
.adsg-site-list-wrap { border:1px solid var(--border);border-radius:8px;max-height:240px;overflow-y:auto; }
.adsg-site-row { display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer;font-size:12px;border-bottom:1px solid var(--border-light);transition:background .1s; }
.adsg-site-row:last-child { border-bottom:none; }
.adsg-site-row:hover { background:var(--bg); }
.adsg-site-row input[type="checkbox"] { margin:0;cursor:pointer;flex-shrink:0; }
.adsg-site-name   { font-weight:600;color:var(--text);min-width:100px; }
.adsg-site-domain { color:var(--text-muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.adsg-other-badge { font-size:10px;font-weight:700;white-space:nowrap;flex-shrink:0;background:var(--yellow-bg);border:1px solid var(--amber-pale);color:var(--orange-text);padding:1px 6px;border-radius:999px; }
.adsg-push-result { font-size:12px;color:var(--text-muted); }
.adsg-list-footer { margin-top:auto;padding:10px 12px 12px;border-top:1px solid var(--border);flex-shrink:0;display:flex;flex-direction:column;gap:5px; }
.adsg-list-stat { display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--text-muted); }
.adsg-list-stat strong { font-size:12px;font-weight:700;color:var(--text); }
.skwm-result-hints { display:flex; gap:12px; }
.skwm-result-hints .skwm-field { flex:1; }
.skwm-result-list { max-height:180px; overflow-y:auto; border:1px solid var(--border); border-radius:6px; }
.skwm-result-foot { display:flex; gap:8px; padding:10px 20px; border-top:1px solid var(--border); background:var(--bg); }
/* body */
.skwm-body { flex:1; overflow-y:auto; padding:16px 20px; display:flex; flex-direction:column; gap:12px; }
.skwm-loading { font-size:13px; color:var(--text-muted); }
/* inline row (add / edit) */
.skwm-inline-row { display:flex; gap:8px; align-items:center; padding:8px 10px; background:var(--bg); border:1px solid var(--accent); border-radius:6px; }
.skwm-input { height:28px; padding:0 8px; font-size:13px; border:1px solid var(--border); border-radius:4px; background:var(--bg-2); color:var(--text); outline:none; box-sizing:border-box; }
.skwm-input:focus { border-color:var(--accent); }
.skwm-input-kw { flex:1; min-width:0; }
.skwm-input-cn { width:160px; flex-shrink:0; }
/* list header */
.skwm-list-header { display:flex; align-items:center; gap:6px; font-size:13px; font-weight:600; color:var(--text); }
.skwm-count { background:var(--bg-3); border-radius:999px; padding:1px 8px; font-size:11px; color:var(--text-muted); font-weight:400; }
/* keyword rows */
.skwm-list { display:flex; flex-direction:column; gap:1px; }
.skwm-kw-row { display:flex; align-items:center; gap:0; padding:6px 10px; border-radius:4px; font-size:13px; }
.skwm-kw-row:hover { background:var(--bg); }
.skwm-kw-row:hover .skwm-kw-actions { opacity:1; }
.skwm-kw-local { flex:1; color:var(--text); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.skwm-kw-cn-label { width:180px; flex-shrink:0; color:var(--text-muted); font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding:0 8px; }
.skwm-kw-actions { display:flex; gap:4px; opacity:0; transition:opacity .15s; flex-shrink:0; }
.skwm-kw-btn { border:none; background:none; cursor:pointer; font-size:12px; color:var(--text-muted); padding:2px 6px; border-radius:4px; }
.skwm-kw-btn:hover { background:var(--bg-3); color:var(--text); }
.skwm-kw-btn.del:hover { color:var(--red); }
/* editing row (replaces .skwm-kw-row) */
.skwm-kw-row.editing { background:var(--bg); border:1px solid var(--accent); padding:5px 9px; }
.skwm-kw-row.editing .skwm-kw-actions { opacity:1; }
.skwm-list-empty { font-size:13px; color:var(--text-faint); padding:8px 10px; }
/* filter section */
.skwm-filter-section { padding-top:14px; border-top:1px solid var(--border); display:flex; flex-direction:column; gap:8px; }
.skwm-filter-header { display:flex; align-items:center; gap:8px; }
.skwm-filter-title { font-size:13px; font-weight:600; color:var(--text); }
.skwm-filter-header .text-hint { flex:1; }
/* shared field */
.skwm-field { display:flex; flex-direction:column; gap:4px; }
.skwm-field label { font-size:12px; color:var(--text-muted); font-weight:500; }
.skwm-ta { width:100%; font-size:13px; resize:vertical; padding:7px 10px; border:1px solid var(--border); border-radius:6px; background:var(--bg-2); color:var(--text); box-sizing:border-box; outline:none; }

/* ════════════════════════════════
   自动化建站弹窗 (.apm-*)
   ════════════════════════════════ */
.app-modal-box.apm-box {
  display: flex; flex-direction: column;
  padding: 0; overflow: hidden;
}
.app-modal-box.apm-box .app-modal-head {
  padding: 16px 20px 14px; border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between;
  flex-shrink: 0; margin-bottom: 0;
}
.apm-body { flex: 1; overflow: hidden; display: flex; min-height: 0; }
.apm-foot {
  padding: 10px 20px; border-top: 1px solid var(--border);
  display: flex; justify-content: flex-end; flex-shrink: 0;
}

/* 左右布局（同 scfg-lr 模式） */
.apm-left {
  width: 190px; flex-shrink: 0;
  border-right: 1px solid var(--border);
  background: var(--bg);
  padding: 14px 10px; overflow-y: auto;
  display: flex; flex-direction: column; gap: 2px;
}
.apm-right { flex: 1; overflow-y: auto; padding: 20px 24px; }
.apm-section-hd {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .5px; color: var(--text-faint);
  padding: 4px 10px 8px; margin-bottom: 2px;
}

/* 左侧步骤列表 */
.apm-step-item {
  display: flex; align-items: flex-start; gap: 8px;
  padding: 7px 10px; border-radius: 6px;
  font-size: 12px; color: var(--text-muted);
  cursor: default; user-select: none;
}
.apm-step-item.done   { color: var(--green-text); }
.apm-step-item.active { background: var(--accent-light); color: var(--accent); }
.apm-step-item.human  { color: var(--orange-text); }
.apm-step-item.dim    { opacity: .4; }
.apm-si-dot {
  width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; margin-top: 3px;
}
.apm-si-dot.pending { background: var(--border); border: 1px solid var(--text-faint); }
.apm-si-dot.done    { background: var(--green); }
.apm-si-dot.running { background: var(--accent); }
.apm-si-dot.human   { background: var(--yellow); }
.apm-si-dot.error   { background: var(--red); }
@keyframes apm-spin { to { transform: rotate(360deg); } }
.apm-si-dot.running { animation: apm-spin 1.2s linear infinite; border-radius: 50%; }
.apm-si-label { flex: 1; line-height: 1.3; }
.apm-si-sub   { font-size: 10px; opacity: .7; margin-top: 1px; }
.apm-divider  { border: none; border-top: 1px dashed var(--border); margin: 4px 10px; }

/* 右侧：检查清单 */
.apm-check-block  { margin-bottom: 20px; }
.apm-block-title  {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .5px; color: var(--text-faint);
  padding-bottom: 8px; margin-bottom: 8px;
  border-bottom: 1px solid var(--border);
}
.apm-check-row {
  display: flex; align-items: center; gap: 8px;
  padding: 7px 10px; margin-bottom: 4px;
  background: var(--white); border: 1px solid var(--border);
  border-radius: 6px;
}
.apm-check-row.fail  { border-color: var(--red-border); background: var(--red-bg); }
.apm-ci {
  width: 18px; height: 18px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 700;
}
.apm-ci.pass { background: var(--green-bg);  color: var(--green-text); }
.apm-ci.fail { background: var(--red-bg);    color: var(--red); }
.apm-ci.warn { background: var(--yellow-bg); color: var(--yellow); }
.apm-cl      { flex: 1; font-size: 12px; color: var(--text); }
.apm-cl.dim  { color: var(--text-faint); }
.apm-cfg-link {
  font-size: 11px; color: var(--accent); cursor: pointer; white-space: nowrap;
  text-decoration: underline;
}
.apm-cfg-link:hover { color: var(--accent-hover); }
.apm-opt-tag { font-size: 11px; color: var(--text-faint); }

.apm-launch-area { margin-top: 24px; display: flex; align-items: center; gap: 12px; }
.apm-launch-hint { font-size: 12px; }
.apm-launch-hint.ok  { color: var(--green-text); }
.apm-launch-hint.err { color: var(--red); }
.apm-launch-btn {
  height: 34px; padding: 0 20px;
  background: var(--accent); color: var(--white); border: none;
  border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer;
}
.apm-launch-btn:hover    { background: var(--accent-hover); }
.apm-launch-btn:disabled { background: var(--border); color: var(--text-faint); cursor: not-allowed; }

/* 右侧：运行状态卡片 */
.apm-status-card {
  background: var(--white); border: 1px solid var(--border);
  border-radius: 8px; padding: 16px 18px; margin-bottom: 14px;
}
.apm-status-card.running { border-left: 3px solid var(--accent); }
.apm-status-card.done    { border-left: 3px solid var(--green); }
.apm-status-card.error   { border-left: 3px solid var(--red); }
.apm-sc-eyebrow {
  font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .5px; margin-bottom: 6px;
}
.apm-sc-eyebrow.running { color: var(--accent); }
.apm-sc-eyebrow.done    { color: var(--green-text); }
.apm-sc-eyebrow.error   { color: var(--red); }
.apm-sc-title { font-size: 14px; font-weight: 600; color: var(--text); margin-bottom: 6px; }
.apm-sc-body  { font-size: 12px; color: var(--text-muted); line-height: 1.6; }
.apm-sc-actions { display: flex; gap: 8px; margin-top: 12px; }
/* 执行日志 */
.apm-log { background: var(--white); border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.apm-log-hd { font-size: 11px; font-weight: 600; color: var(--text-muted); padding: 7px 12px; border-bottom: 1px solid var(--border); }
.apm-log-row { display: flex; gap: 10px; padding: 5px 12px; font-size: 11px; border-bottom: 1px solid var(--border-light); }
.apm-log-row:last-child { border-bottom: none; }
.apm-log-row.err { background: var(--red-bg); }
.apm-log-time  { color: var(--text-faint); flex-shrink: 0; font-family: monospace; }
.apm-log-step  { color: var(--text-muted); flex-shrink: 0; width: 80px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.apm-log-msg   { flex: 1; color: var(--text); }
.skwm-ta:focus { border-color:var(--accent); }

/* ════════════════════════════════
   评论管理弹窗 (.acm-*)
   ════════════════════════════════ */
.app-modal-box.acm-box {
  display: flex; flex-direction: column;
  padding: 0; overflow: hidden;
}
.app-modal-box.acm-box .app-modal-head {
  padding: 16px 20px 14px; border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between;
  flex-shrink: 0; margin-bottom: 0;
}
.acm-layout { flex: 1; display: flex; overflow: hidden; min-height: 0; }
.ae-cmt-ops-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.ae-cmt-ops-head .acm-section-title { margin-bottom: 0; }
.acm-foot {
  padding: 10px 20px; border-top: 1px solid var(--border);
  display: flex; justify-content: flex-end; flex-shrink: 0;
}
.acm-left {
  flex: 1; min-width: 0; overflow-y: auto; padding: 16px 18px;
  border-right: 1px solid var(--border);
}
.acm-right {
  width: 280px; flex-shrink: 0; overflow-y: auto; padding: 16px 14px;
  background: var(--bg);
}
.acm-section-title {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: var(--text-muted); margin-bottom: 10px;
}
.acm-preview-area { font-size: 13px; }
.acm-loading { color: var(--text-faint); font-size: 13px; }
.acm-no-cfg {
  background: var(--yellow-bg); border: 1px solid var(--border);
  border-radius: 6px; padding: 10px 14px; font-size: 13px; color: var(--yellow-text);
}
.acm-cfg-row {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  background: var(--white); border: 1px solid var(--border);
  border-radius: 6px; padding: 8px 12px; margin-bottom: 14px; font-size: 12px;
}
.acm-cfg-label {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em; color: var(--text-faint);
}
.acm-cfg-label.ml-12 { margin-left: 12px; }
.acm-cfg-val { font-size: 12px; color: var(--text); font-weight: 500; }
.acm-op-row { display: flex; align-items: center; gap: 8px; }
.acm-op-label { font-size: 12px; color: var(--text-muted); white-space: nowrap; }
.acm-count-input {
  width: 64px; padding: 5px 8px; border: 1px solid var(--border);
  border-radius: 6px; font-size: 13px; font-family: inherit; text-align: center;
}
.acm-count-input:focus { outline: none; border-color: var(--accent); }
.acm-op-btn { width: 100%; display: block; }
.acm-op-hint {
  font-size: 11px; color: var(--text-faint); line-height: 1.6; margin-bottom: 8px;
}
.acm-op-hint code {
  background: var(--code-bg); color: var(--code-text);
  padding: 1px 4px; border-radius: 4px; font-family: monospace; font-size: 10px;
}
.acm-import-ta {
  width: 100%; padding: 8px; border: 1px solid var(--border);
  border-radius: 6px; font-size: 11px; font-family: ui-monospace, monospace;
  color: var(--text); background: var(--white); resize: vertical;
  box-sizing: border-box; line-height: 1.5;
}
.acm-import-ta:focus { outline: none; border-color: var(--accent); }
/* ── 变量视角总览弹窗（?page=vars 左列「N 变量」徽章点开）── */
.vam-wrap { max-height: 70vh; overflow-y: auto; padding: 4px 2px; }
.vam-search { width: 100%; margin-bottom: 12px; position: sticky; top: 0; z-index: 2; }
.vam-sec { margin-bottom: 18px; }
.vam-sec-title {
  font-size: 12px; font-weight: 700; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: .04em;
  display: flex; align-items: center; gap: 8px;
  margin: 0 0 8px; padding-bottom: 6px; border-bottom: 1px solid var(--border);
}
.vam-item {
  border: 1px solid var(--border); border-radius: var(--radius);
  margin-bottom: 6px; background: var(--bg);
}
.vam-item[open] { background: var(--bg-hover); }
.vam-summary {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 9px 12px; cursor: pointer; list-style: none;
}
.vam-summary::-webkit-details-marker { display: none; }
.vam-summary::before { content: '▸'; color: var(--text-faint); font-size: 11px; }
.vam-item[open] .vam-summary::before { content: '▾'; }
.vam-key {
  font-family: var(--mono, monospace); font-size: 12.5px; font-weight: 600;
  color: var(--primary, #6366f1);
}
.vam-label { font-size: 13px; font-weight: 600; }
.vam-badges { display: flex; gap: 6px; margin-left: auto; }
.vam-body { padding: 2px 14px 12px 26px; }
.vam-desc { font-size: 12.5px; color: var(--text-muted); line-height: 1.7; margin-bottom: 8px; }
.vam-row { display: flex; gap: 8px; align-items: flex-start; margin-bottom: 8px; }
.vam-row-lbl { font-size: 12px; color: var(--text-faint); white-space: nowrap; padding-top: 2px; }
.vam-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.vam-chip {
  font-size: 12px; background: var(--bg); border: 1px solid var(--border);
  border-radius: 99px; padding: 1px 9px; color: var(--text);
}
.vam-chip-none { color: var(--text-faint); font-style: italic; }
.vam-empty { color: var(--text-faint); font-size: 13px; text-align: center; padding: 30px 0; }

/* 变量总览弹窗：体检结论条 */
.vam-health {
  font-size: 13px; font-weight: 600; border-radius: var(--radius);
  padding: 10px 14px; margin-bottom: 14px; line-height: 1.6;
}
.vam-health-ok  { background: var(--green-bg); color: var(--green-text, #15803d); border: 1px solid var(--green-text, #22c55e); }
.vam-health-bad { background: var(--red-bg); color: var(--red); border: 1px solid var(--red); }

/* 指令总览弹窗：指令行 */
.pam-prompt {
  display: flex; align-items: center; gap: 8px;
  padding: 7px 10px; border-radius: 6px; cursor: pointer;
  border: 1px solid transparent; margin-bottom: 4px;
}
.pam-prompt:hover { background: var(--bg); border-color: var(--border); }
.pam-prompt-name { font-size: 13px; font-weight: 500; }
.pam-prompt-id { font-family: var(--mono, monospace); font-size: 11px; color: var(--text-faint); margin-left: auto; }
.pam-empty-usage { font-size: 12.5px; color: var(--text-faint); font-style: italic; padding: 4px 10px; }

/* ═══════════════════════════════════════════════════════════
   WP 同步面板：分组卡片 + 单项同步（仅保留必要的布局/交互自定义）
   ═══════════════════════════════════════════════════════════ */
.wpm-sync-group-body {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 10px;
}
.wpm-sync-item:hover { border-color: #cbd5e1; }
.wpm-sync-item .wpm-item-sync {
  opacity: 0;
  transition: opacity 0.15s;
  flex-shrink: 0;
  margin-left: 8px;
}
.wpm-sync-item:hover .wpm-item-sync { opacity: 1; }
@media (max-width: 768px) {
  .wpm-sync-item .wpm-item-sync { opacity: 1; }
  .wpm-sync-group-body { grid-template-columns: 1fr; }
}
.wpm-sync-batched-detail {
  grid-column: 1 / -1;
  width: 100%;
  margin-top: 6px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

/* ════ CF 操作记录白话版弹窗 ════ */
.cf-human-logs-list { display: flex; flex-direction: column; gap: 12px; }
.cf-human-log-item {
  font-size: 13px;
  line-height: 1.7;
  padding: 12px 14px;
  border-radius: 8px;
  background: var(--bg);
  border-left: 3px solid var(--border);
}
.cf-human-log-ok { border-left-color: var(--green); }
.cf-human-log-fail { border-left-color: var(--red); }
.cf-human-log-item a {
  color: var(--accent);
  text-decoration: underline;
  word-break: break-all;
}
.cf-human-log-item strong { font-weight: 600; color: var(--text); }

/* ════ 发布工作台图片审核流程弹窗 ════ */
.pw-img-review-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-height: 0;
}
.pw-img-review-main {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg);
  border-radius: 8px;
  overflow: hidden;
  cursor: zoom-in;
  margin-bottom: 16px;
}
.pw-img-review-img {
  max-width: 100%;
  max-height: calc(100vh - 300px);
  object-fit: contain;
}
.pw-img-review-meta {
  width: 100%;
  max-width: 800px;
  text-align: center;
}
.pw-img-review-title-line {
  max-width: 520px;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.pw-img-review-actions {
  display: flex;
  justify-content: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 14px;
}

/* ── 流量日历视图（设计稿 A，站点配置流量 tab / 中控站点详情共用） ── */
.sstat-cal-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.sstat-cal-kpi{border:1px solid var(--border,#e4e6ea);border-radius:8px;padding:12px 14px;background:#fff}
.sstat-cal-kpi .l{font-size:12px;color:#888}
.sstat-cal-kpi .v{font-size:22px;font-weight:700;color:#222;margin-top:2px}
.sstat-cal-kpi .v.blue{color:#4a7dff}
.sstat-cal-note{font-size:12px;color:#999;margin-bottom:14px}
.sstat-cal{border:1px solid var(--border,#e4e6ea);border-radius:8px;overflow:hidden;background:#fff}
.sstat-cal-hd,.sstat-cal-grid{display:grid;grid-template-columns:repeat(7,1fr)}
.sstat-cal-hd div{padding:8px 0;text-align:center;font-size:12px;color:#888;border-bottom:1px solid #eef0f3;background:#fafbfc}
.sstat-cal-cell{min-height:78px;padding:8px 10px;border-right:1px solid #eef0f3;border-bottom:1px solid #eef0f3;cursor:default;transition:box-shadow .15s}
.sstat-cal-cell:nth-child(7n){border-right:none}
.sstat-cal-cell.has{cursor:pointer}
.sstat-cal-cell.has:hover{box-shadow:inset 0 0 0 2px #4a7dff}
.sstat-cal-cell.sel{box-shadow:inset 0 0 0 2px #4a7dff}
.sstat-cal-cell .d{font-size:12px;color:#888}
.sstat-cal-cell .big{font-size:20px;font-weight:700;margin-top:6px}
.sstat-cal-cell .tot{font-size:11px;color:rgba(0,0,0,.45);margin-top:4px}
.sstat-cal-cell.h0{background:#fff}
.sstat-cal-cell.h0 .big{color:#ccc}
.sstat-cal-cell.h1{background:#e8f0ff}
.sstat-cal-cell.h1 .big{color:#4a7dff}
.sstat-cal-cell.h2{background:#7aa5ff}
.sstat-cal-cell.h2 .big,.sstat-cal-cell.h2 .d{color:#fff}
.sstat-cal-cell.h2 .tot{color:rgba(255,255,255,.75)}
.sstat-cal-cell.h3{background:#2f63e8}
.sstat-cal-cell.h3 .big,.sstat-cal-cell.h3 .d{color:#fff}
.sstat-cal-cell.h3 .tot{color:rgba(255,255,255,.75)}
.sstat-cal-cell.out{opacity:.4;cursor:default}
.sstat-cal-legend{display:flex;gap:14px;align-items:center;font-size:12px;color:#888;margin-top:10px;flex-wrap:wrap}
.sstat-cal-legend i{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:4px}
.sstat-day{margin-top:18px;border:1px solid var(--border,#e4e6ea);border-radius:8px;padding:16px 18px;background:#fff}
.sstat-day h3{font-size:14px;margin-bottom:12px}
.sstat-day-nums{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.sstat-day-num{border:1px solid #eef0f3;border-radius:8px;padding:10px 12px;background:#fafbfc}
.sstat-day-num .v{font-size:20px;font-weight:700}
.sstat-day-num .v.blue{color:#4a7dff}
.sstat-day-num .l{font-size:12px;color:#888;margin-top:2px}
.sstat-day table{width:100%;border-collapse:collapse;font-size:12px}
.sstat-day th,.sstat-day td{padding:8px 10px;text-align:left;border-bottom:1px solid #f2f3f5}
.sstat-day th{color:#888;font-weight:500;background:#fafbfc}
.sstat-day td.num{font-weight:600;color:#4a7dff}

/* 流量 Top 文章页路径链接（当日明细弹窗） */
.sstat-top-url a { color: var(--accent, #4f8cff); text-decoration: none; }
.sstat-top-url a:hover { text-decoration: underline; }

/* ── 流量中心：站点阅读排行（.tfc-*） ── */
.tfc-rank-row { cursor: pointer; }
.tfc-rank-row:hover .tfc-rank-name { color: var(--accent, #4f8cff); }
.tfc-rank-top .tfc-rank-name { font-weight: 600; }
.tfc-rank-zero { opacity: .45; }
.tfc-mini-bar { display: flex; align-items: center; gap: 6px; min-width: 120px; }
.tfc-mini-bar .tfc-mini-fill { height: 6px; border-radius: 3px; background: #4a7dff; flex-shrink: 0; }
.tfc-mini-bar span { font-weight: 600; color: #4a7dff; }
