/* ============================================================
   ACS V3 客户服务中心 — 设计系统（白主题，与 provision 统一）
   Apple 风企业白主题：全亮色背景 + 白侧边栏 + 蓝色主色 + 胶囊按钮
   ============================================================ */
* { margin:0; padding:0; box-sizing:border-box; }
:root{
  --bg:#f8fafc; --bg-2:#f8fafc; --bg-3:#f1f5f9;
  --card:#ffffff; --card-strong:#f8fafc;
  --text:#0f172a; --text-secondary:#475569; --text-muted:#94a3b8;
  --border:rgba(15,23,42,.08); --border-strong:rgba(15,23,42,.16);
  --accent:#2563eb; --accent-2:#06b6d4; --accent-soft:rgba(37,99,235,.08);
  --success:#16a34a; --warning:#d97706; --danger:#dc2626;
  --danger-hover:#b91c1c; --danger-soft:#fef2f2;
  --success-soft:#f0fdf4; --warning-soft:#fffbeb;
  --info:#0ea5e9; --info-soft:#f0f9ff;
  --shadow-sm:0 1px 3px rgba(15,23,42,.06); --shadow-md:0 8px 24px rgba(15,23,42,.08); --shadow-lg:0 24px 60px rgba(15,23,42,.14);
  --radius:14px; --radius-sm:8px; --radius-lg:24px;
  --ease-apple:cubic-bezier(.32,.72,0,1);
  --modal-overlay:rgba(0,0,0,.7); --toast-bg:#f1f5f9;
  --primary:var(--accent);
  --primary-hover:#1d4ed8;
  --primary-soft:var(--accent-soft);
  --sidebar-bg:var(--card);
  --sidebar-text:var(--text-secondary);
  --sidebar-active:var(--accent);
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;
}
body {
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei","Helvetica Neue",sans-serif;
  background:var(--bg);
  color:var(--text);
  font-size:14px;
  line-height:1.6;
}

