/* 小红书矩阵运营系统 - 样式 */
:root {
  --red: #ff2442;
  --red-light: #fff0f2;
  --bg: #f6f7f9;
  --card: #ffffff;
  --text: #1f2329;
  --text-2: #646a73;
  --text-3: #8f959e;
  --border: #e5e6eb;
  --primary: #3370ff;
  --green: #00b578;
  --orange: #ff8f1f;
  --radius: 12px;
  --shadow: 0 1px 4px rgba(31, 35, 41, .08);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg); color: var(--text); font-size: 14px;
}
button { font-family: inherit; cursor: pointer; }
input, select, textarea { font-family: inherit; font-size: 14px; outline: none; }

/* ===== 布局 ===== */
.layout { display: flex; min-height: 100vh; }
.sidebar {
  width: 200px; background: #fff; border-right: 1px solid var(--border);
  padding: 18px 12px; position: fixed; top: 0; bottom: 0; left: 0; z-index: 10;
}
.logo { display: flex; align-items: center; gap: 8px; font-weight: 700; font-size: 16px; padding: 4px 8px 18px; }
.logo .dot { width: 28px; height: 28px; border-radius: 8px; background: var(--red); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 800; }
.nav-item {
  display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 8px;
  color: var(--text-2); cursor: pointer; margin-bottom: 2px; font-size: 14px; user-select: none;
}
.nav-item:hover { background: #f2f3f5; }
.nav-item.active { background: var(--red-light); color: var(--red); font-weight: 600; }
.nav-item .ico { font-size: 16px; width: 20px; text-align: center; }
.sidebar-foot { position: absolute; bottom: 16px; left: 12px; right: 12px; font-size: 12px; color: var(--text-3); }
/* 退出按钮醒目化：所有角色（含只有两个页面的员工）都能一眼找到退出入口 */
.signout-btn { color: var(--red); border-color: #ffc9d1; background: #fff7f8; }
.signout-btn:hover { background: var(--red); border-color: var(--red); color: #fff; }
.main { margin-left: 200px; flex: 1; padding: 20px 28px 60px; }
.page-title { font-size: 20px; font-weight: 700; margin-bottom: 4px; }
.page-sub { color: var(--text-3); margin-bottom: 18px; font-size: 13px; }

/* ===== 统计卡 ===== */
.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 20px; }
/* 三个数据卡（播放/点赞/评论）单独一行 */
.stat-grid.cols3 { grid-template-columns: repeat(3, 1fr); }
.stat-card { background: var(--card); border-radius: var(--radius); padding: 18px; box-shadow: var(--shadow); }
.stat-card .num { font-size: 26px; font-weight: 700; }
.stat-card .lbl { color: var(--text-3); font-size: 12px; margin-top: 4px; }
.stat-card.red .num { color: var(--red); }
.stat-card.data .num { color: var(--primary); }

/* ===== 通用组件 ===== */
.card { background: var(--card); border-radius: var(--radius); padding: 18px; box-shadow: var(--shadow); margin-bottom: 16px; }
.btn {
  display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--border); background: #fff;
  color: var(--text); padding: 7px 14px; border-radius: 8px; font-size: 13px; transition: .15s;
}
.btn:hover { border-color: var(--red); color: var(--red); }
.btn.primary { background: var(--red); border-color: var(--red); color: #fff; }
.btn.primary:hover { background: #e61f3c; color: #fff; }
.btn.blue { background: var(--primary); border-color: var(--primary); color: #fff; }
.btn.sm { padding: 4px 10px; font-size: 12px; border-radius: 6px; }
.btn.danger:hover { border-color: var(--red); background: var(--red-light); color: var(--red); }
.btn:disabled { opacity: .5; cursor: not-allowed; }
.input, .select, .textarea {
  width: 100%; border: 1px solid var(--border); border-radius: 8px; padding: 8px 12px; background: #fff;
}
.input:focus, .textarea:focus, .select:focus { border-color: var(--red); }
.textarea { min-height: 90px; resize: vertical; line-height: 1.6; }
.form-row { margin-bottom: 14px; }
.form-row label { display: block; font-size: 13px; color: var(--text-2); margin-bottom: 6px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.tag {
  display: inline-flex; align-items: center; gap: 4px; background: #f2f3f5; color: var(--text-2);
  border-radius: 6px; padding: 2px 8px; font-size: 12px; margin: 2px 4px 2px 0;
}
.tag.assign { background: #e8f7ff; color: #0074d6; }
.tag.ok { background: #e8f8f2; color: var(--green); }
.tag.warn { background: #fff4e6; color: var(--orange); }
.tag.red { background: var(--red-light); color: var(--red); }
.tag .x { cursor: pointer; margin-left: 2px; opacity: .6; }
.tag .x:hover { opacity: 1; }

/* ===== 小红书账号状态标签 ===== */
.acc-st {
  display: inline-block; border-radius: 6px; padding: 2px 8px;
  font-size: 12px; white-space: nowrap; line-height: 1.5;
}
.acc-st.st-ok   { background: #e8f8f2; color: var(--green); }        /* 正常 */
.acc-st.st-warm { background: #fff4e6; color: var(--orange); }       /* 养号中 */
.acc-st.st-bad  { background: var(--red-light); color: var(--red); } /* 被封 */
.acc-st.st-off  { background: #f0f0f2; color: var(--text-3); }       /* 注销 */
.acc-st.st-new     { background: #f3ecff; color: #7c3aed; }           /* 新号待养 */
.acc-st.st-testing { background: #e8f1ff; color: #2563eb; }           /* 测流量 */
.acc-st.st-resting { background: #eef1f5; color: #64748b; }           /* 放着 */
.acc-st.st-active  { background: #e8f8f2; color: #0f9d6e; }           /* 正常在发 */
.acc-st.st-retired { background: var(--red-light); color: var(--red); } /* 封禁 */
.acc-days { font-size: 11px; color: var(--text-3); margin-top: 3px; }
.acc-days.risk { color: #d92b4b; font-weight: 600; }
/* 表头副标题：把「已领素材」和「当前素材数」的区别写在表头上，免得混淆 */
.th-sub { font-weight: 400; font-size: 11px; color: var(--text-3); margin-top: 2px; white-space: nowrap; }
/* 账号表列多（14 列），给每列兜底宽度，宁可横向滚动也别把内容压成竖排 */
.acc-table { min-width: 1240px; }
.acc-table th { white-space: nowrap; vertical-align: top; }
.acc-table td { vertical-align: top; }
/* 11 列（2026-11-02 合并）：1 账号（昵称/号/注册） 2 简介 3 关注粉丝赞藏 4 IP 5 阶段 6 运营者
   7 当前素材数 8 已领素材 9 主页笔记 10 备注 11 操作
   table-layout:fixed —— 各列宽度就按 <th> 上写的百分比/像素分，不会因为某条标题长就把别的列挤成竖排字 */
.acc-table { width: 100%; table-layout: fixed; min-width: 1224px; }
/* 账号表列多，单元格内边距比通版表格收一点（11 列 × 省 8px ≈ 省 88px） */
.acc-table th, .acc-table td { padding: 9px 10px; }
.acc-table td:nth-child(1) { min-width: 200px; }
.acc-table td:nth-child(2) { min-width: 140px; }
.acc-table td:nth-child(3) { min-width: 100px; }
.acc-table td:nth-child(9) { min-width: 200px; }
.acc-table td:last-child { min-width: 176px; }
.acc-table td { overflow: hidden; }
/* 合并后的「小红书账号」列：昵称（超链接）/ 小红书号（超链接）/ 注册时间，上中下三行 */
.acc-main { line-height: 1.5; }
.acc-nm-line { font-size: 13px; font-weight: 600; }
.acc-nm { color: var(--text); }
.acc-link { color: var(--text); text-decoration: none; border-bottom: 1px dashed var(--border); }
.acc-link:hover { color: var(--primary); border-bottom-color: var(--primary); }
.acc-link .acc-go { font-size: 10px; color: var(--text-3); margin-left: 2px; }
.acc-link:hover .acc-go { color: var(--primary); }
.acc-link.sm { font-size: 12px; font-weight: 400; color: var(--primary); border-bottom: none; }
.acc-link.sm:hover { text-decoration: underline; }
.acc-id { font-size: 12px; color: var(--text-2); }
.acc-id-line { font-size: 12px; margin-top: 1px; white-space: nowrap; }
.acc-reg-line { font-size: 11px; color: var(--text-3); margin-top: 3px; white-space: nowrap; }
.acc-reg-in { width: 118px; padding: 1px 5px; font-size: 11px; height: 22px; }
/* 「当前素材数 / 已领素材」只显示数字 */
.acc-num { font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; }
.acc-nosync { display: inline-block; font-size: 11px; color: var(--text-3); padding: 0 6px; }
.acc-row-off td { background: #fafafa; }
.acc-row-off .acc-nm-line { color: var(--text-3); }
/* 列太多会横向滚动：首列（账号名）和末列（操作）钉住，滑中间时也能点到「同步首页」 */
.acc-table th:first-child, .acc-table td:first-child,
.acc-table th:last-child, .acc-table td:last-child { position: sticky; background: var(--card); z-index: 2; }
.acc-table th:first-child, .acc-table td:first-child { left: 0; }
.acc-table th:last-child, .acc-table td:last-child { right: 0; box-shadow: -8px 0 10px -8px rgba(0, 0, 0, .18); }
.acc-table thead th { z-index: 3; }
/* 主页资料列（昵称/小红书号对不上、简介、关注粉丝赞藏、IP、笔记标题） */
.muted-dash { color: var(--text-3); }
.plat-diff { color: #d92b4b; font-weight: 600; }
.acc-desc { font-size: 12px; color: var(--text-2); line-height: 1.5; max-width: 100%; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.acc-stat-n { font-size: 12px; color: var(--text-2); white-space: nowrap; line-height: 1.55; }
.acc-stat-n b { color: var(--text); }
.note-t { font-size: 12px; color: var(--text-2); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 1.6; }
.note-v { font-size: 10px; color: var(--text-3); border: 1px solid var(--border); border-radius: 3px; padding: 0 3px; }
.note-more { padding: 0; margin-top: 2px; color: var(--primary); }
.note-more:hover { background: none; color: var(--primary); text-decoration: underline; }
.acc-ops { white-space: nowrap; }
.acc-sync-at { color: var(--text-3); }
/* 主页笔记弹窗 */
.note-list { max-height: 420px; overflow: auto; padding-left: 0; list-style: none; margin: 0; }
.note-list li { padding: 7px 2px; border-bottom: 1px dashed var(--border); font-size: 13px; line-height: 1.6; }
.note-list .nm-i { display: inline-block; min-width: 22px; color: var(--text-3); font-size: 12px; }

/* 主页笔记明细表（标题 / 发布时间 / IP 属地 / 赞藏评 / 逐篇「补」）——8 列，窄屏横向滚动 */
.note-table-wrap { max-height: 440px; overflow: auto; border: 1px solid var(--border); border-radius: 8px; }
.note-table { width: 100%; border-collapse: collapse; font-size: 12.5px; min-width: 720px; }
.note-table th {
  position: sticky; top: 0; z-index: 1; background: var(--card);
  text-align: left; font-weight: 600; color: var(--text-3); font-size: 11.5px;
  padding: 8px 8px; border-bottom: 1px solid var(--border); white-space: nowrap;
}
.note-table td { padding: 8px; border-bottom: 1px dashed var(--border); vertical-align: top; line-height: 1.6; }
.note-table tr:last-child td { border-bottom: none; }
.note-table .nm-i { color: var(--text-3); font-size: 12px; width: 28px; }
.note-table .nm-t { min-width: 200px; }
.note-table .nm-time { white-space: nowrap; color: var(--text-2); font-variant-numeric: tabular-nums; }
.note-table .nm-num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; width: 56px; }
.note-table th.nm-num { text-align: right; }
.note-table .nm-act { white-space: nowrap; width: 54px; }
.nm-fill { padding: 0 6px; height: 22px; line-height: 20px; color: var(--primary); border: 1px solid var(--border); border-radius: 4px; background: #fff; }
.nm-fill:hover { border-color: var(--primary); }

/* 小红书 Cookie 池（多号轮换列表） */
.ck-table { width: 100%; border-collapse: collapse; font-size: 12.5px; margin-top: 8px; }
.ck-table th {
  text-align: left; font-weight: 600; color: var(--text-3); font-size: 11.5px;
  padding: 6px 8px; border-bottom: 1px solid var(--border); white-space: nowrap;
}
.ck-table td { padding: 8px; border-bottom: 1px dashed var(--border); vertical-align: top; line-height: 1.6; }
.ck-table tr:last-child td { border-bottom: none; }
.ck-table .ck-nowrap { white-space: nowrap; font-variant-numeric: tabular-nums; }
.ck-sub { font-size: 11px; color: var(--text-3); line-height: 1.5; }
.ck-sub.bad { color: var(--red); }
.ck-st { display: inline-block; font-size: 11px; padding: 1px 7px; border-radius: 10px; }
.ck-st.ok { background: #e8f7ee; color: #12894a; }
.ck-st.warn { background: #fff5e6; color: #a35b00; }
.ck-st.bad { background: var(--red-light); color: var(--red); }
.ck-tip { font-size: 11.5px; color: var(--text-3); margin-top: 8px; line-height: 1.7; }
.ck-empty { font-size: 13px; color: var(--text-3); padding: 10px 0; }
.ck-add { margin: 10px 0; padding: 10px 12px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-2, #f7f8fa); }

/* 同步主页弹窗 */
.sync-box { background: var(--bg-2, #f7f8fa); border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; font-size: 13px; line-height: 1.9; }

/* 定时自动同步主页 */
.autosync-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; background: var(--bg-2, #f7f8fa); border: 1px dashed var(--border); border-radius: 8px; padding: 8px 12px; margin: -6px 0 14px; font-size: 12.5px; color: var(--text-2); }
.autosync-bar .as-ico { font-size: 14px; }
.autosync-bar .select { width: auto; padding: 3px 6px; }
.autosync-bar .btn { padding: 3px 12px; font-size: 12.5px; }
.autosync-bar .btn.danger { background: var(--red-light, #fdecec); color: var(--red, #d93025); border-color: var(--red, #d93025); }
.autosync-bar .as-status { color: var(--text-3); font-size: 12px; }

/* ===== 工具栏/筛选 ===== */
.toolbar { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; flex-wrap: wrap; }
.toolbar .input, .toolbar .select { width: auto; }
.toolbar .search { width: 220px; }
.toolbar .grow { flex: 1; }

/* ===== 表格 ===== */
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; background: #fff; }
th, td { text-align: left; padding: 11px 14px; border-bottom: 1px solid var(--border); font-size: 13px; }
th { color: var(--text-3); font-weight: 500; background: #fafbfc; white-space: nowrap; }
td .link { color: var(--primary); cursor: pointer; text-decoration: none; }
td .link:hover { text-decoration: underline; }
tr:hover td { background: #fafbfc; }
.op-btn { background: none; border: none; color: var(--text-2); font-size: 12px; padding: 2px 6px; border-radius: 4px; }
.op-btn:hover { color: var(--red); background: var(--red-light); }
/* 停用 / 启用（离职员工） */
.op-btn.off:hover { color: var(--orange); background: #fff4e6; }
.op-btn.on { color: var(--green); }
.op-btn.on:hover { color: var(--green); background: #e9f9ef; }
.emp-off { font-size: 11px; color: #d92b4b; margin-top: 3px; }
.emp-off-row td { opacity: .55; }
.emp-off-row:hover td { opacity: 1; }
.emp-off-tip { font-size: 12.5px; color: #d92b4b; background: #fff1f3; border: 1px solid #ffd7de; border-radius: 6px; padding: 8px 10px; margin-bottom: 12px; line-height: 1.7; }

/* ===== 素材卡片 ===== */
.mat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; }
.mat-card { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; display: flex; flex-direction: column; }
.mat-card.assigned { border-left: 3px solid var(--green); }
.mat-card.unassigned { border-left: 3px solid var(--orange); }
.mat-imgs { display: flex; gap: 6px; padding: 12px 12px 0; overflow: hidden; }
.mat-imgs img { width: 72px; height: 72px; object-fit: cover; border-radius: 8px; }
.mat-imgs .noimg { width: 72px; height: 72px; border-radius: 8px; background: #f2f3f5; display: flex; align-items: center; justify-content: center; color: var(--text-3); font-size: 11px; }
.mat-body { padding: 12px; flex: 1; display: flex; flex-direction: column; gap: 8px; }
.mat-title { font-weight: 600; font-size: 14px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.mat-content { color: var(--text-2); font-size: 12px; line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.mat-foot { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; border-top: 1px solid var(--border); }
.mat-foot .ops { display: flex; gap: 2px; }
.assign-line { font-size: 12px; }
.assign-line a { color: var(--primary); text-decoration: none; }
.assign-line a:hover { text-decoration: underline; }
.mat-op { color: var(--text-3); margin-left: 6px; }

/* ===== 客户资源（留资） ===== */
.lead-btn { color: var(--primary); font-weight: 600; }
.lead-stat-bar { display: flex; gap: 12px; margin-bottom: 14px; }
.lead-stat { flex: 1; background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; }
.lead-stat .num { font-size: 24px; font-weight: 700; color: var(--primary); line-height: 1.2; }
.lead-stat .lbl { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.lead-thumb { width: 54px; height: 54px; object-fit: cover; border-radius: 6px; border: 1px solid var(--border); cursor: zoom-in; }
.lead-contact { font-size: 13px; }
.lead-imgs { display: flex; flex-direction: column; gap: 10px; }
.lead-imgs img { width: 100%; border-radius: 8px; border: 1px solid var(--border); }

/* 上传拖拽区 */
.lead-drop { border: 1.5px dashed #ffc9d1; background: #fff7f8; border-radius: 12px; padding: 22px; text-align: center;
  font-size: 13px; color: var(--text-2); cursor: pointer; transition: .15s; }
.lead-drop:hover, .lead-drop.over { border-color: var(--primary); background: #fff1f3; }
.lead-step { font-size: 13px; color: var(--text-2); padding: 6px 0; }
.lead-step.err { color: var(--red); }
.lead-sum { font-size: 13px; font-weight: 600; background: #f6f7f9; border-radius: 8px; padding: 9px 12px; }
.lead-new { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.lead-new-row { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.lead-mini { display: flex; flex-direction: column; gap: 6px; }
.lead-mini-row { display: flex; align-items: center; gap: 10px; font-size: 13px; padding: 7px 10px; background: #f6f7f9; border-radius: 8px; }

/* 客户需求列：可点击编辑 */
.lead-demand-td { cursor: pointer; }
.lead-demand-td:hover { background: #fff8f8; }
.lead-demand { font-size: 13px; color: var(--text); line-height: 1.6; }
.lead-demand-td:hover .lead-demand { color: var(--red); }
.lead-note-line { font-size: 11px; color: var(--text-3); margin-top: 3px; }
/* 编辑弹窗里的截图 */
.lead-edit-img { max-width: 100%; max-height: 220px; border-radius: 8px; cursor: zoom-in; border: 1px solid var(--border); }

/* ===== 客户意向度 / 跟进记录（舞蹈室员工） ===== */
/* 舞蹈室员工看不到运营者：整列在表格上收起来（表头 th 与单元格 td 一起隐藏） */
#lead-table.hide-op .col-op { display: none; }
.lead-intent { width: 100%; padding: 5px 6px; font-size: 12px; }
.lead-intent-tag {
  display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 12px; font-weight: 600;
  white-space: nowrap; border: 1px solid transparent;
}
.lead-intent-tag.it-none { background: #f2f3f5; color: var(--text-3); border-color: var(--border); }
.lead-intent-tag.it-want { background: #fff4e6; color: var(--orange); border-color: #ffe0b8; }
.lead-intent-tag.it-no { background: #f2f3f5; color: var(--text-2); border-color: var(--border); }
.lead-intent-tag.it-deal { background: #e8f8f2; color: var(--green); border-color: #c8ecdf; }
.lead-fu-btn { white-space: nowrap; }
.lead-fu-last { font-size: 11px; color: var(--text-3); margin-top: 3px; }
.lead-fu-sub { color: var(--text-2); font-size: 13px; line-height: 1.9; margin-bottom: 12px; }
.lead-fu-list {
  max-height: 260px; overflow-y: auto; border: 1px solid var(--border); border-radius: 10px;
  padding: 8px; background: #fafbfc; margin-bottom: 14px;
}
.lead-fu-item { background: #fff; border: 1px solid var(--border); border-radius: 9px; padding: 9px 11px; margin-bottom: 8px; }
.lead-fu-item:last-child { margin-bottom: 0; }
.lead-fu-head { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-size: 12px; color: var(--text-2); }
.lead-fu-head b { font-size: 13px; color: var(--text); }
.lead-fu-time { color: var(--text-3); }
.lead-fu-note { font-size: 13px; color: var(--text); line-height: 1.7; margin-top: 5px; white-space: pre-wrap; }
.lead-fu-empty { text-align: center; color: var(--text-3); font-size: 13px; padding: 18px 0; }
.lead-fu-form { border-top: 1px dashed var(--border); padding-top: 12px; }
.lead-fu-tip { font-size: 12px; color: var(--text-3); background: #f6f7f9; border-radius: 8px; padding: 10px 12px; }

/* ===== 重复咨询标记（全库同一联系方式出现 ≥2 次） ===== */
.lead-dup-row > td { background: var(--red-light) !important; }
.lead-dup-row > td:first-child { box-shadow: inset 3px 0 0 var(--red); }
.lead-dup-row:hover > td { background: #ffe3e8 !important; }
.lead-dup-badge {
  display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 999px;
  background: var(--red); color: #fff; font-size: 10px; font-weight: 600;
  vertical-align: middle; letter-spacing: .5px;
}
.lead-dup-note { font-size: 11px; color: var(--red); margin-top: 3px; line-height: 1.5; }
/* 工具栏上的重复统计 */
.lead-dup-chip { font-size: 12px; color: var(--red); background: var(--red-light); padding: 5px 10px; border-radius: 999px; }
.lead-dup-toggle { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: var(--text-2); cursor: pointer; user-select: none; white-space: nowrap; }
.lead-dup-toggle input { accent-color: var(--red); cursor: pointer; }

/* ===== 日期范围筛选 ===== */
.date-input { width: 138px; flex: none; padding: 7px 8px; font-size: 13px; color: var(--text-2); }
.date-input::-webkit-calendar-picker-indicator { cursor: pointer; opacity: .55; }
.date-input::-webkit-calendar-picker-indicator:hover { opacity: 1; }
.date-sep { color: var(--text-3); font-size: 13px; margin: 0 -4px; user-select: none; }

/* ===== 素材详情窗 ===== */
.mat-detail { display: flex; flex-direction: column; gap: 14px; }
.md-title { font-size: 16px; font-weight: 700; line-height: 1.5; }
.md-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.md-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.md-block { border-top: 1px solid var(--border); padding-top: 12px; }
.md-lbl { font-size: 12px; font-weight: 600; color: var(--text-2); margin-bottom: 7px; }
.md-content { font-size: 13px; line-height: 1.85; white-space: pre-wrap; word-break: break-word; }
.md-stats { display: flex; flex-wrap: wrap; gap: 12px; font-size: 13px; }
.md-deny { font-size: 12px; color: var(--text-3); background: var(--bg); border-radius: 8px; padding: 9px 12px; }

/* 素材标题 / 正文可点击查看详情 */
.mat-open { cursor: pointer; }
.mat-title.mat-open:hover, .mat-content.mat-open:hover { color: var(--red); text-decoration: underline dotted; text-underline-offset: 3px; }

/* 从客户资源跳到素材库时的定位高亮 */
.mat-card.mat-focus {
  animation: matFocus 1.1s ease-in-out 3;
  border-color: var(--red);
}
@keyframes matFocus {
  0%, 100% { box-shadow: 0 0 0 2px rgba(255, 36, 66, .12), 0 6px 16px rgba(0, 0, 0, .06); }
  50% { box-shadow: 0 0 0 6px rgba(255, 36, 66, .28), 0 10px 26px rgba(255, 36, 66, .2); }
}

/* ===== 弹窗 ===== */
.mask { position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 100; display: flex; align-items: center; justify-content: center; }
.modal { background: #fff; border-radius: 14px; width: 620px; max-width: 94vw; max-height: 88vh; overflow-y: auto; padding: 22px; }
.modal h3 { font-size: 16px; margin-bottom: 16px; }
.modal-foot { display: flex; justify-content: flex-end; gap: 10px; margin-top: 18px; }
.img-picker { display: flex; flex-wrap: wrap; gap: 10px; }
.img-picker .pick-add {
  width: 84px; height: 84px; border: 1px dashed var(--border); border-radius: 8px; display: flex;
  flex-direction: column; align-items: center; justify-content: center; color: var(--text-3); cursor: pointer; font-size: 12px;
}
.img-picker .pick-add:hover { border-color: var(--red); color: var(--red); }
.img-item { position: relative; width: 84px; height: 84px; }
.img-item img { width: 100%; height: 100%; object-fit: cover; border-radius: 8px; }
.img-item .del {
  position: absolute; top: -6px; right: -6px; width: 20px; height: 20px; border-radius: 50%;
  background: rgba(0,0,0,.6); color: #fff; border: none; font-size: 11px; line-height: 1;
}

/* ===== 二维码弹窗 ===== */
.qr-box { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 10px 0; }
.qr-box canvas { border: 1px solid var(--border); border-radius: 12px; padding: 10px; }
.qr-tip { font-size: 12px; color: var(--text-3); text-align: center; line-height: 1.7; }

/* ===== AI 工厂 ===== */
.factory-grid { display: grid; grid-template-columns: 340px 1fr; gap: 16px; align-items: start; }
.draft-card { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow); padding: 14px; margin-bottom: 12px; border-left: 3px solid #b37feb; }
.draft-card .d-title { font-weight: 600; margin-bottom: 6px; line-height: 1.5; }
.draft-card .d-content { color: var(--text-2); font-size: 13px; line-height: 1.7; white-space: pre-wrap; }
.draft-card .d-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 10px; }
.draft-card input[type=checkbox] { width: 16px; height: 16px; accent-color: var(--red); }
.empty { text-align: center; color: var(--text-3); padding: 50px 0; font-size: 13px; }
.empty .big { font-size: 34px; margin-bottom: 10px; }

/* ===== toast ===== */
#toast { position: fixed; top: 24px; left: 50%; transform: translateX(-50%); background: rgba(31,35,41,.9); color: #fff; padding: 9px 20px; border-radius: 8px; font-size: 13px; z-index: 999; display: none; }

/* ===== 仪表盘区块标题（快捷入口已于 2026-10-26 下线） ===== */
.section-t { font-size: 15px; font-weight: 700; margin: 22px 0 12px; }

/* ===== 数据复盘 ===== */
.stat-chips { display: flex; flex-wrap: wrap; gap: 8px; font-size: 12px; color: var(--text-2); }
.stat-chips span { background: #f6f7f9; border-radius: 6px; padding: 3px 8px; }
.insight-item { display: flex; gap: 8px; font-size: 13px; line-height: 1.75; color: var(--text); margin-bottom: 10px; }
.insight-item .bullet { color: var(--red); flex: none; }
.rank-row { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px dashed var(--border); font-size: 13px; }
.rank-row:last-child { border-bottom: none; }
.rank-row .no { flex: none; width: 22px; height: 22px; border-radius: 6px; background: #f2f3f5; color: var(--text-2); font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.rank-row .no.top { background: var(--red); color: #fff; }
.rank-row .rk-t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rank-row .rk-s { flex: none; color: var(--text-3); font-size: 11px; text-align: right; line-height: 1.5; }
.perf-badge { display: inline-flex; align-items: center; gap: 3px; border-radius: 6px; padding: 1px 7px; font-size: 11px; }
.perf-badge.good { background: #fff1f0; color: #d4380d; }
.perf-badge.mid { background: #f6f7f9; color: var(--text-3); }

/* ===== 数据复盘（客资导向） ===== */
.rv-h3 { font-size: 14px; margin-bottom: 12px; }
.rv-h3-note, .rv-h-note { font-weight: 400; font-size: 12px; color: var(--text-3); margin-left: 10px; }
.rv-stats { grid-template-columns: repeat(5, 1fr); }
.stat-card.dim .num { color: var(--text-3); }
.rv-sub { font-size: 11px; color: var(--text-3); margin-top: 6px; line-height: 1.6; }
.rv-delta { display: inline-block; border-radius: 5px; padding: 0 5px; font-size: 11px; }
.rv-delta.up { background: var(--red-light); color: var(--red); }
.rv-delta.down { background: #e8fff5; color: var(--green); }
.rv-delta.flat { color: var(--text-3); }

/* 趋势柱 */
.rv-trend { display: flex; align-items: flex-end; gap: 6px; height: 150px; padding-top: 6px; }
.rv-trend-col { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.rv-trend-n { font-size: 10px; color: var(--text-3); height: 14px; }
.rv-trend-bar { width: 100%; flex: 1; display: flex; align-items: flex-end; }
.rv-trend-bar i { display: block; width: 100%; min-height: 2px; background: linear-gradient(180deg, #ff6b81, #ff2442); border-radius: 4px 4px 0 0; }
.rv-trend-bar i.wk { background: linear-gradient(180deg, #ffb3bf, #ff7f95); }
.rv-trend-x { font-size: 10px; color: var(--text-3); margin-top: 4px; display: flex; flex-direction: column; align-items: center; line-height: 1.3; white-space: nowrap; }
.rv-trend-x em { font-style: normal; font-size: 9px; color: var(--text-3); opacity: .85; }
.rv-trend-x.wk { color: #ff2442; font-weight: 700; }
.rv-trend-x.wk em { color: #ff2442; opacity: 1; }
.rv-trend-cmp { margin-top: 12px; padding: 8px 10px; border-radius: 8px; background: #f6f7f9; font-size: 12px; line-height: 1.7; color: var(--text-2); }
.rv-trend-cmp b { color: var(--text); }
.rv-trend-cmp.low { background: #fff4f6; color: #c8324a; }
.rv-trend-cmp.low b { color: #c8324a; }

/* 横向条形 */
.rv-bars { display: flex; flex-direction: column; gap: 10px; }
.rv-bar-row { font-size: 12px; }
.rv-bar-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 4px; }
.rv-bar-lbl { color: var(--text); font-weight: 600; }
.rv-bar-val { color: var(--red); font-weight: 700; font-variant-numeric: tabular-nums; }
.rv-bar-track { height: 8px; background: #f2f3f5; border-radius: 4px; overflow: hidden; }
.rv-bar-track i { display: block; height: 100%; background: linear-gradient(90deg, #ff2442, #ff8f9c); border-radius: 4px; }
.rv-bar-track i.down { background: linear-gradient(90deg, #b9bec7, #d8dbe1); }
.rv-bar-note { font-size: 11px; color: var(--text-3); margin-top: 3px; }
.rv-none { padding: 22px 0; text-align: center; color: var(--text-3); font-size: 13px; line-height: 1.8; }
.rv-hint { font-size: 12px; color: var(--text-2); line-height: 1.8; margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--border); }
.rv-warn { font-size: 12px; color: #d4380d; background: #fff2f0; border: 1px solid #ffccc7; border-radius: 8px; padding: 8px 10px; margin-top: 10px; line-height: 1.7; }
.rv-two { display: grid; grid-template-columns: 1.35fr 1fr; gap: 16px; align-items: start; }
.rv-form-t { font-size: 12px; color: var(--text-3); margin: 14px 0 8px; }
.rv-form-t:first-of-type { margin-top: 0; }

/* TOP5 卡片 */
.rv-top-card { background: var(--card); border-radius: var(--radius); box-shadow: var(--shadow); padding: 16px 18px; margin-bottom: 12px; border-left: 3px solid var(--red); }
.rv-top-head { display: flex; align-items: flex-start; gap: 12px; }
.rv-top-no { flex: none; width: 24px; height: 24px; border-radius: 7px; background: var(--red); color: #fff; font-size: 13px; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.rv-top-title { flex: 1; min-width: 0; font-weight: 700; font-size: 14px; line-height: 1.5; }
.rv-top-meta { font-weight: 400; font-size: 11px; color: var(--text-3); margin-top: 3px; }
.rv-top-kpi { flex: none; text-align: right; font-size: 11px; color: var(--text-3); }
.rv-top-kpi b { font-size: 20px; color: var(--red); margin-right: 2px; }
.rv-top-rate { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.rv-top-body { font-size: 13px; color: var(--text-2); line-height: 1.8; margin: 10px 0; padding: 8px 10px; background: #fafbfc; border-radius: 8px; }
.rv-attr { display: flex; flex-direction: column; gap: 5px; }
.rv-attr-row { display: flex; gap: 8px; font-size: 12.5px; line-height: 1.7; }
.rv-attr-k { flex: none; width: 62px; color: var(--text-3); }
.rv-attr-v { flex: 1; color: var(--text); }
.rv-copy { margin-top: 10px; font-size: 12px; color: var(--text-3); }
.rv-copy .tag { margin-left: 4px; }

/* 全部留资素材清单 */
.rv-details { background: var(--card); border-radius: var(--radius); box-shadow: var(--shadow); padding: 12px 16px; margin-bottom: 12px; }
.rv-details summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--text-2); outline: none; }
.rv-details summary:hover { color: var(--red); }
.rv-details[open] summary { margin-bottom: 10px; }
.rv-lead-table { font-size: 12.5px; }
.rv-lead-table th, .rv-lead-table td { padding: 7px 8px; white-space: nowrap; }
.rv-lead-table .rv-lt-title { white-space: normal; min-width: 200px; }

/* 零留资 */
.rv-zero-card { border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; }
.rv-zero-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13px; }
.rv-zero-kpi { margin-left: auto; font-size: 11px; color: var(--text-3); }
.rv-zero-why { font-size: 12.5px; color: var(--text-2); line-height: 1.8; margin-top: 8px; }
.rv-zero-fix { font-size: 12.5px; color: #0b7b4f; background: #f0fff7; border-radius: 6px; padding: 6px 9px; margin-top: 8px; line-height: 1.7; }

/* 总结 & 行动 */
.rv-sum-block { padding: 10px 0; border-bottom: 1px dashed var(--border); }
.rv-sum-block:last-child { border-bottom: none; padding-bottom: 0; }
.rv-sum-k { font-size: 12px; color: var(--text-3); margin-bottom: 5px; }
.rv-sum-v { font-size: 13.5px; line-height: 1.85; color: var(--text); }
.rv-sum-list { margin: 0; padding-left: 18px; font-size: 13.5px; line-height: 1.9; color: var(--text); }
.rv-act { display: flex; gap: 10px; align-items: flex-start; padding: 9px 0; border-bottom: 1px dashed var(--border); font-size: 13.5px; line-height: 1.8; }
.rv-act:last-child { border-bottom: none; }
.rv-act-no { flex: none; width: 20px; height: 20px; border-radius: 50%; background: var(--red-light); color: var(--red); font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; margin-top: 2px; }

/* AI 报告 */
.rv-ai-card { margin-bottom: 18px; border: 1px solid #ffe0e5; background: linear-gradient(135deg, #fff9fa, #fff 60%); }
.rv-ai-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.rv-ai-t { font-size: 14px; font-weight: 700; }
.rv-ai-sub { font-size: 12px; color: var(--text-3); line-height: 1.7; margin-top: 4px; }
.rv-ai-body { margin-top: 12px; font-size: 13.5px; line-height: 1.9; color: var(--text); }
.rv-ai-body:empty { display: none; }
.rv-ai-loading { color: var(--text-3); font-size: 13px; padding: 16px 0; }
.rv-md-h2 { font-size: 14px; font-weight: 700; margin: 16px 0 6px; padding-left: 9px; border-left: 3px solid var(--red); }
.rv-md-h1, .rv-md-h3, .rv-md-h4 { font-size: 13.5px; font-weight: 700; margin: 12px 0 5px; }
.rv-md-p { margin: 4px 0; }
.rv-md-ul, .rv-md-ol { margin: 5px 0 5px 20px; }
.rv-md-ul li, .rv-md-ol li { margin: 3px 0; line-height: 1.85; }
.rv-md-hr { border: none; border-top: 1px dashed var(--border); margin: 12px 0; }
.rv-md-gap { height: 4px; }
.rv-ai-body code { background: #f2f3f5; border-radius: 4px; padding: 1px 5px; font-size: 12.5px; }

/* ===== 舞蹈室图文生成 ===== */
.ig-group { margin-bottom: 16px; }
.ig-group:last-child { margin-bottom: 0; }
.ig-group-t { font-size: 13px; font-weight: 700; margin-bottom: 8px; }
.ig-group-note { font-weight: 400; color: var(--text-3); font-size: 12px; margin-left: 10px; }
.ig-dir-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.ig-dir { background: #f8f9fb; border: 1.5px solid var(--border); border-radius: 10px; padding: 10px 12px; cursor: pointer; transition: .12s; }
.ig-dir:hover { border-color: var(--primary); }
.ig-dir.on { border-color: var(--red); background: #fff5f6; }
.ig-dir-name { font-size: 13px; font-weight: 600; }
.ig-dir-desc { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }
.ig-ref-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.ig-ref-card { position: relative; border: 2px solid var(--border); border-radius: 10px; overflow: hidden; cursor: pointer; background: #f6f7f9; }
.ig-ref-card.on { border-color: var(--red); }
.ig-ref-card img { width: 100%; height: 130px; object-fit: cover; display: block; }
.ig-ref-empty { height: 130px; display: flex; align-items: center; justify-content: center; color: var(--text-3); font-size: 12px; }
.ig-ref-name { font-size: 11.5px; padding: 5px 8px 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ig-ref-badge { font-size: 10.5px; color: var(--text-3); padding: 0 8px 6px; }
.ig-ref-card.on .ig-ref-badge { color: var(--red); font-weight: 700; }
.ig-ref-del { position: absolute; top: 4px; right: 4px; width: 22px; height: 22px; border-radius: 50%; border: none; background: rgba(0,0,0,.45); color: #fff; cursor: pointer; font-size: 12px; line-height: 22px; padding: 0; }
.ig-gal { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.ig-gal-card { border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; background: #fff; }
.ig-gal-img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; display: block; background: #f6f7f9; }
.ig-gal-empty { display: flex; align-items: center; justify-content: center; color: var(--text-3); font-size: 12px; }
.ig-gal-body { padding: 10px 12px; }
.ig-gal-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ig-gal-prompt { font-size: 11.5px; color: var(--text-3); margin-top: 6px; line-height: 1.6; }
.ig-gal-ops { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; }

/* AI 报告折叠段落：默认只展开第一段，其余点标题看 */
.rv-sec-bar { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 2px 0 8px; padding: 0 2px; }
.rv-sec-count { font-size: 11.5px; color: var(--text-3); }
.rv-sec-all { border: 1px solid var(--border); background: #fff; color: var(--text-2); border-radius: 6px; padding: 3px 10px; font-size: 11.5px; cursor: pointer; font-family: inherit; }
.rv-sec-all:hover { border-color: var(--red); color: var(--red); }
.rv-sec { border: 1px solid var(--border); border-radius: 10px; background: #fff; margin-bottom: 8px; overflow: hidden; }
.rv-sec > .rv-sec-sum { display: block; cursor: pointer; padding: 9px 12px 9px 30px; position: relative; font-size: 13.5px; font-weight: 700; color: var(--text); background: #fafbfc; list-style: none; outline: none; }
.rv-sec > .rv-sec-sum::-webkit-details-marker { display: none; }
.rv-sec > .rv-sec-sum::before { content: '▸'; position: absolute; left: 11px; top: 9px; color: var(--text-3); font-size: 12px; transition: transform .15s; }
.rv-sec[open] > .rv-sec-sum::before { transform: rotate(90deg); color: var(--red); }
.rv-sec[open] > .rv-sec-sum { border-bottom: 1px solid var(--border); }
.rv-sec > .rv-sec-sum:hover { background: #fff6f7; }
.rv-sec > .rv-sec-body { padding: 6px 13px 10px; }
.rv-sec > .rv-sec-body > .rv-md-gap:first-child { display: none; }

/* ===== 同行素材库（自适应网格：随浏览器宽度自动增减列数） ===== */
/* 电脑端 6~8 列 → 平板 3~5 列 → 手机 2 列 */
.cp-grid {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: 14px;
  align-items: start;
}
@media (max-width: 1699px) { .cp-grid { grid-template-columns: repeat(7, minmax(0, 1fr)); } }
@media (max-width: 1499px) { .cp-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
@media (max-width: 1279px) { .cp-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 13px; } }
@media (max-width: 1023px) { .cp-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 899px)  { .cp-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } }
@media (max-width: 620px)  { .cp-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; } }
.cp-grid > .empty { grid-column: 1 / -1; }

.cp-card {
  min-width: 0;
  background: #fff; border-radius: var(--radius); box-shadow: var(--shadow);
  overflow: hidden; cursor: pointer; transition: .15s;
}
.cp-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(31,35,41,.14); }
.cp-thumb { position: relative; width: 100%; height: 0; overflow: hidden; background: #f2f3f5; }
.cp-thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.cp-check { position: absolute; top: 8px; left: 8px; width: 24px; height: 24px; border-radius: 6px; background: rgba(255,255,255,.9); display: flex; align-items: center; justify-content: center; }
.cp-check input { width: 15px; height: 15px; accent-color: var(--red); cursor: pointer; }
.cp-check input:not(:checked) { opacity: .75; }
.cp-imgcount { position: absolute; bottom: 8px; right: 8px; background: rgba(0,0,0,.55); color: #fff; font-size: 11px; padding: 2px 7px; border-radius: 8px; }
.cp-pending-flag { position: absolute; bottom: 8px; left: 8px; background: rgba(255,143,31,.92); color: #fff; font-size: 11px; padding: 2px 7px; border-radius: 8px; }
.cp-info { padding: 9px 10px 10px; }
.cp-title {
  font-size: 12.5px; font-weight: 600; line-height: 1.5; margin-bottom: 6px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  min-height: 2.9em; word-break: break-word;
}
.cp-meta { display: flex; align-items: center; gap: 6px; font-size: 11.5px; color: var(--text-3); }
.cp-author { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cp-tags { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; }
.cp-tags span { font-size: 10.5px; color: #3a6fb0; background: #eef4ff; border-radius: 5px; padding: 1px 6px; margin: 0; }
.cp-tags span.tag { color: var(--red); background: #fdecec; margin: 0; }
/* 列表页分类：点分类名就地改名，点 ＋ 追加一个新分类（不用点进详情） */
.cp-cats-box { align-items: center; }
.cp-cats-box .cp-cat-edit { cursor: pointer; transition: .12s; }
.cp-cats-box .cp-cat-edit:hover { text-decoration: underline; filter: brightness(.96); }
.cp-cats-box .cp-cat-edit.unassigned { color: var(--text-3); background: #f2f3f5; }
.cp-cats-box .cp-cat-add {
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 16px; height: 16px; border-radius: 50%; font-size: 11px; line-height: 1;
  color: var(--text-3); background: #f2f3f5; padding: 0; margin: 0; cursor: pointer;
}
.cp-cats-box .cp-cat-add:hover { color: var(--red); background: #fdecec; }
.cp-cats-box .cp-cat-add.full { opacity: .45; }
.cp-cats-box .cp-cat-add.full:hover { color: var(--text-3); background: #f2f3f5; }
.cp-cats-box .cp-cat-input {
  flex: 1 1 100%; min-width: 0; width: 100%; box-sizing: border-box;
  font-size: 11px; padding: 2px 6px; border: 1px solid var(--red);
  border-radius: 5px; outline: none; background: #fff; color: var(--text);
}
.cp-cats-box .cp-cat-saving { font-size: 10.5px; color: var(--text-3); }
.cp-stats { flex: none; white-space: nowrap; }
.cp-meta2 { margin-top: 5px; font-size: 10.5px; color: var(--text-3); }
.cp-time { display: inline-block; color: #b2670f; background: #fff7e6; border-radius: 5px; padding: 1px 6px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }
.cp-time.none { color: var(--text-3); background: #f4f5f7; }
.cp-op { display: inline-block; margin-left: 4px; color: var(--text-2); background: #f4f5f7; border-radius: 5px; padding: 1px 6px; max-width: 46%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }
/* 窄屏（iPad 竖屏 / 手机）：卡片更小，信息同步缩小 */
@media (max-width: 620px) {
  .cp-info { padding: 7px 8px 9px; }
  .cp-title { font-size: 11.5px; line-height: 1.45; margin-bottom: 5px; }
  .cp-meta { font-size: 10px; gap: 4px; }
  .cp-meta2 { font-size: 10px; margin-top: 4px; }
  .cp-tags { margin-top: 5px; gap: 3px; }
  .cp-tags span { font-size: 9.5px; padding: 1px 5px; }
  .cp-time { font-size: 9.5px; padding: 1px 5px; }
  .cp-imgcount, .cp-pending-flag { font-size: 10px; padding: 1px 5px; bottom: 6px; }
  .cp-imgcount { right: 6px; } .cp-pending-flag { left: 6px; }
  .cp-check { top: 6px; left: 6px; width: 21px; height: 21px; }
  .cp-check input { width: 14px; height: 14px; }
  /* 手机端输入框 ≥16px，避免 iOS 聚焦时整页被放大 */
  .cp-cats-box .cp-cat-input { font-size: 16px; padding: 3px 6px; }
  .cp-cats-box .cp-cat-add { width: 18px; height: 18px; font-size: 12px; }
}
/* 分类条：显示所有分类名，点击筛选 */
.cp-catbar { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 2px; }
.cp-cat-chip { font-size: 12px; padding: 4px 12px; border-radius: 14px; background: #f2f3f5; color: var(--text-2); cursor: pointer; user-select: none; border: 1px solid transparent; transition: all .15s; }
.cp-cat-chip i { font-style: normal; opacity: .55; margin-left: 2px; }
.cp-cat-chip:hover { background: #e8eaf0; }
.cp-cat-chip.active { background: #fdecec; color: var(--red); border-color: rgba(255,36,66,.35); font-weight: 600; }
.cp-cat-chip.unassigned { color: #b2670f; background: #fff7e6; border-color: rgba(255,143,31,.3); }
.cp-cat-chip.unassigned.active { color: #a86400; background: #ffefd1; border-color: rgba(255,143,31,.55); font-weight: 600; }

.cp-batchbar { position: sticky; top: 0; z-index: 5; display: flex; align-items: center; gap: 8px; background: #fff5f6; border: 1px solid #ffd3da; border-radius: 10px; padding: 8px 14px; margin-bottom: 14px; font-size: 13px; }
.cp-foot-tools { display: flex; align-items: center; gap: 8px; margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--border); flex-wrap: wrap; }

.cp-drop { border: 2px dashed var(--border); border-radius: 12px; padding: 26px; text-align: center; cursor: pointer; color: var(--text-2); transition: .15s; }
.cp-drop:hover, .cp-drop.over { border-color: var(--red); background: var(--red-light); color: var(--red); }
.cp-preview { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; max-height: 230px; overflow-y: auto; }
.cp-pv-item { position: relative; width: 68px; height: 68px; }
.cp-pv-item img { width: 100%; height: 100%; object-fit: cover; border-radius: 8px; }
.cp-pv-item .del { position: absolute; top: -6px; right: -6px; width: 19px; height: 19px; border-radius: 50%; background: rgba(0,0,0,.65); color: #fff; border: none; font-size: 11px; line-height: 1; }

.cp-note { font-size: 12px; line-height: 1.8; border-radius: 10px; padding: 10px 14px; margin-top: 12px; }
.cp-note.ok { background: #e8f8f2; color: #0d7a56; }
.cp-note.warn { background: #fff7e6; color: #a86400; }

.cp-progress { position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 300; display: flex; align-items: center; justify-content: center; }
.cp-progress-box { background: #fff; border-radius: 14px; padding: 24px 28px; width: 340px; box-shadow: 0 8px 30px rgba(0,0,0,.2); }
.cp-bar { height: 8px; background: #f2f3f5; border-radius: 4px; margin-top: 12px; overflow: hidden; }
.cp-bar i { display: block; height: 100%; background: linear-gradient(90deg, #ff2442, #ff6b81); border-radius: 4px; transition: width .3s; }

.cp-detail { display: grid; grid-template-columns: 300px 1fr; gap: 18px; }
.cp-detail-img { position: relative; }
.cp-detail-img img { width: 100%; border-radius: 10px; border: 1px solid var(--border); display: block; }
.cp-nav { display: flex; align-items: center; justify-content: center; gap: 10px; margin-top: 8px; font-size: 12px; color: var(--text-3); }
.cp-d-title { font-size: 15px; font-weight: 700; line-height: 1.5; }
.cp-d-content { background: #fafbfc; border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; font-size: 13px; line-height: 1.75; white-space: pre-wrap; max-height: 240px; overflow-y: auto; color: var(--text-2); }
.cp-d-comments { background: #fffaf3; border-color: #ffe2bd; }
@media (max-width: 760px) { .cp-detail { grid-template-columns: 1fr; } }

/* ===== 爆点拆解（详情弹窗内「分析此文章爆点」） ===== */
.modal.wide { width: 900px; }

.hit-loading { display: flex; gap: 14px; align-items: center; padding: 8px 0 12px; }
.hit-spin { width: 26px; height: 26px; flex: none; border-radius: 50%; border: 3px solid #ffd9e0; border-top-color: var(--red); animation: hit-spin .8s linear infinite; }
@keyframes hit-spin { to { transform: rotate(360deg); } }
.hit-load-tip { font-size: 12.5px; color: var(--text-3); margin-top: 6px; }
.hit-prog { height: 5px; background: #f2f3f5; border-radius: 3px; overflow: hidden; margin-top: 12px; }
.hit-prog i { display: block; height: 100%; width: 2%; background: linear-gradient(90deg, #ff2442, #ff6b81); border-radius: 3px; transition: width .45s ease; }
.hit-model-line { margin-top: 10px; font-size: 12.5px; line-height: 1.7; border-radius: 8px; padding: 8px 11px; }
.hit-model-line.ok { background: #e8f8f2; color: #0d7a56; }
.hit-model-line.warn { background: #fff7e6; color: #a86400; }
.hit-willuse { font-size: 12px; line-height: 1.65; border-radius: 8px; padding: 7px 10px; margin-top: 12px; }
.hit-willuse.ok { background: #e8f8f2; color: #0d7a56; }
.hit-willuse.warn { background: #fff7e6; color: #a86400; }
.hit-raw { font-size: 13px; line-height: 1.85; white-space: pre-wrap; word-break: break-word; background: #fafbfc; border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; color: var(--text-2); }

/* 爆点分析内联区：渲染在详情弹窗下方，不再弹独立窗口 */
.hit-inline { border-top: 1px dashed var(--border); margin-top: 4px; padding-top: 14px; }
.hit-inline-head { font-size: 15px; font-weight: 700; margin-bottom: 12px; }
.hit-inline-sub { font-size: 12px; font-weight: 400; color: var(--text-3); margin-left: 8px; }
.hit-use { flex: none; }
.hit-tag.sel { background: var(--red); color: #fff; }

/* ---------- 技能对比拆解（4 套小红书技能方法论） ---------- */
.hit-skill-area { border-top: 1px dashed var(--border); margin-top: 14px; padding-top: 12px; }
.hit-skill-t { font-size: 14px; font-weight: 700; margin-bottom: 10px; }
.hit-skill-t span { font-size: 12px; font-weight: 400; color: var(--text-3); margin-left: 6px; }
.hit-skill-btns { display: grid; grid-template-columns: repeat(auto-fit, minmax(215px, 1fr)); gap: 8px; }
.hit-skill-btn { display: flex; align-items: center; gap: 9px; text-align: left; border: 1px solid var(--border); background: #fff; border-radius: 10px; padding: 9px 11px; cursor: pointer; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease, background .18s ease; font-family: inherit; }
.hit-skill-btn:hover { border-color: var(--red); box-shadow: 0 3px 12px rgba(255, 36, 66, .12); transform: translateY(-1px); }
.hit-skill-btn:active { transform: translateY(0) scale(.98); }
.hsb-ico { font-size: 19px; flex: none; }
.hsb-main { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.hsb-name { font-size: 13px; font-weight: 600; color: var(--text-1); line-height: 1.35; }
.hsb-tag { font-size: 11.5px; color: var(--text-3); line-height: 1.4; }
.hsb-state { flex: none; width: 20px; text-align: center; font-size: 13px; color: #0d7a56; }
.hit-skill-btn.done { border-color: #b8e6d4; background: #f2fbf7; }
.hit-skill-btn.running { pointer-events: none; opacity: .85; border-color: #ffd9e0; background: #fff5f7; }
.hsb-spin { width: 14px; height: 14px; border-width: 2px; display: inline-block; }
.hit-skill-card { animation: hit-in .38s ease; border-top: 1px dashed var(--border); margin-top: 14px; }
@keyframes hit-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

/* 流式打字机实时预览：展示模型正在生成的末尾文字 */
.hit-stream-tail { display: none; margin-top: 10px; font-size: 12.5px; line-height: 1.75; color: var(--text-3); background: #fafbfc; border: 1px solid var(--border); border-radius: 8px; padding: 8px 11px; max-height: 108px; overflow: hidden; word-break: break-word; white-space: pre-wrap; }
.hit-stream-tail.on { display: block; }
.hit-cursor { display: inline-block; width: 2px; height: 14px; background: var(--red); margin-left: 2px; vertical-align: -2px; animation: hit-blink .9s steps(1) infinite; }
@keyframes hit-blink { 50% { opacity: 0; } }

/* 详情弹窗里的「建议修改」区（标题下方，谁都能写） */
.cp-sug { background: #f8f9fb; border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; margin-top: 10px; }
.cp-sug-h { font-size: 13px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.cp-sug-h span { font-weight: 400; font-size: 11.5px; color: var(--text-3); margin-left: 6px; }
.cp-sug-input { width: 100%; min-height: 68px; font-size: 13px; }
.cp-sug-foot { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 8px; }
.cp-sug-tip { font-size: 11.5px; color: var(--text-3); }
.cp-sug-list { margin-top: 10px; max-height: 240px; overflow-y: auto; }
.cp-sug-list:empty { display: none; }
.cp-sug-item { background: #fff; border: 1px solid var(--border); border-radius: 9px; padding: 8px 11px; margin-bottom: 8px; }
.cp-sug-item:last-child { margin-bottom: 0; }
.cp-sug-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; font-size: 12px; color: var(--text-3); }
.cp-sug-head b { font-size: 12.5px; color: var(--text); }
.cp-sug-text { font-size: 13px; color: var(--text); line-height: 1.7; margin-top: 4px; white-space: pre-wrap; }
.cp-sug-empty { text-align: center; font-size: 12px; color: var(--text-3); padding: 10px 0; }

/* 素材卡上的来源备注（带 fromCpId 的可点击跳转） */
.mat-src-note { font-size: 11.5px; color: var(--text-3); line-height: 1.6; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mat-src-note.link { cursor: pointer; color: #3a6fb0; }
.mat-src-note.link:hover { color: var(--red); text-decoration: underline; }

.hit-src { background: #fafbfc; border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; font-size: 12.5px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; }
.hit-src-label { color: var(--text-3); flex: none; }
.hit-src-title { font-weight: 700; }
.hit-src-meta { color: var(--text-3); margin-left: auto; white-space: nowrap; }
.hit-why { margin-top: 10px; background: #fff7e6; color: #a86400; border-radius: 10px; padding: 10px 12px; font-size: 13px; font-weight: 600; line-height: 1.65; }

.hit-sec { margin-top: 18px; }
.hit-h { font-size: 13.5px; font-weight: 700; margin-bottom: 10px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.hit-copy-all { margin-left: auto; font-weight: 400; }

.hit-dims { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.hit-dim { background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; }
.hit-dim-n { font-size: 12.5px; font-weight: 700; color: var(--red); margin-bottom: 5px; }
.hit-dim-d { font-size: 12.5px; line-height: 1.8; color: var(--text-2); }

.hit-titles { display: flex; flex-direction: column; gap: 8px; }
.hit-title-row { display: flex; align-items: baseline; gap: 9px; flex-wrap: wrap; background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 9px 12px; cursor: pointer; transition: .14s; }
.hit-title-row:hover { border-color: #ffc9d2; background: #fff8f9; }
.hit-title-row.copied { border-color: var(--green); background: #effaf5; }
.hit-formula { flex: none; font-size: 11px; font-weight: 600; color: #3a6fb0; background: #eef4ff; border-radius: 5px; padding: 2px 7px; }
.hit-title-text { font-size: 13.5px; font-weight: 600; line-height: 1.5; }
.hit-title-why { flex: 1 1 100%; font-size: 12px; color: var(--text-3); line-height: 1.6; }

.hit-block { margin-bottom: 10px; }
.hit-block b { display: block; font-size: 12.5px; color: var(--text-2); margin-bottom: 5px; }
.hit-block p { font-size: 13px; line-height: 1.8; background: #fafbfc; border: 1px solid var(--border); border-radius: 8px; padding: 9px 12px; color: var(--text-2); white-space: pre-wrap; }
.hit-block ol { margin: 0; padding-left: 20px; }
.hit-block li { font-size: 13px; line-height: 1.85; color: var(--text-2); }

.hit-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.hit-tag { cursor: pointer; font-size: 12px; color: #3a6fb0; background: #eef4ff; border-radius: 6px; padding: 3px 9px; transition: .14s; }
.hit-tag:hover { background: #dde9ff; }
.hit-tag.copied { background: #e8f8f2; color: #0d7a56; }
.hit-covers { display: flex; flex-wrap: wrap; gap: 8px; }
.hit-cover { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--red); background: #fdecec; border-radius: 8px; padding: 6px 12px; transition: .14s; }
.hit-cover:hover { background: #ffdde1; }
.hit-cover.copied { background: #e8f8f2; color: #0d7a56; }
.hit-risks { margin: 0; padding-left: 20px; }
.hit-risks li { font-size: 12.5px; line-height: 1.85; color: var(--text-2); }

@media (max-width: 860px) {
  .hit-dims { grid-template-columns: 1fr; }
  .hit-src-meta { margin-left: 0; }
  /* 手机端避免 iOS 聚焦输入时整页放大 */
  .hit-title-row, .hit-tag, .hit-cover { font-size: 13px; }
}

/* ===== 智能体大脑（品牌喂养） ===== */
.brain-status { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 16px; margin-bottom: 14px; }
.brain-score { font-size: 13px; color: var(--text-2); }
.brain-score b { color: var(--red); font-size: 15px; }
.brain-chip { font-size: 12px; color: var(--text-3); background: #f4f5f7; border-radius: 20px; padding: 3px 10px; }
.brain-chip.ok { color: #0d7a56; background: #e8f8f2; }
.brain-chip.warn { color: #a86400; background: #fff7e6; }
.brain-chip.tip { color: #3a6fb0; background: #eef4ff; }

.brain-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.brain-tab { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--text-2); background: #fff; border: 1px solid var(--border); border-radius: 22px; padding: 7px 16px; transition: .15s; }
.brain-tab:hover { border-color: #ffc9d2; color: var(--red); }
.brain-tab.active { background: var(--red); border-color: var(--red); color: #fff; }

.brain-panel { display: none; }
.brain-panel.active { display: block; }
.brain-h { font-size: 15px; margin-bottom: 16px; display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px; }
.brain-h-sub { font-size: 12px; font-weight: 400; color: var(--text-3); }
.brain-tip { font-size: 12px; color: var(--text-3); line-height: 1.8; margin-top: 12px; background: #fafbfc; border-left: 3px solid #e3e6ea; border-radius: 0 8px 8px 0; padding: 9px 12px; }

.bf-chks { display: flex; flex-wrap: wrap; gap: 8px; }
.bf-chk { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; font-size: 13px; color: var(--text-2); background: #f6f7f9; border: 1px solid transparent; border-radius: 20px; padding: 6px 14px; transition: .15s; }
.bf-chk:hover { background: #fdeef1; }
.bf-chk input { width: 15px; height: 15px; accent-color: var(--red); cursor: pointer; }
.bf-chk:has(input:checked) { background: var(--red-light); border-color: #ffc9d2; color: var(--red); font-weight: 600; }

/* ===== 可自定义的选项池（多选 + 增删） ===== */
.opt-chip {
  display: inline-flex; align-items: center; gap: 2px;
  background: #f6f7f9; border: 1px solid var(--border); border-radius: 20px;
  padding: 3px 5px 3px 0; transition: .15s;
}
.opt-chip:hover { background: #fdeef1; border-color: #ffd6dd; }
.opt-chip.on { background: var(--red-light); border-color: #ffb8c5; }
.opt-pick {
  display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  font-size: 13px; color: var(--text-2); padding: 5px 2px 5px 12px;
}
.opt-chip.on .opt-pick { color: var(--red); font-weight: 600; }
.opt-pick input { width: 15px; height: 15px; margin: 0; accent-color: var(--red); cursor: pointer; }
/* 删除按钮：始终可见的小圆钮，一眼就能看到（不依赖鼠标悬停） */
.opt-del {
  flex: none; width: 22px; height: 22px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--border); background: #fff; border-radius: 50%;
  cursor: pointer; color: var(--text-2); font-size: 15px; line-height: 1;
  font-family: inherit; transition: .15s;
}
.opt-del:hover { background: var(--red); border-color: var(--red); color: #fff; transform: scale(1.1); }
.opt-del:active { transform: scale(.94); }
.opt-empty { font-size: 12.5px; color: var(--text-3); }
.opt-add { display: flex; gap: 8px; margin-top: 10px; }
.opt-add .input { flex: 1; min-width: 0; }
.opt-add .btn { white-space: nowrap; }
.opt-hint { font-size: 11.5px; color: var(--text-3); line-height: 1.65; margin-top: 7px; }
.opt-hint-x { color: var(--red); }
/* 增删操作的内联反馈（成功 / 失败），比右下角提示更容易被看到 */
.opt-inline-tip { font-size: 12.5px; line-height: 1.6; margin-top: 8px; display: none; }
.opt-inline-tip.ok { display: block; color: var(--green); }
.opt-inline-tip.bad { display: block; color: var(--red); font-weight: 600; }

.brain-savebar { position: sticky; bottom: 0; display: flex; align-items: center; gap: 10px; background: rgba(255,255,255,.96); backdrop-filter: blur(6px); border-top: 1px solid var(--border); padding: 14px 0 6px; margin-top: 18px; }

.brain-prompt { background: #f7f8fa; border: 1px solid var(--border); border-radius: 10px; padding: 14px; max-height: 52vh; overflow: auto; }
.brain-prompt pre { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 12px; line-height: 1.75; color: var(--text-2); white-space: pre-wrap; word-break: break-word; margin: 0 0 14px; }
.bp-cap { font-size: 12px; font-weight: 700; color: var(--red); margin-bottom: 6px; }

/* 响应式 */
@media (max-width: 900px) {
  .sidebar { width: 64px; padding: 14px 8px; }
  .sidebar .logo span, .nav-item .txt { display: none; }
  .main { margin-left: 64px; padding: 16px; }
  .stat-grid { grid-template-columns: repeat(2, 1fr); }
  .stat-grid.cols3 { grid-template-columns: repeat(2, 1fr); }
  .rv-two { grid-template-columns: 1fr; }
  .rv-trend { height: 126px; gap: 3px; }
  .rv-trend-x { font-size: 9px; }
  .rv-trend-x em { font-size: 8px; }
  .rv-top-kpi b { font-size: 17px; }
  .rv-attr-k { width: 54px; }
  .factory-grid, .form-grid { grid-template-columns: 1fr; }
  .ig-dir-grid { grid-template-columns: repeat(2, 1fr); }
  .ig-gal { grid-template-columns: repeat(2, 1fr); }
  .ig-ref-grid { grid-template-columns: repeat(3, 1fr); }
  /* 窄屏：退出版块不再整体隐藏，只保留一个电源图标按钮，任何角色都能退出 */
  .sidebar-foot { display: block; bottom: 10px; left: 6px; right: 6px; font-size: 0; }
  .sidebar-foot [data-who], .sidebar-foot .foot-note { display: none; }
  .sidebar-foot [data-signout] { padding: 8px 0; font-size: 16px; }
  .sidebar-foot .sg-txt { display: none; }
}

/* ===== 登录 / 注册 ===== */
.auth-gate {
  position: fixed;
  top: 0; right: 0; bottom: 0; left: 0;
  width: 100%; height: 100%;
  z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  padding: 20px; overflow: auto;
  -webkit-overflow-scrolling: touch;
  background: linear-gradient(135deg, #fff5f6 0%, #f6f7f9 45%, #f2f6ff 100%);
}
/* ===== 登录态控制：默认按「未登录」处理，系统页面一律不可见 =====
   这样即使脚本没跑起来 / 登录层渲染异常，也绝不会把业务页面暴露出去 */
body:not(.authed) .layout { display: none !important; }
body.authed .auth-gate { display: none !important; }
.auth-card {
  width: 100%; max-width: 380px; background: #fff; border: 1px solid var(--border);
  border-radius: 16px; padding: 28px 26px 22px; box-shadow: 0 8px 32px rgba(31, 35, 41, .10);
}
.auth-brand { display: flex; align-items: center; gap: 9px; font-weight: 700; font-size: 18px; }
.auth-brand .dot {
  width: 30px; height: 30px; border-radius: 9px; background: var(--red); color: #fff;
  display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 800;
}
.auth-slogan { color: var(--text-3); font-size: 12.5px; line-height: 1.75; margin: 10px 0 18px; }
.auth-tabs { display: flex; gap: 4px; background: #f2f3f5; border-radius: 10px; padding: 4px; margin-bottom: 16px; }
.auth-tab {
  flex: 1; text-align: center; font-size: 13px; padding: 8px 0; border-radius: 7px;
  color: var(--text-2); cursor: pointer; user-select: none;
}
.auth-tab.active { background: #fff; color: var(--red); font-weight: 600; box-shadow: 0 1px 3px rgba(31, 35, 41, .10); }
.auth-panel { display: none; }
.auth-panel.active { display: block; }
.auth-panel .input { width: 100%; margin-bottom: 10px; }
.auth-code-row { display: flex; gap: 8px; margin-bottom: 10px; }
.auth-code-row .input { margin-bottom: 0; flex: 1; min-width: 0; }
.auth-code-row .btn { flex: none; white-space: nowrap; }
.auth-submit { width: 100%; justify-content: center; margin-top: 4px; }
.auth-mini { font-size: 12px; color: var(--text-3); text-align: center; margin-top: 12px; }
.auth-mini a { color: var(--primary); cursor: pointer; }
.auth-msg { font-size: 12.5px; line-height: 1.7; margin-top: 12px; min-height: 0; }
.auth-msg.err { color: var(--red); }
.auth-msg.ok { color: var(--green); }
.auth-foot {
  font-size: 11.5px; color: var(--text-3); line-height: 1.7; text-align: center;
  margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border);
}
/* 版本自检行：用来区分「打开的是哪个站点 / 哪个版本」 */
.auth-stamp {
  margin-top: 6px; font-size: 10.5px; color: var(--text-3);
  word-break: break-all; opacity: .85;
}
.auth-stamp b { font-weight: 600; }
#auth-who { font-size: 11px; color: var(--text-3); word-break: break-all; }

/* ---- 图文生成：风格/人群/景别/留白 拼装 chips ---- */
.ig-chip-block { margin-bottom: 10px; }
.ig-chip-label { font-size: 12px; color: var(--text-2); font-weight: 600; margin-bottom: 6px; }
.ig-chip-row { display: flex; flex-wrap: wrap; gap: 6px; }
.ig-chip {
  display: inline-block; padding: 4px 12px; border-radius: 999px;
  border: 1px solid var(--border); background: #fff; color: var(--text-2);
  font-size: 12px; cursor: pointer; user-select: none; line-height: 1.6;
  transition: all .15s;
}
.ig-chip:hover { border-color: var(--primary); color: var(--primary); }
.ig-chip.on { background: var(--primary); border-color: var(--primary); color: #fff; font-weight: 600; }

/* ---- 图文生成：左右分栏（左=提示词与生成，右=方向+风格） ---- */
.ig-split {
  display: grid;
  grid-template-columns: minmax(380px, 5fr) 7fr;
  gap: 16px;
  align-items: start;
  margin-bottom: 16px;
}
.ig-left { position: sticky; top: 16px; }
.ig-left .textarea { width: 100%; }
@media (max-width: 1100px) {
  .ig-split { grid-template-columns: 1fr; }
  .ig-left { position: static; }
}

/* ---- 图文生成：方向库页内原地编辑 ---- */
.ig-grp-pen { font-size: 11px; opacity: .55; margin-left: 6px; }
.ig-group-t:hover .ig-grp-pen { opacity: 1; }
.ig-ed {
  border: 1px solid var(--primary);
  border-radius: 10px;
  background: #f6f9ff;
  padding: 10px;
}
.ig-dir-ed {
  grid-column: 1 / -1;
  margin: 4px 0 6px;
}
.ig-ed .input, .ig-ed .textarea { background: #fff; }

/* ---- 方向卡片网格末尾的「大加号」新增框 ---- */
.ig-dir-add {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  border: 2px dashed var(--border); background: transparent;
  color: var(--text-3); cursor: pointer; min-height: 84px;
  transition: border-color .15s, color .15s;
}
.ig-dir-add:hover { border-color: var(--primary); color: var(--primary); }
.ig-add-plus { font-size: 36px; line-height: 1; font-weight: 300; color: var(--primary); }

/* ---- 小红书素材采集 ---- */
.col-badge { font-size: 11px; font-weight: 600; padding: 1px 8px; border-radius: 999px; vertical-align: 2px; margin-left: 4px; white-space: nowrap; }
.col-badge.gray { color: var(--text-3); background: var(--bg); border: 1px solid var(--border); }
.col-badge.green { color: #0a7d3f; background: rgba(16,185,129,.13); }
.col-badge.red { color: var(--red); background: var(--red-light); }
.col-steps { display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; }
.col-step { display: flex; gap: 8px; font-size: 12.5px; color: var(--text-2); line-height: 1.85; }
.col-step > i {
  flex: 0 0 18px; height: 18px; border-radius: 50%; background: var(--primary); color: #fff;
  font-style: normal; font-size: 11px; font-weight: 700; display: flex; align-items: center; justify-content: center; margin-top: 3px;
}
.col-step code, .col-step kbd {
  background: var(--bg); border: 1px solid var(--border); border-radius: 4px; padding: 0 4px;
  font-size: 11px; font-family: ui-monospace, Menlo, Consolas, monospace;
}
.col-kw-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 10px; border-radius: 999px;
  border: 1px solid var(--border); background: #fff;
  font-size: 12px; color: var(--text-2); cursor: pointer;
}
.col-kw-chip i { font-style: normal; color: var(--primary); font-weight: 700; }
.col-kw-chip.on { border-color: var(--primary); background: var(--primary); color: #fff; }
.col-kw-chip.on i { color: #fff; }
.col-kw-chip a { text-decoration: none; }
/* 小红书首页那种整齐网格：封面统一 3:4 裁切（CSS 多列会出现「最后一列空着」的平衡问题，改用 grid） */
#col-results { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 18px 14px; }
@media (max-width: 1300px) { #col-results { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 1020px) { #col-results { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 720px) { #col-results { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 10px; } }
.col-card { border: 1px solid var(--border); border-radius: 12px; overflow: hidden; background: #fff; display: flex; flex-direction: column; }
.col-cover { position: relative; aspect-ratio: 3 / 4; background: var(--bg); overflow: hidden; }
.col-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.col-imgcount { position: absolute; right: 6px; top: 6px; background: rgba(0,0,0,.55); color: #fff; font-size: 11px; padding: 2px 7px; border-radius: 999px; }
.col-body { padding: 10px 12px 12px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.col-title { font-size: 13px; font-weight: 700; color: var(--text); line-height: 1.5; }
.col-desc { font-size: 12px; color: var(--text-2); line-height: 1.6; }
.col-tags { display: flex; flex-wrap: wrap; gap: 4px; }
.col-tag { font-size: 11px; color: var(--primary); background: rgba(91,58,255,.08); padding: 1px 8px; border-radius: 999px; }
.col-meta { font-size: 11px; color: var(--text-3); display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.col-kwmini { color: var(--primary); font-weight: 600; }
.col-ops { display: flex; gap: 6px; margin-top: auto; padding-top: 6px; flex-wrap: wrap; }
/* 图片没取到时的占位（小红书图有签名时效，过期就加载不出来） */
.col-noimg {
  position: absolute; left: 0; right: 0; top: 0; bottom: 0; display: flex; align-items: center;
  justify-content: center; text-align: center; padding: 12px; font-size: 12px; color: var(--text-3);
  background: repeating-linear-gradient(45deg, #f7f7fa, #f7f7fa 8px, #f1f1f6 8px, #f1f1f6 16px);
}
.col-ai-flag { font-size: 12px; }
.col-ai-box { border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; margin-bottom: 10px; background: #fafbff; }
.col-ai-head { font-size: 11px; color: var(--text-3); margin-bottom: 6px; }
.col-ai-text { font-size: 13px; line-height: 1.9; color: var(--text); }
/* 采集结果卡片在窄屏的间距由上面的 column-count 断点控制 */

/* ============ 采集结果：小红书式瀑布流卡片 ============ */
.xg-card { display: flex; flex-direction: column; cursor: pointer; min-width: 0; }
.xg-cover { position: relative; border-radius: 10px; overflow: hidden; background: var(--bg); aspect-ratio: 3 / 4; }
.xg-cover img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .28s ease; }
.xg-card:hover .xg-cover img { transform: scale(1.035); }
.xg-mask {
  position: absolute; left: 0; right: 0; top: 0; bottom: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(0,0,0,0) 55%, rgba(0,0,0,.22));
  opacity: 0; transition: opacity .2s;
}
.xg-card:hover .xg-mask { opacity: 1; }
.xg-count {
  position: absolute; right: 7px; top: 7px; background: rgba(0,0,0,.5); color: #fff;
  font-size: 11px; line-height: 1; padding: 4px 7px; border-radius: 999px;
}
.xg-cmt-flag {
  position: absolute; left: 7px; top: 7px; background: rgba(0,0,0,.5); color: #fff;
  font-size: 11px; line-height: 1; padding: 4px 7px; border-radius: 999px;
}
.xg-warn {
  position: absolute; right: 7px; bottom: 7px; background: rgba(255,143,0,.92); color: #fff;
  font-size: 11px; padding: 3px 7px; border-radius: 999px;
}
.xg-noimg {
  position: absolute; left: 0; right: 0; top: 0; bottom: 0; display: flex; align-items: center;
  justify-content: center; text-align: center; padding: 16px; font-size: 12px; color: var(--text-3);
  min-height: 120px;
  background: repeating-linear-gradient(45deg, #f7f7fa, #f7f7fa 8px, #f1f1f6 8px, #f1f1f6 16px);
}
.xg-title {
  font-size: 13.5px; line-height: 1.55; color: var(--text); font-weight: 500;
  margin: 8px 2px 6px; overflow: hidden; display: -webkit-box;
  -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.xg-foot { display: flex; align-items: center; gap: 5px; padding: 0 2px 2px; margin-top: auto; }
.xg-ava {
  width: 18px; height: 18px; flex: 0 0 18px; border-radius: 50%; color: #fff;
  font-size: 11px; display: inline-flex; align-items: center; justify-content: center;
  font-weight: 600; overflow: hidden;
}
.xg-ava.lg { width: 38px; height: 38px; flex: 0 0 38px; font-size: 15px; }
.xg-ava.sm { width: 26px; height: 26px; flex: 0 0 26px; font-size: 12px; }
.xg-name {
  font-size: 12px; color: var(--text-3); flex: 1; min-width: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.xg-like { font-size: 12px; color: var(--text-3); white-space: nowrap; }

/* ============ 采集详情：小红书式笔记页（左图右文 + 评论） ============ */
.modal.note {
  width: 1080px; max-width: 96vw; height: 84vh; max-height: 84vh;
  padding: 0; overflow: hidden; border-radius: 16px;
}
.modal.note .xgn { display: flex; height: 100%; }
.xgn-left { flex: 1 1 auto; min-width: 0; background: #0d0d10; display: flex; position: relative; }
.xgn-thumbs {
  width: 64px; flex: 0 0 64px; overflow-y: auto; padding: 12px 7px;
  display: flex; flex-direction: column; gap: 8px; background: #141418;
  scrollbar-width: thin;
}
.xgn-thumbs img {
  width: 50px; height: 50px; object-fit: cover; border-radius: 8px;
  opacity: .5; cursor: pointer; border: 2px solid transparent; transition: opacity .15s;
}
.xgn-thumbs img.on { opacity: 1; border-color: #fff; }
.xgn-main {
  flex: 1; min-width: 0; display: flex; align-items: center; justify-content: center;
  position: relative; overflow: hidden;
}
.xgn-main #xgn-img { max-width: 100%; max-height: 100%; object-fit: contain; cursor: zoom-in; transition: transform .2s; }
.xgn-main #xgn-img.zoom { transform: scale(1.7); cursor: zoom-out; }
.xgn-nav {
  position: absolute; top: 50%; transform: translateY(-50%); width: 34px; height: 34px;
  border: 0; border-radius: 50%; background: rgba(255,255,255,.86); color: #333;
  font-size: 20px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.xgn-nav.prev { left: 10px; }
.xgn-nav.next { right: 10px; }
.xgn-count {
  position: absolute; left: 50%; bottom: 12px; transform: translateX(-50%);
  background: rgba(0,0,0,.55); color: #fff; font-size: 12px; padding: 2px 10px; border-radius: 999px;
}
.xgn-noimg { color: #9aa; font-size: 13px; text-align: center; line-height: 2; padding: 20px; }
.xgn-right {
  width: 430px; flex: 0 0 430px; min-width: 0; display: flex; flex-direction: column;
  background: #fff; border-left: 1px solid var(--border);
}
.xgn-top { display: flex; align-items: center; gap: 10px; padding: 14px 16px 10px; border-bottom: 1px solid var(--border); }
.xgn-who { flex: 1; min-width: 0; }
.xgn-author { font-size: 13.5px; font-weight: 600; color: var(--text); }
.xgn-sub { font-size: 11.5px; color: var(--text-3); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.xgn-x { border: 0; background: transparent; font-size: 15px; color: var(--text-3); cursor: pointer; padding: 4px 6px; }
.xgn-x:hover { color: var(--red); }
.xgn-scroll { flex: 1; overflow-y: auto; padding: 14px 16px 18px; }
.xgn-title { font-size: 16px; font-weight: 600; line-height: 1.5; margin-bottom: 10px; color: var(--text); }
.xgn-desc { font-size: 14px; line-height: 1.9; color: var(--text); word-break: break-word; }
.xgn-desc.clip { max-height: 134px; overflow: hidden; -webkit-mask-image: linear-gradient(180deg, #000 68%, transparent); mask-image: linear-gradient(180deg, #000 68%, transparent); }
.xgn-more { border: 0; background: transparent; color: var(--text-3); font-size: 12px; cursor: pointer; padding: 4px 0; }
.xgn-more:hover { color: var(--red); }
.xgn-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0; }
.xgn-tag { font-size: 12.5px; color: #3b6ea5; }
.xgn-time { font-size: 12px; color: var(--text-3); margin: 8px 0 10px; }
.xgn-time a { color: var(--text-3); }
.xgn-time a:hover { color: var(--red); }
.xgn-stats {
  display: flex; align-items: center; gap: 16px; padding: 10px 0;
  border-top: 1px solid var(--border); border-bottom: 1px solid var(--border);
  font-size: 12.5px; color: var(--text-2);
}
.xgn-warn { color: var(--orange); margin-left: auto; font-size: 12px; }
.xgn-cmt { margin-top: 14px; }
.xgn-cmt-head { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text-2); margin-bottom: 8px; }
.xgn-cmt-have { font-size: 11px; color: var(--text-3); background: var(--bg); border-radius: 999px; padding: 1px 8px; }
.xgn-cmt-item { display: flex; gap: 8px; padding: 8px 0; }
.xgn-cmt-item.sub { padding: 6px 0 2px 34px; }
.xgn-cmt-body { flex: 1; min-width: 0; }
.xgn-cmt-name { font-size: 12px; color: var(--text-3); margin-bottom: 2px; }
.xgn-cmt-text { font-size: 13.5px; line-height: 1.75; color: var(--text); white-space: pre-wrap; word-break: break-word; }
.xgn-cmt-meta { font-size: 11.5px; color: var(--text-3); margin-top: 3px; }
.xgn-cmt-empty { padding: 14px 0 4px; text-align: center; }
.xgn-cmt-tip { font-size: 12px; color: var(--text-3); line-height: 1.75; margin: 4px 0 10px; }
.xgn-foot { border-top: 1px solid var(--border); padding: 10px 14px; display: flex; flex-direction: column; gap: 6px; }
.xgn-prog { font-size: 12px; color: var(--text-3); }
.xgn-btns { display: flex; flex-wrap: wrap; gap: 6px; }

@media (max-width: 900px) {
  .modal.note { width: 96vw; height: 92vh; max-height: 92vh; }
  .modal.note .xgn { flex-direction: column; }
  .xgn-left { flex: 0 0 auto; height: 42vh; }
  .xgn-thumbs { display: none; }
  .xgn-right { width: auto; flex: 1 1 auto; border-left: 0; border-top: 1px solid var(--border); }
}

/* ===== 复盘：账号健康度 / 全量素材表 / 图片形式 ===== */
.rv-health { border: 1px solid var(--border); border-radius: 12px; padding: 16px 18px; background: #fff; border-left-width: 4px; }
.rv-health-ok { border-left-color: #12a150; }
.rv-health-warn { border-left-color: #e08a00; background: #fffdf6; }
.rv-health-risk { border-left-color: #e33; background: #fff8f8; }
.rv-health-nodata { border-left-color: #bbb; background: #fafafa; }
.rv-health-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.rv-health-badge { font-size: 15px; font-weight: 700; }
.rv-health-ok .rv-health-badge { color: #12a150; }
.rv-health-warn .rv-health-badge { color: #c07800; }
.rv-health-risk .rv-health-badge { color: #d21f1f; }
.rv-health-t { font-size: 12px; color: var(--text-3); }
.rv-health-m { margin-left: auto; font-size: 12px; color: var(--text-2); }
.rv-health-ul { margin: 10px 0 0; padding-left: 18px; }
.rv-health-ul li { font-size: 13px; line-height: 1.9; color: var(--text); }
.rv-health-adv { margin-top: 10px; font-size: 13px; line-height: 1.8; color: var(--text-2); background: #f6f7f9; border-radius: 8px; padding: 9px 12px; }

.rv-all-wrap { max-height: 520px; overflow: auto; border: 1px solid var(--border); border-radius: 10px; }
.rv-all-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 12.5px; }
.rv-all-table thead th { position: sticky; top: 0; z-index: 2; background: #f7f8fa; text-align: left; font-weight: 600; color: var(--text-2); padding: 9px 10px; border-bottom: 1px solid var(--border); white-space: nowrap; }
.rv-all-table td { padding: 8px 10px; border-bottom: 1px solid #f1f2f4; color: var(--text); }
.rv-all-table tbody tr:hover td { background: #fafbfc; }
.rv-all-table tr.hit td { background: #fffafa; }
.rv-all-table tr.hit:hover td { background: #fff5f6; }
.rv-all-table .rv-num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.rv-all-table .rv-a-title { max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rv-hit-n { color: var(--red); }
.rv-img-weak { color: #c98a00; }
.rv-dir-tag { display: inline-block; padding: 2px 8px; border-radius: 20px; background: #fdeef1; color: #c9295a; font-size: 11.5px; white-space: nowrap; }
.rv-dir-tag.dim { background: #f1f2f4; color: var(--text-3); }

.rv-img-note { font-size: 13px; line-height: 1.9; padding: 12px 14px; border-radius: 10px; border: 1px solid var(--border); }
.rv-img-note.rv-img-ok { background: #f4fbf6; border-color: #cdebd8; }
.rv-img-note.rv-img-warn { background: #fffdf5; border-color: #f2e2b8; }
.rv-img-note.rv-img-risk { background: #fff7f7; border-color: #f6d0d0; }

@media (max-width: 720px) {
  .rv-health-m { margin-left: 0; width: 100%; }
  .rv-all-table { font-size: 12px; }
  .rv-all-table .rv-a-title { max-width: 150px; }
}

/* 发布时段 & 同质化清仓（2026-11-01u） */
.rv-pub { display: grid; grid-template-columns: 1fr 1.15fr; gap: 16px; align-items: start; }
.rv-pub-card { border: 1px solid var(--border); border-radius: 12px; background: #fff; padding: 16px 18px; }
.rv-pub-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 14px; font-weight: 700; margin-bottom: 10px; }
.rv-pub-tag { font-size: 11px; font-weight: 500; padding: 2px 8px; border-radius: 999px; background: #f1f3f5; color: var(--text-2); }
.rv-pub-tag.ok { background: #e8f7ee; color: #0a7a45; }
.rv-pub-tag.risk { background: #ffe9ed; color: #c8324a; }
.rv-pub-ul { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.85; color: var(--text-2); }
.rv-pub-ul li { margin-bottom: 7px; }
.rv-pub-bands { margin-top: 14px; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.rv-pub-bands .rv-bars { margin-top: 0; }
.rv-muted { color: var(--text-3); font-size: 12px; }
.rv-acc-table { font-size: 12.5px; }
.rv-acc-table td { font-size: 12.5px; }
.rv-pub-card .rv-details { margin-top: 12px; }
@media (max-width: 1250px) {
  .rv-pub { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  .rv-pub-bands { grid-template-columns: 1fr; }
  .rv-pub-card { padding: 14px; }
}
.rv-health-adv-l { margin-bottom: 4px; }
.rv-health-adv-l:last-child { margin-bottom: 0; }
.rv-rm { border: 1px solid #f0c9d0; background: #fff; color: #c8324a; font-size: 12px; padding: 2px 10px; border-radius: 999px; cursor: pointer; }
.rv-rm:hover { background: #fff2f4; }
.rv-rm:disabled { opacity: .5; cursor: default; }


/* ===== 账号矩阵（2026-11-01w）===== */
.mx-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 16px; }
.mx-stat { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px 18px; box-shadow: var(--shadow); border-left: 3px solid var(--border); }
.mx-stat.ok { border-left-color: var(--green); }
.mx-stat.test { border-left-color: #2563eb; }
.mx-stat.risk { border-left-color: var(--red); }
.mx-stat .num { font-size: 26px; font-weight: 700; line-height: 1.2; }
.mx-stat .lbl { font-size: 13px; color: var(--text-2); margin-top: 4px; }
.mx-stat .s { font-size: 11.5px; color: var(--text-3); margin-top: 5px; line-height: 1.5; }

/* 分配素材参考行（老板 2026-11-03：CK 失效时用素材库分配记录当发布参考） */
.mx-ref-row td { background: rgba(37, 99, 235, 0.04); }
.mx-ref-tag { display: inline-block; font-size: 11px; padding: 1px 7px; border-radius: 10px; background: #eff6ff; color: #2563eb; border: 1px solid #bfdbfe; vertical-align: 1px; }
.mx-ref-ok { display: inline-block; font-size: 11px; padding: 1px 7px; border-radius: 10px; background: #f0fdf4; color: var(--green); border: 1px solid #bbf7d0; vertical-align: 1px; }

.mx-grid2 { display: grid; grid-template-columns: 1.15fr 1fr; gap: 16px; margin-bottom: 16px; align-items: start; }
.mx-card { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px 18px; box-shadow: var(--shadow); margin-bottom: 16px; }
.mx-grid2 .mx-card { margin-bottom: 0; }
.mx-card-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; font-size: 15px; font-weight: 700; margin-bottom: 12px; padding-bottom: 10px; border-bottom: 1px solid var(--border); }
.mx-card-h .mx-muted { font-weight: 400; font-size: 11.5px; }
.mx-muted { color: var(--text-3); font-size: 12px; }
.mx-none { color: var(--text-3); font-size: 13px; padding: 14px 0; line-height: 1.8; }
.mx-hint { color: var(--text-3); font-size: 12px; line-height: 1.7; margin-top: 8px; }
.mx-risk { color: #d92b4b; }
.mx-num { text-align: right; }

.mx-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; vertical-align: 1px; }

/* 任务清单 */
.mx-task { display: flex; align-items: center; gap: 12px; padding: 11px 12px; border: 1px solid var(--border); border-radius: 10px; margin-bottom: 9px; background: #fcfcfd; }
.mx-task.hot { border-color: #ffd0d9; background: #fffafb; }
.mx-task-main { flex: 1; min-width: 0; }
.mx-task-t { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; font-size: 13.5px; }
.mx-task-x { font-size: 12px; color: var(--text-2); margin-top: 4px; line-height: 1.6; }
.mx-task-btns { display: flex; gap: 6px; flex-shrink: 0; flex-wrap: wrap; justify-content: flex-end; }
.mx-ph { font-size: 11px; padding: 1px 8px; border-radius: 999px; border: 1px solid; }
.mx-tag { font-size: 10.5px; padding: 1px 7px; border-radius: 4px; font-weight: 500; }
.mx-tag.vet { background: #fff1f0; color: #c8324a; }
.mx-tag.new { background: #eef7f1; color: #0a7a45; }

.mx-btn { border: 1px solid var(--border); background: #fff; color: var(--text); font-size: 12px; padding: 5px 11px; border-radius: 7px; white-space: nowrap; }
.mx-btn:hover { background: #f5f6f8; }
.mx-btn.primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.mx-btn.primary:hover { filter: brightness(.94); }
.mx-btn.ok { background: #eafaf1; border-color: #b7e8cd; color: #0a7a45; }
.mx-btn.warn { background: #fff8ec; border-color: #ffdca8; color: #a25c00; }
.mx-btn:disabled { opacity: .5; cursor: default; }

/* 新号 vs 老号 */
.mx-ab { border-radius: 10px; padding: 14px 16px; border: 1px solid var(--border); background: #fcfcfd; }
.mx-ab.risk { border-color: #ffd0d9; background: #fff9fa; }
.mx-ab.warn { border-color: #ffe4b8; background: #fffcf5; }
.mx-ab.ok { border-color: #cdebd9; background: #f9fdfb; }
.mx-ab.dim { background: #fafafb; }
.mx-ab-t { font-size: 14.5px; font-weight: 700; margin-bottom: 12px; line-height: 1.5; }
.mx-ab-row { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.mx-ab-l { width: 96px; font-size: 12px; color: var(--text-2); flex-shrink: 0; }
.mx-ab-bar { flex: 1; height: 9px; background: #eef0f3; border-radius: 999px; overflow: hidden; }
.mx-ab-bar i { display: block; height: 100%; border-radius: 999px; }
.mx-ab-v { width: 100px; text-align: right; font-size: 12.5px; font-weight: 600; flex-shrink: 0; line-height: 1.35; }
.mx-ab-v span { display: block; font-weight: 400; color: var(--text-3); font-size: 10.5px; }
.mx-ab-ul { margin: 10px 0 0; padding-left: 18px; font-size: 12.5px; color: var(--text-2); line-height: 1.85; }
.mx-ab-todo { margin-top: 10px; font-size: 12.5px; line-height: 1.8; padding: 9px 11px; background: #fff; border: 1px dashed var(--border); border-radius: 8px; }

/* 本周新号（按运营者） */
.mx-goal-head { font-size: 13px; margin-bottom: 12px; line-height: 1.9; }
.mx-goal-head .mx-muted { margin-left: 8px; }
.mx-goal-row { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.mx-goal-n { width: 78px; font-size: 13px; flex-shrink: 0; }
.mx-goal-bar { flex: 1; height: 12px; background: #eef0f3; border-radius: 999px; overflow: hidden; }
.mx-goal-bar i { display: block; height: 100%; background: #ffc3cf; border-radius: 999px; transition: width .3s; }
.mx-goal-bar i.ok { background: linear-gradient(90deg, #4ade80, #16a34a); }
.mx-goal-v { width: 62px; text-align: right; font-size: 13px; flex-shrink: 0; }
.mx-goal-v .ok { color: var(--green); }
.mx-goal-v .risk { color: #d92b4b; }
.mx-goal-foot { font-size: 12.5px; color: var(--text-2); margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--border); line-height: 1.9; }

/* 清素材 */
.mx-clear-row { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; margin-bottom: 9px; background: #fcfcfd; }
.mx-clear-row > div { flex: 1; min-width: 0; }
.mx-clear-x { font-size: 12px; color: var(--text-2); margin-top: 4px; line-height: 1.6; }

/* 矩阵表 */
.mx-grp { margin-bottom: 18px; }
.mx-grp-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13.5px; font-weight: 700; margin-bottom: 8px; }
.mx-grp-go { font-weight: 400; font-size: 11.5px; color: var(--text-3); }
.mx-table { width: 100%; min-width: 880px; border-collapse: collapse; font-size: 12.5px; }
.mx-table th { text-align: left; font-weight: 600; color: var(--text-2); background: #fafbfc; padding: 8px 10px; border-bottom: 1px solid var(--border); white-space: nowrap; }
.mx-table td { padding: 9px 10px; border-bottom: 1px solid #f2f3f5; vertical-align: top; }
.mx-table tr:hover td { background: #fcfcfd; }
.mx-table .mx-todo { color: var(--text-2); font-size: 12px; line-height: 1.6; max-width: 260px; }
.mx-table .mx-btn { margin: 0 4px 4px 0; }

/* 养号 SOP */
.mx-sop-row { display: flex; gap: 14px; padding: 11px 0; border-bottom: 1px dashed var(--border); }
.mx-sop-row:last-child { border-bottom: 0; }
.mx-sop-d { width: 76px; flex-shrink: 0; font-size: 12px; font-weight: 700; color: var(--red); }
.mx-sop-t { font-size: 13px; font-weight: 600; margin-bottom: 4px; }
.mx-sop-x { font-size: 12.5px; color: var(--text-2); line-height: 1.85; }

/* ===== 今日发布（来自主页同步快照，2026-11-02）===== */
.mx-today-table { min-width: 760px; }
.mx-today-table .mx-td-acc { white-space: nowrap; }
.mx-today-table .mx-td-acc b { font-size: 13px; }
.mx-today-table .mx-td-time { color: var(--text-2); white-space: nowrap; font-variant-numeric: tabular-nums; }
.mx-today-table tr.mx-today-none td { background: #fffdf8; }
.mx-today-last { font-size: 11.5px; color: var(--text-3); }
.mx-note-link { color: var(--primary); text-decoration: none; line-height: 1.55; }
.mx-note-link:hover { text-decoration: underline; }
.mx-up { color: #12894a; font-variant-numeric: tabular-nums; }
/* 今天的建议：左边一个标签，右边一句话 */
.mx-adv { display: flex; flex-direction: column; gap: 8px; }
.mx-adv-row { display: flex; gap: 10px; align-items: flex-start; padding: 9px 12px; border-radius: 8px; border: 1px solid var(--border); background: #fff; }
.mx-adv-row.risk { border-color: #f4c7cf; background: #fff7f8; }
.mx-adv-row.warn { border-color: #f3ddb6; background: #fffbf3; }
.mx-adv-row.ok { border-color: #cbe8d6; background: #f7fdf9; }
.mx-adv-row.info { border-color: var(--border); background: #fafbfc; }
.mx-adv-b {
  flex-shrink: 0; font-size: 11px; line-height: 18px; padding: 1px 8px; border-radius: 999px;
  background: #eef0f3; color: var(--text-2); white-space: nowrap; margin-top: 1px;
}
.mx-adv-row.risk .mx-adv-b { background: var(--red-light); color: var(--red); }
.mx-adv-row.warn .mx-adv-b { background: #fff1d9; color: #a35b00; }
.mx-adv-row.ok .mx-adv-b { background: #e8f7ee; color: #12894a; }
.mx-adv-x { font-size: 12.5px; line-height: 1.75; color: var(--text-2); }
.mx-adv-x b { color: var(--text); }
.mx-snap-link {
  border: 0; background: none; padding: 0; margin-top: 2px; cursor: pointer;
  color: var(--primary); font-size: 11.5px; line-height: 1.4;
}
.mx-snap-link:hover { text-decoration: underline; }
/* AI 建议区 */
.mx-ai-wrap { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border); display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.mx-ai-body { flex-basis: 100%; }
.mx-ai-text {
  font-size: 13px; line-height: 1.95; color: var(--text); background: #fafbfc;
  border: 1px solid var(--border); border-radius: 8px; padding: 12px 14px; margin-top: 4px;
}

@media (max-width: 1250px) {
  .mx-stats { grid-template-columns: repeat(2, 1fr); }
  .mx-grid2 { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  .mx-stats { gap: 10px; }
  .mx-stat { padding: 13px 14px; }
  .mx-stat .num { font-size: 22px; }
  .mx-task { flex-direction: column; align-items: flex-start; }
  .mx-task-btns { justify-content: flex-start; }
  .mx-ab-l { width: 80px; }
  .mx-sop-row { flex-direction: column; gap: 4px; }
  .mx-sop-d { width: auto; }
}