/* ---------- 通用 ---------- */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  padding:9px 18px; border:1px solid var(--border); border-radius:999px;
  background:var(--card); color:var(--text); font-size:14px; font-weight:500;
  cursor:pointer; transition:transform .18s var(--ease-apple), background .2s var(--ease-apple), border-color .2s var(--ease-apple), box-shadow .2s var(--ease-apple), color .2s var(--ease-apple);
  white-space:nowrap; font-family:inherit;
}
.btn:hover { border-color:var(--primary); color:var(--primary); }
.btn:active { transform:scale(.96); }
.btn-primary { background:var(--accent); border-color:var(--accent); color:#fff; }
.btn-primary:hover { background:var(--primary-hover); border-color:var(--primary-hover); color:#fff; box-shadow:0 8px 24px var(--accent-soft); }
.btn-danger { background:var(--danger); border-color:var(--danger); color:#fff; }
.btn-danger:hover { background:var(--danger-hover); border-color:var(--danger-hover); color:#fff; }
.btn-soft { background:var(--accent-soft); border-color:transparent; color:var(--accent); }
.btn-soft:hover { background:var(--accent-soft); color:var(--primary-hover); }
.btn-sm { padding:7px 14px; font-size:13px; }
.btn-lg { padding:14px 30px; font-size:15px; font-weight:600; }
.btn-block { width:100%; padding:11px; font-size:15px; }
.btn:disabled { opacity:.55; cursor:not-allowed; }

.toolbar { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:16px; }
.empty { text-align:center; padding:48px 20px; color:var(--text-secondary); font-size:14px; }
.mono { font-family:var(--mono); font-size:12px; word-break:break-all; }
.badge {
  display:inline-flex; align-items:center; gap:4px;
  padding:2px 10px; border-radius:999px; font-size:12px; font-weight:600;
}
.badge-active, .badge-processed, .badge-completed, .badge-ok { background:var(--success-soft); color:var(--success); }
.badge-disabled, .badge-failed { background:var(--danger-soft); color:var(--danger); }
.badge-pending { background:var(--bg-3); color:var(--text-secondary); }
.badge-processing, .badge-expired { background:var(--warning-soft); color:var(--warning); }
.badge-preprocessed { background:var(--info-soft); color:var(--info); }
.badge-deleting { background:var(--warning-soft); color:var(--warning); }
/* 线性功能图标（图文解析/图文问答，与开通页 SVG 风格一致） */
.svg-icon{ display:inline-flex; align-items:center; justify-content:center; vertical-align:middle; line-height:0; margin-right:2px; }
.svg-icon svg{ width:12px; height:12px; color:currentColor; }
.badge-unknown { background:var(--bg-3); color:var(--text-secondary); }
.badge-trial { background:var(--success-soft); color:var(--success); }

.page-header { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:20px; flex-wrap:wrap; }
.page-header h2 { font-size:20px; font-weight:700; }

/* ---------- Toast ---------- */
.toast {
  position:fixed; top:24px; left:50%; transform:translateX(-50%) translateY(-16px);
  background:var(--toast-bg); color:var(--text); padding:10px 20px; border-radius:10px;
  font-size:13px; border:1px solid var(--border); opacity:0; pointer-events:none;
  transition:all .25s ease; z-index:2000; box-shadow:var(--shadow-md);
}
.toast.show { opacity:1; transform:translateX(-50%) translateY(0); }

/* ============================================================
   登录页
   ============================================================ */
.login-screen {
  position:fixed; inset:0; z-index:999;
  display:flex; align-items:center; justify-content:center;
  background:linear-gradient(160deg,var(--bg-2) 0%,var(--bg-3) 60%,var(--accent-soft) 160%);
  overflow:hidden;
}
.login-glow { position:absolute; border-radius:50%; filter:blur(90px); }
.login-glow-1 { width:420px; height:420px; background:rgba(37,99,235,.10); top:-120px; right:-80px; }
.login-glow-2 { width:360px; height:360px; background:rgba(6,182,212,.06); bottom:-140px; left:-60px; }
.login-box {
  position:relative; z-index:1;
  width:400px; max-width:92vw; background:var(--card);
  border-radius:16px; padding:40px 36px 32px;
  box-shadow:var(--shadow-lg);
}
.login-brand { text-align:center; margin-bottom:28px; }
.brand-logo {
  width:52px; height:52px; margin:0 auto 14px; border-radius:14px;
  background:linear-gradient(135deg,var(--accent),#4f46e5);
  color:#fff; font-weight:800; font-size:18px; letter-spacing:.5px;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 8px 20px rgba(37,99,235,.35);
}
.brand-logo.small { width:38px; height:38px; margin:0; border-radius:10px; font-size:13px; }
.login-brand h1 { font-size:22px; font-weight:700; }
.login-sub { color:var(--text-secondary); font-size:13px; margin-top:6px; }
.login-form .form-group { margin-bottom:16px; }
.login-tabs{ display:flex; gap:8px; margin-bottom:18px; border-bottom:1px solid var(--border); }
.login-tab{ flex:1; padding:9px 0; border:none; background:transparent; color:var(--text-secondary); font-size:14px; font-weight:600; cursor:pointer; border-bottom:2px solid transparent; transition:.2s var(--ease-apple); }
.login-tab:hover{ color:var(--text); }
.login-tab.active{ color:var(--primary); border-bottom-color:var(--primary); }
.login-form label { display:block; font-size:13px; font-weight:600; margin-bottom:6px; }
.login-form input {
  width:100%; padding:10px 14px; border:1px solid var(--border); border-radius:var(--radius-sm);
  font-size:14px; outline:none; transition:border-color .15s, box-shadow .15s;
  font-family:inherit; background:var(--bg-3); color:var(--text);
}
.login-form input:focus { border-color:var(--primary); box-shadow:0 0 0 4px var(--accent-soft); }
.login-error {
  background:var(--danger-soft); color:var(--danger);
  border:1px solid var(--danger-soft); border-radius:var(--radius-sm);
  padding:8px 12px; font-size:13px; margin-bottom:14px; text-align:center;
}

/* ============================================================
   应用外壳
   ============================================================ */
#app { display:flex; height:100vh; overflow:hidden; }

#sidebar {
  width:232px; min-width:232px; background:linear-gradient(180deg, #eef4ff 0%, #e0ecff 60%, #dbeafe 100%); color:var(--sidebar-text);
  border-right:1px solid rgba(37,99,235,.14);
  display:flex; flex-direction:column; padding:20px 14px;
}
.sidebar-brand { display:flex; align-items:center; gap:12px; padding:4px 8px 18px; border-bottom:1px solid rgba(37,99,235,.14); margin-bottom:18px; }
.brand-text { min-width:0; }
.brand-name { color:var(--text); font-size:14px; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.brand-user { font-size:12px; color:var(--sidebar-text); opacity:.8; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

#sidebar-nav { display:flex; flex-direction:column; gap:4px; flex:1; }
.tab-btn {
  background:none; border:none; color:var(--sidebar-text); text-align:left;
  padding:10px 14px; border-radius:8px; font-size:14px; cursor:pointer;
  transition:background .15s, color .15s; font-family:inherit; width:100%;
}
.tab-btn:hover { background:var(--accent-soft); color:var(--accent); }
.tab-btn.active { background:var(--accent-soft); color:var(--accent); font-weight:600; }
.tab-btn.logout { border-top:1px solid var(--border); border-radius:0; margin-top:8px; padding-top:14px; }
.tab-btn.logout:hover { color:var(--danger); }

#content { flex:1; overflow-y:auto; padding:28px 32px 48px; }
.tab-content { display:none; }
.tab-content.active { display:block; }

/* ============================================================
   概览
   ============================================================ */
.rag-status {
  display:inline-flex; align-items:center; gap:8px;
  padding:6px 14px; border-radius:999px; font-size:13px; font-weight:600;
}
.rag-status.online { background:var(--success-soft); color:var(--success); }
.rag-status.offline { background:var(--danger-soft); color:var(--danger); }
.rag-status .dot { width:8px; height:8px; border-radius:50%; background:currentColor; box-shadow:0 0 0 3px rgba(0,0,0,.06); }

.sub-card {
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
  padding:18px 22px; margin-bottom:20px; box-shadow:var(--shadow-sm);
}
.sub-card .sub-main { min-width:0; flex:1; }
.sub-card .sub-name { font-size:17px; font-weight:700; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.sub-card .sub-meta { display:flex; gap:26px; flex-wrap:wrap; margin-top:8px; font-size:13px; }
.sub-meta-item { display:flex; align-items:baseline; gap:6px; }
.sub-meta-item span { color:var(--text-secondary); font-size:12px; }
.sub-meta-item b { font-size:14px; }
.sub-card.sub-none { background:var(--card); border:1px dashed var(--border); box-shadow:none; }
.sub-card.sub-none .sub-name { color:var(--text-secondary); font-size:15px; }
.sub-tip { color:var(--text-secondary); font-size:12.5px; margin-top:4px; }
.sub-actions { display:flex; gap:8px; flex-wrap:wrap; }

/* 试用态（2026-08-12 Wave 3）：绿色横幅「免费体验中 · 至 MM-DD」+ 卡片绿色描边 */
.sub-card.sub-trial { border-color:var(--success); background:linear-gradient(180deg,var(--success-soft) 0%,var(--card) 70%); }
.trial-banner {
  display:inline-flex; align-items:center; gap:6px;
  background:var(--success-soft); color:var(--success);
  border:1px solid var(--success-soft); border-radius:999px; padding:4px 14px;
  font-size:13px; font-weight:700;
}

/* ---------- 升级套餐 ---------- */
.upgrade-tip {
  background:var(--primary-soft); border:1px solid var(--accent-soft); border-radius:var(--radius-sm);
  padding:10px 14px; margin-bottom:16px; font-size:13px; color:var(--text-secondary);
}
.upgrade-tip strong { color:var(--primary); }
.upgrade-arrow { color:var(--text-secondary); margin:0 4px; }
.upgrade-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.upgrade-card {
  display:flex; flex-direction:column; gap:10px;
  border:1px solid var(--border); border-radius:var(--radius);
  padding:14px 16px; background:var(--bg-2);
  transition:border-color .15s, box-shadow .15s;
}
.upgrade-card:hover { border-color:var(--primary); box-shadow:var(--shadow-sm); }
.upgrade-head { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.upgrade-name { font-size:15px; font-weight:700; }
.upgrade-price { font-size:16px; font-weight:700; color:var(--primary); white-space:nowrap; }
.upgrade-mode {
  align-self:flex-start; font-size:12px; color:var(--primary);
  background:var(--primary-soft); border:1px solid var(--accent-soft); border-radius:999px; padding:2px 10px;
}
.upgrade-meta { display:flex; gap:6px; flex-wrap:wrap; font-size:12px; color:var(--text-secondary); }
.upgrade-meta span { background:var(--bg-3); border-radius:6px; padding:3px 8px; }

.info-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px 18px; margin-bottom:16px; }
.info-item { display:flex; flex-direction:column; gap:3px; }
.info-label { font-size:12px; color:var(--text-secondary); }
.info-item span:last-child { font-size:14px; }

@media (max-width: 640px) {
  .upgrade-grid { grid-template-columns:1fr; }
  .info-grid { grid-template-columns:1fr; }
}

.plan-card {
  background:var(--card);
  border:1px solid var(--border); border-radius:14px; padding:24px 28px; color:var(--text);
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  margin-bottom:20px; box-shadow:var(--shadow-md);
}
.plan-name { font-size:18px; font-weight:700; color:var(--text); display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.plan-name .badge { font-size:12px; }
.plan-meta { display:flex; gap:28px; flex-wrap:wrap; font-size:13px; }
.plan-meta b { color:var(--text); font-size:15px; margin-left:4px; }
.plan-meta .meta-item span { color:var(--text-muted); font-size:12px; }

.quota-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:16px; margin-bottom:24px; }
.quota-card {
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
  padding:18px 20px; box-shadow:var(--shadow-sm); transition:box-shadow .15s, transform .15s;
}
.quota-card:hover { box-shadow:var(--shadow-md); transform:translateY(-2px); }
.quota-title { font-size:13px; color:var(--text-secondary); display:flex; align-items:center; gap:6px; }
.quota-value { font-size:22px; font-weight:700; margin:8px 0 10px; }
.quota-value .unit { font-size:13px; font-weight:500; color:var(--text-secondary); margin-left:4px; }

.progress { height:6px; background:var(--border-strong); border-radius:999px; overflow:hidden; }
.progress-fill { height:100%; border-radius:999px; transition:width .4s ease; }
.progress-label { font-size:12px; color:var(--text-secondary); margin-top:6px; }

/* 2026-08-11 企业专属工作台链接（人工客服 tab）：链接展示 + 复制按钮 */
.wb-link-row { display:flex; align-items:center; gap:10px; margin-top:10px; }
.wb-link-url {
  flex:1; min-width:0;
  background:var(--bg); border:1px solid var(--border); border-radius:var(--radius-sm);
  padding:8px 12px; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}

.section-title { font-size:16px; font-weight:700; margin-bottom:12px; display:flex; align-items:center; gap:8px; }
.ws-overview-list { display:flex; flex-direction:column; gap:8px; }
.ws-overview-item {
  display:flex; align-items:center; gap:12px;
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
  padding:12px 16px; transition:border-color .15s;
}
.ws-overview-item:hover { border-color:var(--primary); }
.ws-overview-item .ws-icon {
  width:34px; height:34px; border-radius:9px; flex-shrink:0;
  background:var(--primary-soft); color:var(--primary);
  display:flex; align-items:center; justify-content:center; font-size:15px;
}
.ws-overview-item .ws-info { flex:1; min-width:0; }
.ws-overview-item .ws-tenant { font-family:var(--mono); font-size:12px; color:var(--text-secondary); word-break:break-all; }
.ws-overview-item .ws-count { font-size:13px; color:var(--text-secondary); white-space:nowrap; }

/* ---------- 订阅历史（2026-08-11 UX 新增） ---------- */
.sub-history-card {
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
  margin-bottom:20px; box-shadow:var(--shadow-sm); overflow:hidden;
}
.sub-history-head {
  display:flex; align-items:center; gap:10px; padding:14px 20px; cursor:pointer;
  user-select:none; transition:background .15s;
}
.sub-history-head:hover { background:var(--bg-2); }
.sub-history-title { font-size:15px; font-weight:700; }
.sub-history-count { font-size:12px; color:var(--text-secondary); margin-left:auto; }
.sub-history-caret { font-size:12px; color:var(--text-secondary); transition:transform .2s ease; }
.sub-history-card.collapsed .sub-history-caret { transform:rotate(-90deg); }
.sub-history-body { border-top:1px solid var(--border); padding:8px 20px 16px; }
.sub-history-list { display:flex; flex-direction:column; gap:8px; }
.sub-history-item {
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  background:var(--bg-2); border:1px solid var(--border); border-radius:var(--radius-sm);
  padding:10px 14px;
}
.sh-name { font-weight:600; font-size:13.5px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.sh-meta { display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--text-secondary); margin-left:auto; flex-wrap:wrap; }
.sh-arrow { color:var(--border-strong); }
.sh-price { font-weight:600; color:var(--primary); white-space:nowrap; }

/* ============================================================
   知识库
   ============================================================ */
.ws-card {
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
  margin-bottom:14px; overflow:hidden; box-shadow:var(--shadow-sm); transition:box-shadow .15s;
}
.ws-card:hover { box-shadow:var(--shadow-md); }
.ws-card-header {
  display:flex; align-items:center; gap:14px; padding:16px 20px; flex-wrap:wrap;
}
.ws-card-main { flex:1; min-width:200px; }
.ws-card-title { font-weight:600; font-size:14px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.ws-card-title .ws-short { font-family:var(--mono); font-size:13px; color:var(--primary); }
.ws-card-title .docs-count { font-size:12px; color:var(--text-secondary); }
.ws-card-sub { font-family:var(--mono); font-size:11px; color:var(--text-secondary); margin-top:2px; word-break:break-all; }
.ws-card-actions { display:flex; gap:6px; flex-wrap:wrap; }

.ws-docs-area { border-top:1px solid var(--border); padding:8px 20px 20px; background:var(--bg-2); }
.ws-docs-empty { text-align:center; padding:24px; color:var(--text-secondary); font-size:13px; }

table.docs-table { width:100%; border-collapse:collapse; margin-top:12px; }
.docs-table th, .docs-table td { padding:10px 12px; text-align:left; border-bottom:1px solid var(--border); font-size:13px; vertical-align:middle; }
.docs-table th { font-weight:600; color:var(--text-secondary); font-size:12px; white-space:nowrap; background:var(--bg-3); }
.docs-table tr:last-child td { border-bottom:none; }
.docs-table tr:hover td { background:var(--bg-2); }
.docs-table .doc-name { max-width:280px; word-break:break-all; }
.docs-table .row-actions { display:flex; gap:6px; white-space:nowrap; }
/* 文档列表排序表头：可点击，当前排序列高亮 */
.docs-table .ws-sort-th { cursor:pointer; user-select:none; color:var(--text-secondary); }
.docs-table .ws-sort-th:hover { color:var(--primary); }
.docs-table .ws-sort-th.active { color:var(--primary); }
/* 文档列表分页栏 */
.ws-pager { display:flex; align-items:center; gap:10px; margin-top:12px; flex-wrap:wrap; }
.ws-pager-info { font-size:12px; color:var(--text-secondary); margin-right:auto; }
.ws-pager-size { padding:6px 10px; border:1px solid var(--border); border-radius:var(--radius-sm); font-size:12px; background:var(--card); color:var(--text); cursor:pointer; }

.file-input-wrap { position:relative; }
.file-input-wrap input[type="file"] {
  position:absolute; inset:0; opacity:0; cursor:pointer; width:100%; height:100%;
}
.file-input-box {
  border:2px dashed var(--border); border-radius:var(--radius);
  padding:26px 16px; text-align:center; cursor:pointer; transition:border-color .15s, background .15s;
}
.file-input-box:hover { border-color:var(--primary); background:var(--primary-soft); }
.file-input-box .fi-icon { font-size:26px; margin-bottom:6px; }
.file-input-box .fi-name { font-weight:600; font-size:13px; word-break:break-all; }
.file-input-box .fi-hint { color:var(--text-secondary); font-size:12px; margin-top:4px; }
.file-input-box .fi-size { color:var(--text-secondary); font-size:12px; margin-top:2px; }

.doc-preview {
  background:var(--bg-2); border:1px solid var(--border); border-radius:var(--radius-sm);
  padding:14px 16px; max-height:56vh; overflow-y:auto;
  font-family:var(--mono); font-size:12.5px; white-space:pre-wrap; word-break:break-word;
  line-height:1.7;
}

/* ============================================================
   客服链接
   ============================================================ */
.links-table-wrap { background:var(--card); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-sm); }
table.links-table { width:100%; border-collapse:collapse; }
.links-table th, .links-table td { padding:12px 14px; text-align:left; border-bottom:1px solid var(--border); font-size:13px; vertical-align:middle; }
.links-table th { background:var(--bg-3); font-weight:600; color:var(--text-secondary); font-size:12px; white-space:nowrap; }
.links-table tr:last-child td { border-bottom:none; }
.links-table tbody tr:hover td { background:var(--bg-2); }
.link-code-cell { display:flex; align-items:center; gap:6px; }
.link-code { font-family:var(--mono); color:var(--primary); font-size:13px; }
.link-actions { display:flex; gap:6px; white-space:nowrap; }
.link-url-tip { font-size:11px; color:var(--text-secondary); margin-top:2px; }

/* ============================================================
   会话处理 / 开场白模板
   ============================================================ */
.fb-total { font-size:13px; color:var(--text-secondary); }

.filter-chips { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:16px; }
.chip {
  padding:6px 16px; border:1px solid var(--border); border-radius:999px;
  background:var(--card); color:var(--text-secondary); font-size:13px; font-weight:500;
  cursor:pointer; transition:all .15s ease; font-family:inherit;
}
.chip:hover { border-color:var(--primary); color:var(--primary); }
.chip.active { background:var(--primary); border-color:var(--primary); color:#fff; font-weight:600; }

.fb-list { display:flex; flex-direction:column; gap:10px; }
.fb-item {
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
  padding:14px 18px; box-shadow:var(--shadow-sm); transition:border-color .15s, box-shadow .15s;
}
.fb-item:hover { border-color:var(--primary); box-shadow:var(--shadow-md); }
.fb-item-head { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:8px; }
.fb-badges { display:flex; gap:6px; flex-wrap:wrap; }
.badge-up { background:var(--success-soft); color:var(--success); }
.badge-down { background:var(--danger-soft); color:var(--danger); }
.badge-auto { background:var(--info-soft); color:var(--info); }
.fb-link-name { font-size:12.5px; color:var(--primary); }
.fb-visitor { font-size:12.5px; color:var(--text); background:var(--bg-2); border:1px solid var(--border); border-radius:6px; padding:1px 7px; }
.fb-time { font-size:12px; color:var(--text-secondary); margin-left:auto; white-space:nowrap; }
.fb-msg {
  font-size:13.5px; line-height:1.6; color:var(--text);
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.fb-item-foot { margin-top:10px; display:flex; justify-content:flex-end; }
.leads-list { display:flex; flex-direction:column; gap:10px; }
.lead-item {
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
  padding:12px 18px; box-shadow:var(--shadow-sm); transition:border-color .15s, box-shadow .15s;
}
.lead-item:hover { border-color:var(--primary); box-shadow:var(--shadow-md); }
.lead-head { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:6px; }
.lead-name { font-size:14px; font-weight:600; color:var(--text); }
.lead-phone { font-size:13px; color:var(--text); background:var(--bg-2); border:1px solid var(--border); border-radius:6px; padding:1px 7px; }
.lead-meta { font-size:12px; color:var(--text-secondary); }
.fb-summary {
  max-width:360px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  color:var(--text-secondary); font-size:13px;
}
.fb-time-cell { white-space:nowrap; }

.fb-info-head { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:14px; }
.fb-section-label {
  font-size:12.5px; font-weight:600; color:var(--text-secondary);
  margin:14px 0 6px;
}
.fb-reason {
  background:var(--warning-soft); border:1px solid var(--warning-soft); border-radius:var(--radius-sm);
  padding:10px 14px; font-size:13px; line-height:1.7; color:var(--warning); white-space:pre-wrap; word-break:break-word;
}
.transcript {
  display:flex; flex-direction:column; gap:10px;
  background:var(--bg-2); border:1px solid var(--border); border-radius:var(--radius-sm);
  padding:12px; max-height:38vh; overflow-y:auto;
}
.transcript-item { display:flex; flex-direction:column; gap:3px; max-width:88%; }
.transcript-item .t-role { font-size:11px; font-weight:600; color:var(--text-secondary); }
.transcript-item.user { align-self:flex-start; }
.transcript-item.assistant { align-self:flex-end; align-items:flex-end; }
.transcript-item .t-content {
  font-size:13px; line-height:1.65; white-space:pre-wrap; word-break:break-word;
  background:var(--card); border:1px solid var(--border); border-radius:10px;
  padding:8px 12px;
}
.transcript-item.assistant .t-content { background:var(--primary-soft); border-color:var(--accent-soft); }
.transcript-item .t-time { font-size:11px; color:var(--text-secondary); }

#modal-box textarea, #modal-box select {
  width:100%; padding:9px 12px; border:1px solid var(--border); border-radius:var(--radius-sm);
  font-size:14px; outline:none; font-family:inherit; transition:border-color .15s, box-shadow .15s;
  background:var(--card); color:var(--text);
}
#modal-box textarea { resize:vertical; line-height:1.6; }
#modal-box textarea:focus, #modal-box select:focus { border-color:var(--primary); box-shadow:0 0 0 4px var(--accent-soft); }

/* ============================================================
   模态框
   ============================================================ */
#modal-overlay {
  position:fixed; inset:0; background:var(--modal-overlay); z-index:1000;
  display:flex; align-items:center; justify-content:center; padding:20px;
  backdrop-filter:blur(8px);
}
/* 爬取合规承诺全文弹层：叠加在爬取弹窗之上，不影响爬取表单输入状态 */
#fs-compliance-overlay {
  position:fixed; inset:0; background:var(--modal-overlay); z-index:2000;
  display:flex; align-items:center; justify-content:center; padding:20px;
  backdrop-filter:blur(8px);
}
#fs-compliance-box {
  background:var(--card); border-radius:14px; padding:22px 24px; width:min(560px,92vw);
  max-height:70vh; overflow:auto; box-shadow:0 24px 64px rgba(2,6,23,.35);
}
#modal-box {
  background:var(--bg-2); border-radius:20px; padding:26px 28px;
  width:100%; max-width:560px; max-height:84vh; overflow-y:auto;
  box-shadow:var(--shadow-lg);
  animation:modalIn .18s ease;
}
@keyframes modalIn { from { opacity:0; transform:translateY(12px) scale(.98); } to { opacity:1; transform:none; } }
#modal-box h3 { font-size:17px; font-weight:700; margin-bottom:20px; }
#modal-box .form-group { margin-bottom:16px; }
#modal-box label { display:block; font-size:13px; font-weight:600; margin-bottom:6px; }
#modal-box input[type="text"], #modal-box input[type="password"], #modal-box input[type="url"] {
  width:100%; padding:9px 12px; border:1px solid var(--border); border-radius:var(--radius-sm);
  font-size:14px; outline:none; font-family:inherit; transition:border-color .15s, box-shadow .15s;
}
#modal-box input:focus { border-color:var(--primary); box-shadow:0 0 0 4px var(--accent-soft); }
.form-hint { font-size:12px; color:var(--text-secondary); margin-top:4px; }

/* ===== 全站爬取：起始 URL（2026-08-22）——对齐 #modal-box input 标准样式 ===== */
.fs-url-wrap .fs-url-input {
  position:relative;
}
.fs-url-input .fs-url-icon {
  position:absolute; left:12px; top:50%; transform:translateY(-52%);
  font-size:15px; line-height:1; color:var(--text-muted); pointer-events:none;
}
#modal-box #fs-url { padding-left:38px; } /* 给 🔗 图标腾出空间 */
.fs-url-hint.invalid { color:var(--danger); }
#modal-box #fs-url.invalid {
  border-color:var(--danger);
  box-shadow:0 0 0 3px rgba(220,38,38,.15);
}
.fs-url-hint { transition:color .15s; }
.fs-url-hint.invalid { color:var(--danger); }

.ws-check-list {
  border:1px solid var(--border); border-radius:var(--radius-sm);
  max-height:220px; overflow-y:auto; padding:6px;
}
.ws-check-item {
  display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:6px; cursor:pointer;
}
.ws-check-item:hover { background:var(--bg-2); }
.ws-check-item input[type="checkbox"] { width:16px; height:16px; accent-color:var(--primary); flex-shrink:0; }
.ws-check-item .mono { flex:1; }
.ws-check-item em { font-style:normal; font-size:12px; color:var(--text-secondary); white-space:nowrap; }
/* 链接表单：未启用的知识库不可勾选（停用空间不能绑定） */
.ws-check-item.ws-check-disabled { opacity:.55; cursor:not-allowed; }
.ws-check-item.ws-check-disabled:hover { background:transparent; }
.ws-check-item .ws-off-tag { color:var(--warning); font-weight:600; }
/* 知识库空间启用/停用开关（卡片头部） */
.ws-enable-toggle {
  display:inline-flex; align-items:center; gap:6px; cursor:pointer; user-select:none; margin-right:4px;
}
.ws-enable-toggle input { position:absolute; opacity:0; width:0; height:0; }
.ws-enable-toggle .slider {
  width:34px; height:18px; border-radius:999px; background:var(--border-strong); position:relative;
  transition:background .2s; flex-shrink:0;
}
.ws-enable-toggle .slider::after {
  content:''; position:absolute; top:2px; left:2px; width:14px; height:14px; border-radius:50%;
  background:#fff; transition:transform .2s;
}
.ws-enable-toggle input:checked + .slider { background:var(--success); }
.ws-enable-toggle input:checked + .slider::after { transform:translateX(16px); }
.ws-enable-toggle em { font-style:normal; font-size:12px; color:var(--text-secondary); }
.ws-enable-toggle.off em { color:var(--warning); }

/* ---------- 人工客服 / 留言 ---------- */
.ag-dot {
  display:inline-block; width:8px; height:8px; border-radius:50%;
  background:var(--border-strong); margin-right:6px; vertical-align:middle; flex-shrink:0;
}
.ag-dot.on { background:var(--success); box-shadow:0 0 0 3px rgba(22,163,74,.15); }
.lm-contact { font-size:12.5px; color:var(--text-secondary); margin-bottom:2px; }

/* ============================================================
   响应式
   ============================================================ */
@media (max-width: 860px) {
  #sidebar { width:64px; min-width:64px; padding:16px 8px; }
  .sidebar-brand { justify-content:center; padding:4px 0 14px; }
  .brand-text { display:none; }
  .brand-logo.small { margin:0; }
  .tab-btn { text-align:center; padding:10px 4px; font-size:0; }
  .tab-btn::first-letter { font-size:14px; }
  .tab-btn.active::after { content:""; }
  #content { padding:20px 16px 40px; }
}

/* 2026-08-11 人工客服启动开关（switch） */
.ag-switch { position:relative; display:inline-block; width:34px; height:18px; vertical-align:middle; cursor:pointer; }
.ag-switch input { opacity:0; width:0; height:0; }
.ag-switch-slider { position:absolute; inset:0; background:var(--border); border-radius:999px; transition:.2s; }
.ag-switch-slider::before { content:""; position:absolute; width:14px; height:14px; left:2px; top:2px; background:var(--card); border-radius:50%; transition:.2s; }
.ag-switch input:checked + .ag-switch-slider { background:var(--primary); }
.ag-switch input:checked + .ag-switch-slider::before { transform:translateX(16px); }
.ag-switch input:disabled + .ag-switch-slider { opacity:.4; cursor:not-allowed; }
.ag-switch-label { font-size:12px; margin-left:4px; color:var(--text-secondary); }
.ag-switch-label.on { color:var(--success); }

/* ---------- 客服链接 · 对外联系方式（2026-08-11） ---------- */
#fl-contact-rows { display:flex; flex-direction:column; gap:10px; }
.contact-row { display:flex; gap:8px; align-items:flex-end; flex-wrap:wrap; }
/* 字段栈：可见小 label（类型/用途/联系方式） + input；窄屏自动 wrap 换行 */
.contact-field { display:flex; flex-direction:column; gap:2px; min-width:0; }
.contact-tiny { font-size:11px; color:var(--text-3); line-height:1.3; padding-left:2px; }
/* select/input/del 统一高度 + 内边距；浏览器原生 select 默认外观差异较大 */
.contact-row select,
.contact-row input {
  height:38px; box-sizing:border-box; font-size:13px; font-family:inherit;
  padding:0 10px; border:1px solid var(--border); border-radius:var(--radius-sm);
  background:var(--card); color:var(--text); outline:none;
  transition:border-color .15s, box-shadow .15s;
}
.contact-row select { width:88px; flex-shrink:0; padding-right:24px; }
.contact-row input { min-width:0; }
.contact-row select:focus,
.contact-row input:focus { border-color:var(--primary); box-shadow:0 0 0 4px var(--accent-soft); }
.contact-row .cc-field-type { width:104px; flex-shrink:0; }
.contact-row .cc-field-label { flex:0 0 160px; width:160px; }
.contact-row .cc-field-value { flex:1 1 220px; min-width:160px; }
/* 删除按钮：固定宽高 + flex 居中字符，避免 Unicode ✕ 渲染差异导致行高错位 */
.contact-row .cc-del {
  flex-shrink:0; width:38px; height:38px; padding:0;
  display:flex; align-items:center; justify-content:center;
  font-size:18px; line-height:1;
}
.contact-add {
  display:flex; align-items:center; justify-content:center; gap:6px;
  width:100%; margin-top:10px; padding:8px 12px;
  border:1px dashed var(--primary); border-radius:var(--radius-sm);
  background:var(--primary-soft); color:var(--primary);
  font-size:13px; font-weight:500; cursor:pointer; font-family:inherit;
  transition:all .15s ease;
}
.contact-add:hover { background:var(--accent-soft); border-color:var(--primary-hover); color:var(--primary-hover); }
.lm-switch-row { display:flex; align-items:center; gap:4px; min-height:24px; }

/* ============================================================
   会话处理 · 客服筛选 / 会话评价（2026-08-15）
   ============================================================ */
.agent-filter-row { display:flex; align-items:center; gap:8px; margin-bottom:14px; flex-wrap:wrap; }
.agent-filter-label { font-size:13px; color:var(--text-secondary); font-weight:600; }
.agent-filter {
  min-width:180px; padding:7px 12px; border:1px solid var(--border); border-radius:var(--radius-sm);
  font-size:13px; font-family:inherit; background:var(--card); color:var(--text); outline:none;
  transition:border-color .15s, box-shadow .15s;
}
.agent-filter:focus { border-color:var(--primary); box-shadow:0 0 0 4px var(--accent-soft); }
.agent-badge {
  display:inline-flex; align-items:center; gap:4px;
  background:var(--primary-soft); color:var(--primary);
  border:1px solid var(--accent-soft); border-radius:999px;
  padding:2px 10px; font-size:12px; font-weight:600;
}
.sess-rating {
  display:inline-flex; align-items:center; gap:4px;
  background:var(--info-soft); color:var(--info);
  border-radius:999px; padding:2px 10px; font-size:12px; font-weight:600;
}
.badge-eval { background:var(--info-soft); color:var(--info); }

.ws-desc { margin-top:6px; font-size:13px; color:var(--text-secondary); line-height:1.5; }

/* ================= 批量上传（2026-08-13 追加） ================= */
.up-quota-hint{ color:var(--text-secondary); font-size:12px; margin-top:8px; line-height:1.5; }
.up-quota-hint em{ font-style:normal; color:var(--primary); font-weight:600; }
.batch-file-list{ margin-top:10px; max-height:200px; overflow-y:auto; border:1px solid var(--border); border-radius:var(--radius-sm); }
.batch-file-item{ display:flex; align-items:center; gap:8px; padding:6px 10px; font-size:13px; border-bottom:1px solid var(--border); }
.batch-file-item:last-child{ border-bottom:none; }
.batch-file-item .bfi-name{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.batch-file-item .bfi-size{ color:var(--text-secondary); font-size:12px; flex-shrink:0; }
.batch-file-item .bfi-remove{ background:none; border:none; color:var(--text-secondary); cursor:pointer; font-size:15px; line-height:1; padding:2px 4px; flex-shrink:0; }
.batch-file-item .bfi-remove:hover{ color:var(--danger); }
.batch-file-item.fi-invalid{ background:var(--danger-soft); }
.batch-file-item.fi-invalid .bfi-name{ color:var(--danger); }

/* ================= 客服链接显示方式（2026-08-20 改版）================= */
/* 表单 4 形态卡片 + 主题色 + 左右分栏（左配置 / 右静态模拟预览 + 嵌入代码） */
.dm-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:6px; }
.dm-opt{ text-align:left; padding:12px 14px; border:1.5px solid var(--border); border-radius:var(--radius-sm); background:var(--card); cursor:pointer; display:flex; flex-direction:column; gap:4px; transition:border-color .2s, background .2s; }
.dm-opt:hover{ border-color:var(--accent); }
.dm-opt.on{ border-color:var(--accent); background:var(--accent-soft); }
.dm-opt b{ font-size:14px; color:var(--text); }
.dm-opt span{ font-size:12px; color:var(--text-muted); line-height:1.4; }
.dm-theme-row{ display:flex; align-items:center; gap:12px; margin-top:6px; flex-wrap:wrap; }
.dm-theme-row input[type=color]{ width:52px; height:36px; border:1px solid var(--border); border-radius:var(--radius-sm); padding:2px; background:var(--card); cursor:pointer; }
/* 客服链接表单：有效期开关 + 日期时间选择器（2026-08-20） */
.valid-switch-row{ display:flex; align-items:center; gap:8px; min-height:24px; }
.valid-switch-row .ag-switch-label{ margin-left:0; font-size:13px; }
.valid-dt-wrap{ margin-top:8px; }
.valid-dt-wrap input[type="datetime-local"]{
  width:100%; padding:9px 12px; border:1px solid var(--border); border-radius:var(--radius-sm);
  font-size:14px; font-family:inherit; color:var(--text); background:var(--card);
  outline:none; transition:border-color .15s, box-shadow .15s;
  -webkit-appearance:none; appearance:none;
}
.valid-dt-wrap input[type="datetime-local"]:focus{
  border-color:var(--primary); box-shadow:0 0 0 3px var(--accent-soft);
}
.valid-dt-wrap input[type="datetime-local"]::-webkit-calendar-picker-indicator{
  cursor:pointer; opacity:.55; transition:opacity .15s;
}
.valid-dt-wrap input[type="datetime-local"]::-webkit-calendar-picker-indicator:hover{ opacity:1; }
.valid-dt-wrap input[type="datetime-local"]::-webkit-datetime-edit{ color:var(--text); }
.valid-dt-wrap input[type="datetime-local"]:invalid::-webkit-datetime-edit{ color:var(--text-muted); }
.dm-hint{ margin:0; }
.dm-layout{ display:grid; grid-template-columns:minmax(0,1fr) 520px; gap:28px; align-items:start; }
.dm-left{ min-width:0; }
.dm-right{ position:sticky; top:0; display:flex; flex-direction:column; gap:14px; }
#modal-box:has(.dm-layout){ max-width:1320px; max-height:92vh; }
.dm-pv-head{ display:flex; align-items:center; gap:8px; font-size:14px; font-weight:600; color:var(--text); }
.dm-pv-head small{ font-size:12px; color:var(--text-muted); font-weight:400; }
.pv-dev-switch{ margin-left:auto; display:flex; background:var(--bg-2); border:1px solid var(--border); border-radius:999px; padding:2px; }
.pv-dev-btn{ border:0; background:transparent; padding:4px 14px; border-radius:999px; font-size:12px; color:var(--text-secondary); cursor:pointer; }
.pv-dev-btn.on{ background:var(--accent); color:#fff; font-weight:600; }
#dm-stage{ height:800px; }
.mock-stage{ position:relative; height:800px; background:var(--bg-3); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }
.mock-chat{ position:absolute; display:flex; flex-direction:column; background:var(--card); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow-md); overflow:hidden; }
.mock-head{ display:flex; align-items:center; gap:10px; padding:12px 14px; background:var(--mock-primary); background:linear-gradient(135deg, var(--mock-primary), color-mix(in srgb, var(--mock-primary) 72%, #fff)); color:var(--mock-on-primary, #fff); flex-shrink:0; }
.mock-avatar{ width:34px; height:34px; border-radius:50%; background:rgba(255,255,255,.28); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:15px; color:var(--mock-on-primary, #fff); flex-shrink:0; }
.mock-head-text{ min-width:0; display:flex; flex-direction:column; }
.mock-head-text b{ color:var(--mock-on-primary, #fff); font-size:14px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mock-head-text small{ color:var(--mock-on-primary, rgba(255,255,255,.88)); font-size:11px; }
.mock-body{ flex:1; padding:14px; overflow:hidden; background:var(--bg-2); }
.mock-msg.ai{ max-width:88%; padding:10px 12px; border-radius:12px 12px 12px 2px; background:var(--card); border:1px solid var(--border); font-size:12.5px; line-height:1.65; color:var(--text); white-space:pre-wrap; }
.mock-input{ display:flex; align-items:center; gap:8px; padding:10px 12px; border-top:1px solid var(--border); background:var(--card); flex-shrink:0; }
.mock-input-ph{ flex:1; font-size:12px; color:var(--text-muted); }
.mock-send{ padding:6px 14px; border-radius:999px; background:var(--mock-primary); color:var(--mock-on-primary, #fff); font-size:12px; flex-shrink:0; }
.mock-stage.mode-full .mock-chat{ inset:0; border:0; border-radius:0; }
.mock-stage.mode-fab .mock-chat{ right:84px; bottom:16px; width:min(340px, calc(100% - 100px)); height:720px; }
.mock-fab{ position:absolute; right:16px; bottom:16px; width:52px; height:52px; border-radius:50%; background:var(--mock-primary); color:var(--mock-on-primary, #fff); display:flex; align-items:center; justify-content:center; box-shadow:var(--shadow-md); z-index:1; cursor:pointer; transition:transform .15s var(--ease-apple); }
.mock-fab:hover{ transform:scale(1.06); }
.mock-stage.mode-fab .mock-fab svg{ width:24px; height:24px; }
.mock-stage.mode-button .mock-chat{ right:196px; bottom:16px; width:min(340px, calc(100% - 212px)); height:720px; }
.mock-capsule{ position:absolute; right:16px; bottom:16px; display:flex; align-items:center; gap:8px; padding:11px 20px; border-radius:999px; background:var(--mock-primary); color:var(--mock-on-primary, #fff); font-size:13px; font-weight:600; box-shadow:var(--shadow-md); cursor:pointer; transition:transform .15s var(--ease-apple); }
.mock-capsule:hover{ transform:scale(1.03); }
.mock-capsule svg{ width:18px; height:18px; }
.mock-stage.mode-bar .mock-chat{ left:14px; right:14px; bottom:76px; height:640px; }
.mock-bar{ position:absolute; left:14px; right:14px; bottom:12px; height:56px; display:flex; align-items:center; gap:10px; padding:0 14px; background:var(--mock-primary); border:1px solid transparent; border-radius:14px; box-shadow:var(--shadow-md); cursor:pointer; color:var(--mock-on-primary, #fff); }
.mock-bar-icon{ width:30px; height:30px; border-radius:50%; background:rgba(255,255,255,.22); color:var(--mock-on-primary, #fff); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.mock-bar-icon svg{ width:16px; height:16px; }
.mock-bar-title{ flex:1; font-weight:600; font-size:13px; color:var(--mock-on-primary, #fff); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mock-bar-arrow{ color:var(--mock-on-primary, #fff); font-size:20px; }
/* 悬浮/按钮/横条形态：面板默认收起，点击触发元素展开（预览交互效果） */
.mock-stage.mode-fab .mock-chat,
.mock-stage.mode-button .mock-chat,
.mock-stage.mode-bar .mock-chat{ display:none; }
.mock-stage.mode-fab.open .mock-chat,
.mock-stage.mode-button.open .mock-chat,
.mock-stage.mode-bar.open .mock-chat{ display:flex; }
/* 手机界面预览 */
.dm-right:has(.mock-phone-wrap) #dm-stage{ height:800px; }
.mock-phone-wrap{ display:flex; align-items:center; justify-content:center; }
.mock-device-phone{ position:relative; width:390px; height:760px; border-radius:44px; background:#1e293b; border:10px solid #1e293b; box-shadow:var(--shadow-lg); }
.mock-notch{ position:absolute; top:8px; left:50%; transform:translateX(-50%); width:120px; height:22px; background:#0f172a; border-radius:0 0 12px 12px; z-index:3; }
.mock-phone-screen{ position:absolute; inset:10px; border-radius:28px; overflow:hidden; background:var(--bg-2); }
.mock-phone-wrap .mock-chat{ position:absolute; border:0; border-radius:0; }
.mock-phone-wrap.mode-full .mock-chat{ inset:0; }
.mock-phone-wrap.mode-fab .mock-chat{ right:70px; bottom:14px; width:min(300px, calc(100% - 86px)); height:590px; }
.mock-phone-wrap.mode-fab .mock-fab{ right:12px; bottom:14px; width:48px; height:48px; }
.mock-phone-wrap.mode-button .mock-chat{ right:164px; bottom:14px; width:min(300px, calc(100% - 180px)); height:590px; }
.mock-phone-wrap.mode-bar .mock-chat{ left:10px; right:10px; bottom:64px; height:560px; }
.mock-phone-wrap.mode-bar .mock-bar{ left:10px; right:10px; bottom:8px; }
.dm-embed{ margin-top:2px; }
.dm-embed-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; font-size:13px; color:var(--text-secondary); }
.dm-embed pre{ background:var(--bg-2); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px; font-size:12px; overflow-x:auto; color:var(--text); font-family:var(--mono); margin:0; white-space:pre-wrap; word-break:break-all; }
@media (max-width:960px){
  .dm-layout{ grid-template-columns:1fr; }
  .dm-right{ position:static; }
}
@media (max-width:600px){
  .dm-grid{ grid-template-columns:1fr; }
  #dm-stage{ height:520px; }
  .mock-stage{ height:520px; }
  .dm-right:has(.mock-phone-wrap) #dm-stage{ height:680px; }
  .mock-device-phone{ width:340px; height:640px; }
  .mock-phone-wrap.mode-fab .mock-chat{ width:min(250px, calc(100% - 76px)); height:520px; }
  .mock-phone-wrap.mode-button .mock-chat{ width:min(250px, calc(100% - 160px)); height:520px; }
  .mock-phone-wrap.mode-bar .mock-chat{ height:480px; }
}

.sub-nav{
  display:flex; gap:4px; margin:0 0 16px;
  border-bottom:1px solid var(--border); padding-bottom:0;
}
.sub-nav-btn{
  background:none; border:none; padding:10px 16px;
  font-size:14px; color:var(--text-secondary); cursor:pointer;
  border-bottom:2px solid transparent; margin-bottom:-1px;
  transition:color .15s, border-color .15s; font-family:inherit;
  border-radius:0;
}
.sub-nav-btn:hover{ color:var(--accent); }
.sub-nav-btn.active{
  color:var(--accent); font-weight:600;
  border-bottom-color:var(--accent);
}
.link-sub-panel{ display:none; }
.link-sub-panel.active{ display:block; }

/* ---------- 加量包（2026-08-21） ---------- */
.topup-balance-card{ margin-bottom:16px; }
.topup-balance-num{ font-size:24px; font-weight:700; color:var(--accent); margin:8px 0 4px; }
.topup-balance-num strong{ font-size:34px; }
.topup-section{
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius);
  margin-bottom:24px; box-shadow:var(--shadow-sm); overflow:hidden;
}
.topup-section:hover{ box-shadow:var(--shadow-md); }
.topup-head{ display:flex; align-items:center; gap:14px; cursor:pointer; flex-wrap:wrap; padding:18px 20px; }
.topup-head .card-title{
  font-size:16px; font-weight:700; color:var(--text); margin:0;
  display:flex; align-items:center; gap:8px;
}
.topup-head-stats{ font-size:13px; color:var(--text-secondary); display:flex; align-items:center; gap:6px; }
.topup-head-stats strong{ font-size:20px; color:var(--accent); margin-right:2px; }
.topup-toggle{
  font-size:13px; color:var(--accent); white-space:nowrap; margin-left:2px;
  background:var(--accent-soft); padding:4px 10px; border-radius:999px; transition:background .15s;
}
.topup-toggle:hover{ background:var(--accent); color:var(--card); }
.topup-body{ margin-top:0; border-top:1px solid var(--border); padding:18px 20px; }
.topup-body .field-hint{ margin-bottom:12px; }
.topup-product-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:14px; margin-bottom:20px; }
.topup-product-card{
  background:var(--card-strong); border:1px solid var(--border); border-radius:var(--radius);
  padding:18px; display:flex; flex-direction:column; transition:box-shadow .15s, transform .15s;
}
.topup-product-card:hover{ box-shadow:var(--shadow-md); transform:translateY(-2px); }
.topup-product-card .card-title{ font-size:15px; font-weight:700; color:var(--text); margin:0 0 4px; }
.topup-product-count{ font-size:15px; margin:6px 0 2px; }
.topup-product-count strong{ font-size:22px; color:var(--accent); }
.topup-product-price{ font-size:18px; font-weight:600; margin-bottom:12px; }

/* 从网站导入（2026-08-21） */
.crawl-mode-row{ display:flex; gap:10px; flex-wrap:wrap; }
.crawl-mode-opt{ flex:1; min-width:220px; display:flex; flex-direction:column; gap:2px; border:1px solid var(--border); border-radius:10px; padding:12px 14px; cursor:pointer; }
.crawl-mode-opt:has(input:checked){ border-color:var(--accent); background:var(--accent-soft); }
.crawl-mode-opt small{ color:var(--text-secondary); font-size:12px; }
.crawl-list{ max-height:340px; overflow-y:auto; border:1px solid var(--border); border-radius:10px; }
.crawl-item{ display:flex; align-items:center; gap:8px; padding:8px 12px; border-bottom:1px solid var(--border); cursor:pointer; font-size:13px; }
.crawl-item:last-child{ border-bottom:none; }
.crawl-item:hover{ background:var(--accent-soft); }
.crawl-item-t{ flex:1; }
.crawl-item-d{ color:var(--text-muted); font-size:12px; white-space:nowrap; }
.crawl-editor{ width:100%; font-family:var(--mono, monospace); font-size:13px; line-height:1.6; border:1px solid var(--border); border-radius:8px; padding:10px; resize:vertical; }
.crawl-review-list{ max-height:420px; overflow-y:auto; display:flex; flex-direction:column; gap:12px; }
.crawl-review-card{ border:1px solid var(--border); border-radius:10px; padding:10px 12px; }
.crawl-review-head{ display:flex; align-items:center; gap:8px; margin-bottom:8px; flex-wrap:wrap; }
.crawl-review-title{ font-weight:600; font-size:13px; flex:1; min-width:160px; }

/* 全站爬取（2026-08-21） */
.fs-mode-row{ display:flex; gap:10px; }
.fs-mode-opt{ flex:1; display:flex; flex-direction:column; padding:12px 14px; border:1px solid var(--border); border-radius:10px; cursor:pointer; background:var(--card); }
.fs-mode-opt:has(input:checked){ border-color:var(--accent); background:var(--accent-soft); }
.fs-mode-name{ font-weight:600; font-size:15px; margin-top:4px; }
.fs-mode-desc{ color:var(--text-secondary); font-size:12px; margin-top:3px; }
.fs-type-grid{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.fs-type-opt{ display:flex; flex-direction:column; padding:10px 12px; border:1px solid var(--border); border-radius:8px; cursor:pointer; }
.fs-type-opt:has(input:checked){ border-color:var(--accent); background:var(--accent-soft); }
.fs-type-name{ font-weight:600; font-size:14px; }
.fs-type-desc{ color:var(--text-secondary); font-size:12px; }
.fs-type-badge{ display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; background:var(--accent-soft); color:var(--accent); margin-right:6px; }
.fs-type-badge.fs-type-faq{ background:#dbeafe; color:#1e40af; }
.fs-type-badge.fs-type-product{ background:#fef3c7; color:#92400e; }
.fs-type-badge.fs-type-download{ background:#d1fae5; color:#065f46; }
.fs-type-badge.fs-type-contact{ background:#ede9fe; color:#5b21b6; }
.fs-type-badge.fs-type-policy{ background:#fee2e2; color:#991b1b; }
.fs-type-badge.fs-type-news{ background:#cffafe; color:#155e75; }
.fs-type-badge.fs-type-general{ background:var(--border); color:var(--text-secondary); }
.fs-progress{ display:flex; align-items:center; gap:16px; padding:20px; background:var(--accent-soft); border-radius:10px; margin-top:12px; }
.fs-progress-icon{ font-size:32px; }
.fs-progress-stage{ font-size:16px; font-weight:600; }
.fs-progress-detail{ font-size:13px; color:var(--text-secondary); margin-top:4px; }
.fs-progress-failed{ color:var(--danger); }
/* 全站爬取进度条（2026-08-24） */
.fs-progress-bar{ width:260px; height:8px; background:var(--border); border-radius:4px; overflow:hidden; margin-top:8px; }
.fs-progress-fill{ height:100%; background:var(--accent); border-radius:4px; transition:width .4s ease; }
.fs-progress-count{ font-size:12px; color:var(--text-secondary); margin-top:4px; }
/* 审核卡片下载链接（2026-08-24） */
.fs-download-links{ margin:8px 0 4px; padding:8px 10px; background:var(--accent-soft); border-radius:8px; }
.fs-dl-title{ font-size:12px; font-weight:600; color:var(--accent); margin-bottom:4px; }
.fs-dl-link{ display:inline-block; margin:2px 8px 2px 0; font-size:12.5px; color:var(--primary); text-decoration:none; border-bottom:1px dashed var(--primary); }
.fs-dl-link:hover{ opacity:.8; }
.fs-summary{ padding:12px; background:var(--bg-2); border-radius:8px; margin-bottom:12px; }
.fs-review-list{ display:flex; flex-direction:column; gap:12px; max-height:420px; overflow-y:auto; }
.fs-card{ border:1px solid var(--border); border-radius:10px; padding:12px; background:var(--card); }
.fs-card-head{ display:flex; align-items:center; gap:8px; margin-bottom:8px; flex-wrap:wrap; }
.fs-card-title{ flex:1; font-weight:600; font-size:14px; min-width:160px; }
.fs-editor{ width:100%; font-family:var(--mono, monospace); font-size:13px; line-height:1.5; border:1px solid var(--border); border-radius:6px; padding:8px; resize:vertical; }
.fs-card-meta{ font-size:11px; color:var(--text-muted); margin-top:6px; word-break:break-all; }
.fs-toggle-advanced{ font-size:12px; color:var(--text-secondary); margin:8px 0; cursor:pointer; }
.fs-toggle-advanced a{ cursor:pointer; color:var(--accent); }
.fs-advanced .form-row{ display:flex; gap:16px; align-items:center; }
.fs-advanced .form-row span{ display:flex; gap:6px; align-items:center; font-size:13px; }
.fs-advanced .form-row input{ width:80px; padding:4px 8px; border:1px solid var(--border); border-radius:6px; }

/* 全站爬取弹窗：加宽 + 头部 + 锁定关闭 */
#modal-box:has(.fs-modal){ max-width:760px; }
.fs-modal-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.fs-modal-head h3{ margin-bottom:0; }
.fs-modal-close{ background:none; border:none; font-size:18px; color:var(--text-secondary); cursor:pointer; padding:4px 8px; border-radius:6px; line-height:1; }
.fs-modal-close:hover{ background:var(--accent-soft); color:var(--accent); }
#modal-box.modal-locked .fs-progress-actions{ margin-top:14px; text-align:center; }
.fs-progress-actions .btn{ font-size:13px; }

/* ===== 知识库冲突检测（2026-08-24） ===== */
#modal-box:has(.conflict-list){ max-width:760px; }
.conflict-list{ display:flex; flex-direction:column; gap:12px; max-height:56vh; overflow:auto; padding-right:4px; }
.conflict-item{ border:1px solid var(--border); border-radius:var(--radius); padding:12px 14px; background:var(--bg-2); }
.conflict-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.conflict-entity{ font-size:14px; font-weight:700; color:var(--danger); }
.conflict-count{ font-size:12px; color:var(--text-secondary); background:var(--card); border:1px solid var(--border); border-radius:6px; padding:1px 8px; }
.conflict-desc{ margin-top:8px; padding-left:10px; border-left:2px solid var(--border-strong); }
.conflict-doc{ font-size:12px; color:var(--primary); display:block; margin-bottom:2px; }
.conflict-text{ font-size:13px; color:var(--text); line-height:1.6; }
.conflict-summary{ font-size:13.5px; color:var(--text); line-height:1.7; background:var(--card); border:1px solid var(--border); border-radius:8px; padding:10px 12px; }
.conflict-ok{ font-size:12px; color:var(--success); background:var(--success-soft); border-radius:6px; padding:1px 8px; }
.conflict-nonissue{ opacity:.75; }
.conflict-details{ margin-top:10px; }
.conflict-details summary{ font-size:12.5px; color:var(--primary); cursor:pointer; user-select:none; }
.conflict-chunk{ margin:8px 0; }
.conflict-chunk-doc{ font-size:12px; color:var(--primary); display:block; margin-bottom:2px; }
.conflict-chunk-text{ font-size:12.5px; color:var(--text-2); line-height:1.6; background:var(--card); border:1px solid var(--border); border-radius:6px; padding:6px 10px; white-space:pre-wrap; }
