/* ============ TenderWork · 采购智能体 ============ */
:root{
    --primary-blue:#0ea5e9;
    --dark-blue:#0284c7;
    --bg-blue:#e6f1fb;          /* 2026-10-15：随对话区改浅白底，原 #f0f9ff 在浅白底上几不可辨，加深一档保证蓝色强调态可见 */
    --border-blue:#bae6fd;
    --bg-app:#f6f9fc;  /* 2026-10-29：页面底色改为纯色（去掉渐变与装饰构型） */
    --text-main:#1e293b;
    --text-muted:#64748b;
    --line:#e2e8f0;
    --line-soft:#f1f5f9;
    --radius:6px;
    --shadow-sm:0 2px 4px rgba(0,0,0,.02);
    --shadow:0 10px 30px rgba(0,0,0,.05);
    /* 对话内容列宽：消息区 / 快捷标签 / 输入卡共用，保证左右边缘严格对齐。
       收窄到 720 可让输入卡与上方功能板件留出更多竖向余量（见 .composer-intro 注释） */
    --content-w:780px;
    --text-sub:#475569;
    /* 2026-10-27：舆情/标讯强调色并入 TenderWork 主色系（原科技蓝 #165DFF 系 → 主蓝 #0ea5e9 系），令牌名保留以兼容既有引用 */
    --news-accent:#0ea5e9;
    --news-accent-dark:#0284c7;
    --news-accent-bg:#e6f1fb;
    --news-shadow-sm:0 2px 8px rgba(0,0,0,.04);
    --news-shadow-md:0 4px 16px rgba(0,0,0,.06);
}

*{margin:0;padding:0;box-sizing:border-box;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Microsoft YaHei",sans-serif;}
body{display:flex;height:100vh;background:var(--bg-app);color:var(--text-main);overflow:hidden;}
button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea,select{font-family:inherit;font-size:inherit;color:inherit;outline:none}
svg{flex:none}
/* 通用线性图标：与文字混排时垂直对齐 */
.ico{display:inline-block;vertical-align:-.14em;flex:none;line-height:1}
.caret{vertical-align:-.05em;transition:transform .2s;opacity:.7}
/* 全局滚动条（v2026110512）：极窄极短——宽 6px、无箭头按钮、无轨道留缝，
   半透明圆角胶囊，弱化存在感减少视觉干扰 */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(100,116,139,.28);border-radius:10px;min-height:28px}
::-webkit-scrollbar-thumb:hover{background:rgba(100,116,139,.5)}
::-webkit-scrollbar-corner{background:transparent}
html{scrollbar-width:thin;scrollbar-color:rgba(100,116,139,.28) transparent}


/* ---------------- 后台：无权限提示横幅 ---------------- */
.admin-banner{display:flex;align-items:flex-start;gap:12px;margin:14px 0 4px;padding:13px 14px;border:1px solid #fde68a;background:#fffbeb;border-radius:12px;box-shadow:var(--shadow-sm)}
.admin-banner .ab-ico{flex:none;width:22px;height:22px;border-radius:50%;background:#f59e0b;color:#fff;font-weight:700;font-size:14px;line-height:22px;text-align:center}
.admin-banner .ab-body{flex:1;min-width:0}
.admin-banner .ab-title{font-weight:600;font-size:14px;color:#92400e;margin-bottom:3px}
.admin-banner .ab-text{font-size:12.6px;line-height:1.7;color:#78350f}
.admin-banner .ab-text b{color:#b45309;font-weight:600}
.admin-banner .ab-text code{background:#fef3c7;padding:1px 5px;border-radius:4px;font-size:12px;color:#92400e}
.admin-banner .ab-close{flex:none;border:1px solid #fcd34d;background:#fff;color:#92400e;font-size:12px;padding:5px 12px;border-radius:8px}
.admin-banner .ab-close:hover{background:#fef3c7}

/* ---------- 后台独立登录页（双因子） ---------- */
#viewAdminLogin.active{
  display:flex;position:fixed;inset:0;z-index:1000;padding:28px 18px;width:auto;max-width:none;height:auto;max-height:none;
  align-items:center;justify-content:center;overflow:auto;
  background:
    radial-gradient(720px 460px at 10% -12%, rgba(56,189,248,.30), transparent 62%),
    radial-gradient(860px 560px at 112% 118%, rgba(30,64,110,.60), transparent 64%),
    radial-gradient(520px 340px at 88% 6%, rgba(14,165,233,.16), transparent 60%),
    linear-gradient(155deg,#0b1526 0%,#12283f 52%,#0c3752 100%);
}
/* 背景网格：低调的蓝图质感，向下淡出 */
#viewAdminLogin.active::before{
  content:'';position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(148,197,255,.06) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(148,197,255,.06) 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(900px 620px at 50% 42%,#000 30%,transparent 78%);
          mask-image:radial-gradient(900px 620px at 50% 42%,#000 30%,transparent 78%);
}
/* 页脚署名 */
#viewAdminLogin.active::after{
  content:'TenderWork · 采购超级智能体 ｜ 安全后台';position:absolute;bottom:16px;left:0;right:0;
  text-align:center;color:rgba(255,255,255,.38);font-size:11.5px;letter-spacing:.5px;pointer-events:none;
}
.admin-login{width:100%;max-width:404px;padding:8px;box-sizing:border-box;position:relative;z-index:1}
@keyframes alRise{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
.al-card{
  position:relative;overflow:hidden;background:#fff;border-radius:6px;padding:34px 32px 28px;
  box-shadow:0 1px 0 rgba(255,255,255,.5) inset,0 30px 70px rgba(2,8,23,.5),0 6px 18px rgba(2,8,23,.35);
  animation:alRise .5s cubic-bezier(.22,.8,.3,1) both;
}
/* 顶部品牌色条 */
.al-card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg,#0ea5e9,#38bdf8 45%,#1e3a5f)}
.al-brand{display:flex;align-items:center;gap:13px;margin-bottom:14px}
.al-logo{
  flex:none;width:48px;height:48px;border-radius:50%;object-fit:cover;background:#fff;
  box-shadow:0 8px 18px rgba(14,165,233,.42),inset 0 1px 0 rgba(255,255,255,.35);
}
.al-title{font-size:18.5px;font-weight:700;color:#0f172a;letter-spacing:.2px}
.al-sub{font-size:12.3px;color:#7c8ba1;margin-top:3px;letter-spacing:.3px}
.al-tip{
  display:flex;align-items:flex-start;gap:9px;background:#f0f7ff;border:1px solid #dbeafe;
  border-radius:11px;padding:10px 12px;font-size:12.4px;line-height:1.66;color:#3c5a76;margin:0 0 18px;
}
.al-tip svg{flex:none;margin-top:2px}
.al-row{margin-bottom:15px}
.al-row .form-label{display:block;font-size:12.6px;color:#334155;margin-bottom:7px;font-weight:600;letter-spacing:.2px}
.al-row .form-input{
  width:100%;box-sizing:border-box;height:44px;padding:0 13px;border:1px solid #dce4ee;border-radius:10px;
  font-size:14px;outline:none;background:#f8fafc;transition:border-color .16s,box-shadow .16s,background .16s;
}
.al-row .form-input::placeholder{color:#aab7c8}
.al-row .form-input:focus{border-color:#38bdf8;background:#fff;box-shadow:0 0 0 3.5px rgba(14,165,233,.14)}
.al-code{display:flex;gap:9px}
.al-code .form-input{flex:1;min-width:0;letter-spacing:3px}
.al-code .btn-ghost{
  flex:none;white-space:nowrap;height:44px;border:1px solid #cfe4f6;border-radius:10px;
  background:linear-gradient(180deg,#ffffff,#f4fbff);color:#0284c7;font-size:13px;font-weight:500;
  padding:0 14px;transition:.16s;
}
.al-code .btn-ghost:hover{border-color:#7dd3fc;background:#f0f9ff}
.al-code .btn-ghost:disabled{opacity:.55;cursor:default;border-color:#dce4ee;background:#f8fafc}
.al-err{min-height:18px;font-size:12.5px;color:#dc2626;margin:-4px 0 10px;display:flex;align-items:center;gap:5px}
.al-submit{
  width:100%;height:46px;font-size:15px;font-weight:600;letter-spacing:4px;border-radius:11px;color:#fff;
  background:linear-gradient(135deg,#0ea5e9 0%,#0284c7 100%);
  box-shadow:0 10px 22px rgba(14,165,233,.34),inset 0 1px 0 rgba(255,255,255,.25);
  transition:transform .16s,box-shadow .16s,filter .16s;
}
.al-submit:hover{filter:brightness(1.06);transform:translateY(-1px);box-shadow:0 14px 28px rgba(14,165,233,.4)}
.al-submit:active{transform:translateY(0)}
.al-submit:disabled{opacity:.65;cursor:default;transform:none;box-shadow:0 6px 14px rgba(14,165,233,.2)}
.al-foot{font-size:11.5px;color:#94a3b8;text-align:center;margin:16px 0 0;padding-top:14px;border-top:1px dashed #e8eef6;line-height:1.9}
.al-back{color:#0ea5e9;text-decoration:none;font-size:12px;font-weight:500}
.al-back:hover{color:#0284c7;text-decoration:underline}
@media (max-height:720px){.al-card{padding:26px 28px 22px}.al-tip{margin-bottom:14px}.al-row{margin-bottom:12px}}
.admin-head-tools{margin-left:auto;display:flex;gap:8px;align-items:center}
.admin-who{font-size:12px;color:#64748b;margin-right:2px}

/* ---------------- 分段筛选（用户与会员） ---------------- */
.seg-filter{display:inline-flex;background:#f1f5f9;border-radius:9px;padding:3px;gap:2px}
.seg-filter .seg{border:none;background:transparent;color:#475569;font-size:12.6px;padding:5px 12px;border-radius:7px;cursor:pointer;transition:.15s}
.seg-filter .seg:hover{color:#0f172a}
.seg-filter .seg.on{background:#fff;color:#0ea5e9;font-weight:600;box-shadow:0 1px 2px rgba(15,23,42,.08)}

/* ---------------- 左侧边栏 ---------------- */
.sidebar{width:260px;flex:none;background:linear-gradient(180deg,#F0F9FF 0%,#E6F4FF 100%);border-right:1px solid #d6eaf4;display:flex;flex-direction:column;padding:14px 12px 10px;}
.logo-area{display:flex;align-items:center;gap:10px;font-weight:bold;font-size:18px;color:var(--text-main);margin-bottom:16px;padding-top:6px;line-height:1.3;font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB","Source Han Sans CN","WenQuanYi Micro Hei",sans-serif;}
/* Logo 图标：改为图片（圆形购物车 Logo，透明底），去掉原 T 字母的蓝底样式（v202610211） */
.logo-icon{width:34px;height:34px;border-radius:50%;background:none;display:block;object-fit:cover;flex:none;}
.logo-name{font-size:19px;font-weight:700;color:#0f2f55;letter-spacing:.3px;font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB","Source Han Sans CN","WenQuanYi Micro Hei",sans-serif;}
.logo-name b{font-weight:800;}
.logo-sub{display:block;font-size:11px;font-weight:normal;color:#475569;letter-spacing:.4px;margin-top:1px;font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB","Source Han Sans CN","WenQuanYi Micro Hei",sans-serif;}

.new-chat-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:11px;
  background:#fff;color:var(--primary-blue);border:1px solid #BAE0FF;border-radius:8px;font-weight:500;font-size:14px;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.02);}
.new-chat-btn:hover{background:var(--bg-blue);border-color:var(--primary-blue);}
.new-chat-btn span{font-size:14px;line-height:1}

.history-section{margin-top:16px;flex:1;overflow-y:auto;min-height:0;}
.history-title{font-size:12.5px;font-weight:600;color:var(--text-muted);margin-bottom:6px;display:flex;align-items:center;gap:5px;}
.history-list{display:flex;flex-direction:column;}

/* 历史任务时间分组（v202610284）：今天 / 近7天 / 更早，可折叠防止列表无限延伸 */
.hg{margin-bottom:2px;}
.hg-head{display:flex;align-items:center;gap:5px;padding:4px 5px;margin-top:2px;cursor:pointer;color:var(--text-muted);font-size:11px;user-select:none;border-radius:5px;}
.hg-head:hover{background:rgba(255,255,255,.4);}
.hg-head .ico{flex:none;transition:transform .15s;}
.hg.hg-collapsed .hg-head .ico{transform:rotate(-90deg);}
.hg-label{font-weight:600;}
.hg-count{margin-left:auto;background:rgba(148,163,184,.2);border-radius:9px;padding:0 6px;font-size:10px;line-height:15px;color:var(--text-muted);}
.hg-body{display:flex;flex-direction:column;}
.hg.hg-collapsed .hg-body{display:none;}

.history-item{padding:5px;border-radius:6px;cursor:pointer;font-size:12px;color:var(--text-main);margin-bottom:0;display:flex;align-items:center;gap:7px;}
/* 标题占满剩余宽度并截断，删除图标固定不收缩——标题再长也遮不住删除按钮（v202610284） */
.history-item > span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.history-item:hover{background:rgba(255,255,255,.45);}
.history-item.active{background:var(--bg-blue);color:var(--dark-blue);font-weight:500;}
.history-item .hi-del{flex:none;margin-left:auto;opacity:0;color:var(--text-muted);font-size:12px;padding:2px 4px;border-radius:4px;display:inline-flex;align-items:center}
.history-item:hover .hi-del{opacity:1}
.history-item .hi-del:hover{color:#dc2626;background:#fef2f2}

/* 推广区（v202610281）：与历史任务换位后上移至「新建任务」下方 */
.sidebar-promo{display:flex;flex-direction:column;gap:2px;padding-top:14px;flex:none;}
/* 账号/会员合并板件区（v202610281）：推广区上移后仅剩本板件，border-top 作与历史任务的分隔 */
.sidebar-footer{border-top:1px solid #d6eaf4;padding-top:10px;display:flex;flex-direction:column;gap:2px;flex:none;}
/* 侧栏底部账号/会员区与上方板件之间的极浅分割线（v202610199） */
.sidebar-divider{height:1px;background:rgba(191,226,236,.55);margin:2px 4px 4px;flex:none;}
.promo-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:transparent;border-radius:6px;font-size:14px;cursor:pointer;transition:.2s;}
.promo-item:hover{background:rgba(15,47,85,.04);}
.promo-btn{background:var(--primary-blue);color:#fff;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:500;}
/* 免费注册按钮：橙色醒目（v202610200），仅登录/注册板件，不影响「立即加入」；v202610201 限定 .promo-btn（未登录态），登录后的「剩余 N 次」不再命中色块 */
#aeGo.promo-btn{background:#f97316;color:#fff;transition:background .2s;}
#aeGo.promo-btn:hover{background:#ea580c;}
/* 状态二：已注册未登录时，侧栏“去登录”高亮（橙底脉冲，突出引导） */
#aeGo.promo-btn.login-emph{background:#0ea5e9;box-shadow:0 0 0 0 rgba(14,165,233,.5);animation:pulseLogin 1.8s infinite}
#aeGo.promo-btn.login-emph:hover{background:#0284c7}
@keyframes pulseLogin{0%{box-shadow:0 0 0 0 rgba(14,165,233,.45)}70%{box-shadow:0 0 0 7px rgba(14,165,233,0)}100%{box-shadow:0 0 0 0 rgba(14,165,233,0)}}
/* 登录弹窗底部“换个账号注册” */
.lg-reg{margin-top:10px;text-align:center;font-size:12.6px;color:var(--text-muted)}
.lg-reg a{color:var(--dark-blue);font-weight:600;cursor:pointer;margin-left:4px}
.lg-reg a:hover{text-decoration:underline}
/* 登录后「剩余 N 次」：无色块文字，颜色按余额动态（v202610203）：>10 绿、0<≤10 橙、0/耗尽 红、不限 绿 */
/* 与昵称同行垂直居中（v202610273）；禁换行+不被压缩（v202610279），保证「剩余 N 次」区域不被昵称/钻石标挤占 */
.acct-go{font-weight:600;background:none;padding:0;align-self:center;white-space:nowrap;flex:none;}
/* 色类提高特异性（.acct-go.前缀）以压过 .promo-link 的蓝色，否则同名特异性被后定义的蓝色覆盖 */
.acct-go.acct-go-green{color:#00c6a0}
.acct-go.acct-go-orange{color:#ea580c}
.acct-go.acct-go-red{color:#dc2626}
.promo-item>span:first-child{display:inline-flex;align-items:center;gap:8px;min-width:0}
/* 侧栏主导航图标：默认深灰（与文字同色 #1e293b），降低视觉干扰；悬停回主蓝作为轻反馈（v20261102） */
.promo-item>span:first-child .ico{stroke:var(--text-main);color:var(--text-main)}
.promo-item:hover>span:first-child .ico{stroke:var(--primary-blue);color:var(--primary-blue)}
/* 侧栏板件右侧次要文字（为您推荐/进入/订阅推送/详细说明）：次要色 #4E5969，缩小字号减少视线抢占，悬停才回主蓝（v2026102712 / v2026102713 字号 12→11px） */
.promo-link{color:#4E5969;font-size:11px;display:inline-flex;align-items:center;gap:2px;transition:color .15s}
.promo-link .ico{width:10px;height:10px}
.promo-item:hover .promo-link{color:var(--primary-blue)}
.promo-item:hover .promo-link .caret{transform:translateY(1px)}

/* 侧栏账号入口：与上下相邻的 promo-item 完全同款（灰底 6px 圆角 + 16px 蓝色图标 + 右侧胶囊/链接） */
/* 登录态文字基线对齐（v202610203）：外层 flex 行按 baseline 对齐，使昵称与「剩余 N 次」文字基线同行；
   头像 .ai-ic 用 align-self:center 不参与基线、保持垂直居中；内层昵称组也按 baseline，确保头像不影响基线 */
/* 合并板件：整行垂直居中（v202610273）；左内边距 8→5→3 让图标+文字逐轮稍左移（v202610279） */
.acct-item{align-items:center;padding-left:3px}
.acct-item .ai-ic{width:26px;height:26px;flex:none;display:inline-flex;align-items:center;justify-content:center;align-self:center}
.acct-item .ai-ic svg{width:16px;height:16px;display:block;border-radius:5px}
/* 合并板件头像：统一用智能体 LOGO（v202610271），灰色=未登录 / 彩色=已登录 / 彩色+金色VIP徽标=已购会员 */
.acct-item .ae-logo{width:26px;height:26px;border-radius:50%;object-fit:cover;display:block;flex:none;transition:filter .2s,opacity .2s}
.acct-item .ae-logo.gray{filter:grayscale(1);opacity:.55}
/* 会员钻石 VIP 标（v202610279）：置于昵称之后，昵称过长先截断，钻石标与「剩余 N 次」互不挤占 */
.acct-item>span:first-child b.has-diamond{display:inline-flex;align-items:center;gap:4px;min-width:0;overflow:hidden}
.acct-item>span:first-child b.has-diamond .acu-nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-item>span:first-child b.has-diamond .vip-diamond{width:16px;height:16px;flex:none;display:block;
  filter:drop-shadow(0 1px 1.5px rgba(245,158,11,.4))}
.acct-item>span:first-child{display:inline-flex;align-items:center;gap:8px;min-width:0}
.acct-item>span:first-child b{font-size:13px;font-weight:500;color:var(--text-main);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 未登录态「尚未登录」状态提示：缩字号 + 弱化（v202610277），登录后昵称保持 13px */
.acct-item>span:first-child b.ae-name-guest{font-size:11.5px;font-weight:400;color:var(--text-muted);}
.acct-item:hover .acct-go .caret{transform:translateY(1px)}
/* 页面标题右侧的第二个按钮（返回对话 + 退出登录 并排） */
.back-btn + .head-btn{margin-left:0}

/* ---------------- 主内容区 ---------------- */
.main-content{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;padding:40px 32px 24px 12px;overflow:hidden;min-width:0;}
/* 2026-11-05：采购知识库 / 采购舆情 / 采购标讯 / 智能体广场 去除左侧主导航（内容区全宽）；
   智能问答及各智能体工作界面保留侧栏。开关由 switchView() 加在 body 上的 .hide-sidebar 控制。 */
body.hide-sidebar .sidebar{display:none}
body.hide-sidebar .main-content{padding-left:32px}
@media (max-width:920px){ body.hide-sidebar .main-content{padding-left:16px} }
@media (max-width:680px){ body.hide-sidebar .main-content{padding-left:14px} }
/* 2026-10-29：移除 .bg-decoration 水滴装饰构型，页面改纯色底（见 --bg-app） */

.view{display:none;width:100%;max-width:var(--content-w);flex-direction:column;flex:1;min-height:0;position:relative;z-index:1;}
.view.active{display:flex}
.view-chat{align-items:center}   /* 2026-10-15 二次调整：恢复左右居中（配合 --content-w 拓宽到 840px） */
/* 对话页：内容宽度为整幅，使滚动条落在页面最右侧；其内部元素再居中到 --content-w */
.view-chat{max-width:none}

/* ---------------- 全站页脚：备案信息 ----------------
   2026-09-30 新增。它是 .main-content（flex 列）的最后一项且 flex:none，
   所以不参与上方视图的高度分配——切换任何视图都常驻底部，也不会挤压聊天区。
   放在这里（所有 @media 之前）是因为后面几档矮屏媒体查询会整条覆盖基础规则，
   页脚本身只有 ~30px 高，无需逐档适配，只做窄屏字号收敛。 */
/* z-index 必须为 0（低于 .view 的 1）：.view 是 position:relative;z-index:1 的层叠上下文，
   知识库抽屉/遮罩都挂在 #viewKb 内，若页脚同为 1 且 DOM 靠后，页脚会穿透抽屉显示在输入框上。 */
.site-footer{flex:none;position:relative;z-index:0;
  width:100%;max-width:var(--content-w);margin-top:14px;padding-top:10px;
  border-top:1px solid rgba(226,232,240,.75);
  display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 8px;
  font-size:11.5px;line-height:1.5;color:#94a3b8;letter-spacing:.2px;text-align:center;}
.site-footer .sf-sep{opacity:.5}
.site-footer a{color:inherit;text-decoration:none;transition:color .15s}
.site-footer a:hover{color:var(--dark-blue);text-decoration:underline}
.site-footer .sf-ga{display:inline-flex;align-items:center;gap:4px}
.site-footer .sf-ga img{width:14px;height:14px;object-fit:contain;display:block}
@media (max-width:680px){
  .site-footer{font-size:11px;margin-top:10px;padding-top:8px;gap:2px 6px}
}

/* 欢迎区 */
.welcome{width:100%;max-width:var(--content-w);margin:0 auto;display:flex;flex-direction:column;align-items:center;text-align:center;flex:none;}
.welcome.hidden{display:none}
/* 主题词 + 欢迎词整体下移（固定值，不随视口缩水）。
   血泪教训：clamp(72px,11vh,124px) 这种"自适应"在浏览器视口 <800px 时会被
   下方 @media(max-height:800px) 整条覆盖掉，用户看到的一直是 18px，等于没下移。
   所以主值与矮屏值都必须给足，且确保"矮屏值 > 收窄前的最低值"。 */
.welcome-header{margin-top:72px;margin-bottom:30px;}   /* 2026-10-15 欢迎块整体上移三行（144→72px） */
/* 主标题：深墨绿/深青纯色（参考 WorkBuddy 沉稳深青墨绿风格），作为首页视觉锚点 */
.welcome-header h1{font-size:36px;font-weight:700;margin-bottom:14px;letter-spacing:1.6px;line-height:1.26;
  color:#1f3b34;}
/* 副标题分层：第一句是能力说明，第二句弱化为引导语 */
.welcome-header p{color:#475569;font-size:15.5px;line-height:1.72;letter-spacing:.3px;}
.welcome-header p .wh-sub{display:block;margin-top:8px;font-size:14.5px;color:#94a3b8;letter-spacing:.6px;}
/* 功能板件：默认一行（常用 + 「更多」）；展开后「更多」面板以 flex-basis:100% 独占第二行，
   整体封顶两行，既不疏散也不会把输入区挤下去。 */
.quick-bar{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:7px;
  max-width:var(--content-w);width:100%;margin-bottom:16px;padding:0;}
.quick-actions{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;align-items:center;}
.action-tag.more{color:var(--text-muted);background:rgba(255,255,255,.6);flex:none}
.action-tag.more .caret{transition:.2s;display:inline-block}
.action-tag.more.open{border-color:var(--primary-blue);color:var(--dark-blue);background:var(--bg-blue)}
.action-tag.more.open .caret{transform:rotate(180deg)}
/* 「更多」展开后强制单行：nowrap + 更紧的内距/字号/图标，使 7 项全部排在 720px 内不掉行。
   实测排布约 669px < 容器 720px，留有 50px 余量；overflow:hidden 兜底，绝不撑破布局。 */
.more-panel{flex-basis:100%;flex-wrap:nowrap;gap:5px;justify-content:center;align-items:center;
  overflow:hidden;display:none;}
.more-panel.open{display:flex;animation:fade .22s ease}
/* 窄屏容器不足一行时回退换行，避免标签被裁掉 */
@media (max-width:700px){ .more-panel{flex-wrap:wrap;gap:6px} }
/* 首行常用板件：整体放大一号（内距 13→16px、字号 14.5→15.5px）。
   高度基本不变：padding 多出的 4px 与字号多出的 1px 行高相互抵消，
   所以欢迎区不会因为这一改动被顶下去，也不会挤压下方输入卡。
   第二行「更多」面板由 .more-panel .action-tag（特异性更高）保持原尺寸，不受影响。 */
.action-tag{display:flex;align-items:center;gap:6px;padding:9px 16px;background:rgba(255,255,255,.86);border:1px solid #e2e8f0;
  border-radius:20px;font-size:15.5px;line-height:1.45;font-weight:500;color:var(--text-main);cursor:pointer;transition:.2s;
  box-shadow:0 2px 4px rgba(0,0,0,.02);white-space:nowrap;}
.action-tag:hover{border-color:var(--primary-blue);color:var(--dark-blue);background:#fff;box-shadow:0 4px 12px rgba(14,165,233,.12);}
.action-tag.on{border-color:var(--primary-blue);background:var(--bg-blue);color:var(--dark-blue);}
/* 2026-11-02：操作区板件图标默认深灰（与文字同色 var(--text-main)），降低视觉干扰；
   悬停/选中态回主蓝，与边框、底色的高亮反馈保持一致。CSS stroke 优先级高于 SVG 的 stroke 属性，
   故无需改动 aico() 的默认蓝色。 */
.action-tag .ico{stroke:var(--text-main)}
.action-tag:hover .ico{stroke:var(--primary-blue)}
.action-tag.on .ico{stroke:var(--primary-blue)}
.more-panel .action-tag .ico{stroke:var(--text-sub)}
.more-panel .action-tag:hover .ico{stroke:var(--primary-blue)}
.more-panel .action-tag.on .ico{stroke:var(--primary-blue)}

/* 「更多」展开后的板件：字号与内距都小于第一行，形成主次层次；
   为塞进单行，图标与间隙一并收窄，并允许文字在极端窄屏下截断而非撑破容器。 */
.more-panel .action-tag{padding:5px 10px;font-size:12px;font-weight:400;border-radius:16px;color:var(--text-sub);
  gap:3px;overflow:hidden;min-width:0;}
.more-panel .action-tag .ico{width:13px;height:13px;flex:none}
.more-panel .action-tag.on{border-color:var(--primary-blue);background:var(--bg-blue);color:var(--dark-blue);font-weight:500;}

/* 后台管理入口（默认隐藏，#admin 进入） */
.admin-entry[hidden]{display:none}
.admin-entry{background:#f1f5f9}

/* 欢迎区 + 消息区：唯一的滚动容器。宽度取满屏 → 滚动条在页面最右侧；
   内部内容由 .welcome / .chat-inner 居中到 --content-w。
   注意：此容器必须能收缩（min-height:0 + overflow:auto），否则会把输入区挤出去。 */
.chat-body{flex:1;min-height:0;width:100%;overflow-y:auto;overscroll-behavior:contain;
  /* 2026-10-15 对齐根因修复：滚动条出现时内容画布比输入框窄 sb，消息列居中后整体左偏 sb/2。
     两侧对称预留滚动条槽（stable both-edges），使消息列中心恒等于输入框中心，左缘严格对齐。 */
  scrollbar-gutter:stable both-edges;}
.chat-scroll{width:100%;flex:none;overflow:visible;padding:10px 0 12px;}
/* 两侧各预留 42px 给头像（头像绝对定位到列外的留白里），
   内容列宽度即 = --content-w，气泡与下方输入卡严格等宽。 */
/* 2026-10-15 二次调整：恢复居中（margin:0 auto），配合 --content-w 840px 拓宽后留白适度。 */
.chat-inner{display:flex;flex-direction:column;width:100%;max-width:calc(var(--content-w) + 84px);margin:0 auto;padding:0 42px;}
.msg{position:relative;margin-bottom:20px;animation:fade .28s ease;width:100%;}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.msg-avatar{position:absolute;left:-42px;top:1px;width:30px;height:30px;border-radius:9px;
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:13px;font-weight:600;background:linear-gradient(135deg,#38bdf8,#0284c7);}
/* 2026-10-15：AI 图标移入标题行内联排列，左缘与输出框对齐（不再悬挂列外留白） */
.msg-ai .msg-avatar{position:static;flex:none;width:24px;height:24px;border-radius:8px;}
.msg-main{min-width:0;width:100%}
.msg-user .msg-main{display:flex;flex-direction:column;align-items:flex-end}
.msg-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.msg-user .msg-head{flex-direction:row-reverse}
.msg-name{font-size:13.5px;font-weight:600;color:var(--text-main)}
.msg-time{font-size:11px;color:var(--text-muted)}
/* 2026-10-15：TenderWork 名称与小号时间文字按基线对齐，确保两者落在同一水平线（头像仍垂直居中） */
.msg-name,.msg-time{align-self:baseline}
/* 输出框：去底色卡 —— 透明底、无外边框（2026-10-15 按用户要求去掉淡蓝描边），
   内容直接铺在页面浅白底上；用户提问气泡仍保留自己的淡蓝描边（见 .msg-user 规则） */
.msg-body{background:transparent;border:none;border-radius:14px;padding:16px 0;
  font-size:14px;line-height:1.8;letter-spacing:.15px;}
.msg-ai .msg-body{border-radius:4px 16px 16px 16px}
/* 提问气泡：铺满内容列。
   2026-10-15 浅柔色（加重档）：同色相 199° 浅柔蓝渐变 #e0f2fe → #bae6fd，
   深蓝字 #075985；边框 --border-blue 淡蓝细边 + 同色相极淡投影 rgba(14,165,233,.10)；
   文字默认居右。
   尺寸规格（用户指定）：单行总高 36px = 上下内距 7+7 + 行高 20 + 边框 1+1；
   字号 13.5px（13~14 档）、行高 20px（18~22 档）、上下内距 7px（6~10 档）；
   多行/长文本高度自适应，max-height 100px，超出滚动。 */
.msg-user .msg-body{width:60%;background:linear-gradient(135deg,#e0f2fe 0%,#bae6fd 100%);border:none;color:#075985;text-align:left;
  border-radius:16px 6px 16px 16px;padding:7px 17px;font-size:13.5px;line-height:20px;max-height:100px;overflow-y:auto;
  letter-spacing:.2px;font-weight:500;box-shadow:0 4px 14px rgba(14,165,233,.10);}
/* 单行 36px 的关键：气泡内 .md 默认 14.5px/1.85 + p 的 8px 段距会把单行撑到 ~59px，
   这里在用户气泡内统一改为 13.5px/20px 并去掉段距，使 7+20+7+2=36 精确成立 */
.msg-user .msg-body .md{font-size:13.5px;line-height:20px}
.msg-user .msg-body .md p{margin:0}

.call-tag{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--dark-blue);background:var(--bg-blue);
  border:1px solid var(--border-blue);padding:3px 10px;border-radius:20px;margin-bottom:8px;}
.call-tag .dot{width:5px;height:5px;border-radius:50%;background:var(--primary-blue)}

.think-box{border:1px dashed var(--border-blue);background:#f8fdff;border-radius:10px;padding:9px 12px;margin-bottom:9px;}
.think-head{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--dark-blue);font-weight:600;cursor:pointer}
.think-head svg{transition:.2s}
.think-box.open .think-head svg{transform:rotate(90deg)}
.think-content{display:none;margin-top:7px;font-size:12.5px;color:var(--text-muted);line-height:1.85;border-left:2px solid var(--border-blue);padding-left:10px;}
.think-box.open .think-content{display:block}

.msg-actions{display:flex;gap:6px;margin-top:8px;opacity:0;transition:.15s}
.msg:hover .msg-actions{opacity:1}
.msg-action{display:flex;align-items:center;gap:4px;font-size:11.5px;color:var(--text-muted);padding:4px 8px;border-radius:6px;border:1px solid transparent;}
.msg-action:hover{background:#fff;border-color:var(--line);color:var(--dark-blue)}

.typing{display:inline-flex;gap:4px;align-items:center}
.typing i{width:6px;height:6px;border-radius:50%;background:var(--primary-blue);animation:blink 1.1s infinite}
.typing i:nth-child(2){animation-delay:.18s}
.typing i:nth-child(3){animation-delay:.36s}
@keyframes blink{0%,80%,100%{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}

/* ---------- 空会话紧凑布局（2026-09-27） ----------
 * 空会话时滚动区原本 flex:1 撑满剩余高度，把输入卡顶到视口最底，
 * 与顶部的「功能板件 / 推荐问题行」之间实测留出约 300px 空白，视觉重心被拉成两截。
 * 做法：空会话时滚动区收成内容高度、整组垂直居中，并把输入卡上提到悬浮条下方 34px，
 * 让「欢迎词 → 功能板件 → 推荐问题 → 输入框」收成一块。
 * 一旦有消息（.is-empty 移除），立即恢复 flex:1 + 贴底，聊天态行为不变。
 * 矮屏兜底：chat-body 用 flex:0 1 auto（可收缩且内部可滚），空间不足时自动让位给输入卡，绝不裁切。 */
.view-chat.is-empty{justify-content:center}
.view-chat.is-empty .chat-body{flex:0 1 auto;min-height:0}
.view-chat.is-empty .chat-scroll{display:none}
.view-chat.is-empty .chat-input-container{margin-top:8px;margin-left:auto;margin-right:auto}   /* 推荐 chips 紧贴输入卡上边框；欢迎态与消息态均居中 */

/* 输入卡片 */
/* 输入卡片：宽度与消息列严格等宽，左右边缘对齐；内边距加大以缩短单行字数（最佳阅读行长 30~45 字） */
/* 2026-10-15 等宽修复：.chat-inner 有 42+42=84px 的水平内距给头像留位，当右栏展开主区变窄时，
   若输入卡仍按 --content-w 固定，会比消息卡片外缘宽出 84px。改用 min() 让输入卡随主区同步收缩，
   始终保持与消息卡片外边缘对齐。 */
/* 2026-10-15 去底色卡：透明底（页面浅白底透出）+ 淡蓝描边、去阴影；
   2026-10-15 二次调整：margin:0 auto 恢复居中，与消息列同宽对齐（头像仍留在两侧 42px 槽位）。
   2026-09-27 视觉比例优化：输入容器整体收扁（221px → 约 175px）。
   内距 13/18/11 → 11/16/9；textarea 48 → 40px（行高 25.8 + 上下 padding 5 = 35.8，min-height 兜到 40）。
   多行上限 150 → 132：五 行以内不出现"半屏输入框"，超出走滚动。 */
/* 2026-10-27：输入卡加淡白色底（半透明白），使文本输入区在浅蓝页面底上更清晰、层次更完整 */
.chat-input-container{width:100%;max-width:min(var(--content-w), calc(100% - 84px));margin:0 auto;background:rgba(255,255,255,.82);border-radius:16px;box-shadow:none;
  padding:11px 16px 9px;border:1px solid var(--border-blue);position:relative;flex:none;z-index:2;backdrop-filter:saturate(1.05) blur(2px);}
.chat-input-container textarea{width:100%;border:none;outline:none;resize:none;font-size:15px;line-height:1.72;letter-spacing:.1px;
  /* 2026-11-02：min-height 62 → 88，让输入框默认就撑到三行（15px×1.72=25.8，三行 77.4 + 上下 padding 10 ≈ 88）。
     resizeInput() 写的是 inline height（单行时约 26px），但 inline height 压不过 min-height，
     所以空输入仍稳稳占三行；三行起由 scrollHeight 自由增长，上限 max-height:150px（约 5.4 行后滚动）。 */
  padding:5px 0;min-height:88px;max-height:150px;color:var(--text-main);background:transparent;}
.chat-input-container textarea::placeholder{color:#94a3b8;font-size:14.5px}

/* 占位提示浮层：原生 placeholder 放不了图标，改用与 textarea 首行对齐的覆盖层；
   仅在输入框为空（:placeholder-shown）时显示，无需 JS 同步状态。
   开场白卡显示时（.has-intro）整体隐藏：开场白已承担"该问什么"的引导，
   占位主文案"今天帮你做什么"与它同屏就是重复；且这里的"上传附件/@引用"提示
   与下方工具栏按钮本来就是一回事，三处引导并排是截图反馈的核心噪音。 */
.input-ph-wrap{position:relative;width:100%}
.input-ph{position:absolute;left:0;top:5px;display:none;align-items:center;gap:16px;
  min-height:25.8px;font-size:14.5px;line-height:25.8px;color:#94a3b8;
  pointer-events:none;user-select:none;white-space:nowrap;}
/* 开场白卡出现时（.has-intro）占位只留主文案并压低对比度：开场白已在上方回答
   "这智能体能干什么"，占位再重复一遍就是噪音；而其中的「上传附件/@引用」与下方
   工具栏按钮本来就是一回事，一并隐去。（原整行 display:none 的做法已废弃） */
.chat-input-container textarea:placeholder-shown + .input-ph{display:flex}
.chat-input-container.has-intro .ph-item{display:none}
.chat-input-container.has-intro .ph-lead{color:#b6c2d1}
.ph-lead{font-size:14.5px}
.ph-item{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:#9aa8b8}
.ph-at{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;
  border-radius:4px;background:#eef2f7;color:#7c8ba1;font-size:11px;line-height:1}

/* 输入框上方的智能体开场白 + 推荐问题（仅智能体配置了 greeting 且会话为空时显示） */
/* 开场白面板：竖向空间敏感——它越高，留给上方欢迎区/功能板件的高度越少，
   矮屏上就会出现「输入卡把功能板件挤没」的观感，因此这里刻意做紧凑处理。
   2026-09-27 方案二：推荐问题整体移出（改为 .composer-float 悬浮条），本卡只剩
   开场白一句话，头像 26 → 24 → 20px，内外距与字号同步收紧。 */
/* 竖向空间优先：这张卡每省 1px，输入区就相对宽裕 1px。目标卡高 32px（原 42px）：
   头像 24→20、文字 13.2/1.65→12.5/1.5、上下内距 7/8→5/6、行间距 gap 9→8。 */
.composer-intro{margin-bottom:5px;padding:5px 11px;border:1px solid #e3f0fc;border-radius:11px;
  background:transparent;}
.composer-intro[hidden]{display:none}
/* 2026-09-27 视觉居中校正：此前有三处偏差叠加 —— ①内距 5/6 不对称（中线偏高 0.5px）；
   ②.cp-line 用 align-items:flex-start 再给头像 margin-top:1px 手动下压，实际把头像压得比
   文字低 2px；③中文字面在字体盒里本就偏上。现在：内距上下对称、行盒直接取头像等高
   （20 / 12.5 = 1.6）、align-items:center 去掉手动偏移，三者同框即自动同中心。 */
.cp-line{display:flex;align-items:center;gap:8px;min-height:20px;}
.cp-av{width:20px;height:20px;flex:none;display:flex;align-items:center;justify-content:center;
  border-radius:7px;background:linear-gradient(135deg,#38bdf8,#0284c7);color:#fff;
  box-shadow:0 2px 6px rgba(14,165,233,.18);}
.cp-av svg{display:block}
.cp-text{font-size:12.5px;line-height:1.6;letter-spacing:.05px;color:#334155;}
/* 开场白中 [[片段]] 包住的高亮词 */
.cp-hl{font-weight:600;color:var(--dark-blue);background:#e0f2fe;
  padding:1px 5px;margin:0 1px;border-radius:5px;}
/* 2026-09-27 方案二（悬浮式）：推荐问题从开场白卡里搬出，独立成一条悬浮在输入卡
   「外」部顶部（与功能板件同属引导层、同居中同换行），卡内只留开场白一句话。
   主—次分层：上方的 .action-tag 是主（白底 + 描边 + 15.5px + 选中蓝态），
   这里必须退成次级——无边框、浅灰底、12.5px、无投影，hover 才浮出白底蓝字。
   实测：悬浮条 37 → 30px，输入区总高 191px（原含问题的开场白卡 75px / 卡 198px）。 */
.composer-float{width:100%;max-width:min(var(--content-w), calc(100% - 84px));margin:50px auto 0;   /* 板件区与推荐词之间间距 50px */
  display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;}
.composer-float[hidden]{display:none}
.fchip{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;background:#f1f5f9;
  border:none;border-radius:15px;font-size:12.5px;line-height:1.35;letter-spacing:.2px;
  color:var(--text-sub);cursor:pointer;transition:.16s;white-space:nowrap;font-family:inherit;}
.fchip .ico{color:#a9b6c6;flex:none}
.fchip:hover{background:#fff;color:var(--dark-blue);box-shadow:0 2px 8px rgba(14,165,233,.10)}
.fchip:hover .ico{color:var(--primary-blue)}
/* 「+N 条 / 收起」：与推荐问题同一枚胶囊，但更淡、无图标，明确它是"更多"而非一条推荐词 */
.fchip-more{padding:5px 10px;color:#94a3b8}
.fchip-more:hover{color:var(--dark-blue)}
.fchip-more .caret{transition:.2s}
.composer-float[data-open="1"] .fchip-more{color:var(--dark-blue);background:#fff;
  box-shadow:0 2px 8px rgba(14,165,233,.10)}
.composer-float[data-open="1"] .fchip-more .caret{transform:rotate(180deg)}

/* 附件栏（输入框上方） */
.attach-bar{display:none;flex-wrap:wrap;gap:8px;margin-bottom:10px;}
.attach-bar.show{display:flex}
.ac-chip{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:6px 8px 6px 6px;max-width:240px;}
.ac-thumb{width:34px;height:34px;border-radius:6px;object-fit:cover;background:#e2e8f0;flex:none;}
.ac-glyph{width:34px;height:34px;border-radius:6px;background:#e0f2fe;display:flex;align-items:center;justify-content:center;font-size:18px;flex:none;}
.ac-meta{display:flex;flex-direction:column;min-width:0;line-height:1.25;}
.ac-name{font-size:12.5px;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;}
.ac-size{font-size:11px;color:#94a3b8;}
.ac-del{background:none;border:none;cursor:pointer;color:#94a3b8;width:20px;height:20px;border-radius:5px;display:flex;align-items:center;justify-content:center;flex:none;}
.ac-del:hover{background:#fee2e2;color:#dc2626}
.chat-input-container.drag{border-color:var(--primary-blue);box-shadow:0 0 0 3px rgba(14,165,233,.15);}

/* 消息内附件 */
.msg-files{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;}
.mf-img{max-width:220px;max-height:160px;border-radius:10px;border:1px solid #e2e8f0;object-fit:cover;display:block;margin-bottom:6px;}
.msg-file{display:inline-flex;align-items:center;gap:8px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:10px;padding:8px 12px;text-decoration:none;color:#0f172a;font-size:13px;max-width:260px;transition:.15s;}
.msg-file:hover{background:#e0f2fe;border-color:var(--primary-blue)}
.mf-ico{font-size:16px;flex:none}
.mf-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.mf-size{color:#94a3b8;font-size:11px;flex:none}

.input-toolbar{display:flex;justify-content:space-between;align-items:center;margin-top:7px;border-top:1px solid #f1f5f9;padding-top:7px;gap:10px;flex-wrap:wrap;}
.toolbar-left{display:flex;gap:8px;color:var(--text-muted);font-size:14px;align-items:center;}
.toolbar-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:18px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;transition:.15s;}
.toolbar-btn:hover{background:#f1f5f9;color:var(--dark-blue)}
#btnAttach{color:#1a1a1a;}
#btnAttach:hover{background:#f1f5f9;color:#000;}
.upload-hint{font-size:12px;color:var(--text-muted);white-space:nowrap;user-select:none;}
.toolbar-btn.sym{font-size:15px;font-weight:600}
.agent-pill{font-size:12px;color:var(--dark-blue);background:var(--bg-blue);border:1px solid var(--border-blue);padding:3px 10px;border-radius:12px;cursor:pointer;white-space:nowrap;
  display:inline-flex;align-items:center;gap:5px;}
.agent-pill .ico{color:var(--primary-blue)}
.agent-pill:hover{background:#e0f2fe}

.toolbar-right{display:flex;align-items:center;gap:12px;}
.model-select{font-size:12px;color:var(--text-muted);background:#f8fafc;padding:4px 8px;border-radius:12px;cursor:pointer;position:relative;white-space:nowrap;display:inline-flex;align-items:center;gap:2px}
.model-select:hover{background:#f1f5f9;color:var(--dark-blue)}
.model-menu{display:none;position:absolute;bottom:calc(100% + 6px);right:0;background:#fff;border:1px solid var(--line);border-radius:10px;
  box-shadow:0 12px 30px rgba(0,0,0,.1);padding:5px;min-width:200px;z-index:20;text-align:left;}
.model-menu.open{display:block}
.model-opt{display:block;width:100%;text-align:left;padding:7px 10px;border-radius:7px;font-size:12.5px;color:var(--text-main);}
.model-opt:hover{background:var(--bg-blue);color:var(--dark-blue)}
.model-opt.on{color:var(--dark-blue);font-weight:600;background:var(--bg-blue)}
.model-opt small{display:block;color:var(--text-muted);font-size:10.5px;font-weight:400}

.send-btn{width:36px;height:36px;border-radius:50%;background:var(--primary-blue);color:#fff;border:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:.2s;font-size:16px;line-height:1;}
.send-btn:hover{background:var(--dark-blue);transform:scale(1.05)}
.send-btn.stop{background:#475569}

/* 斜杠指令菜单 */
.slash-menu{display:none;position:absolute;left:16px;bottom:calc(100% + 8px);width:380px;max-width:calc(100% - 32px);background:#fff;
  border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.1);padding:6px;z-index:20;}
.slash-menu.open{display:block}
.slash-head{font-size:11px;color:var(--text-muted);padding:6px 10px;}
.slash-item{display:flex;align-items:center;gap:9px;width:100%;text-align:left;padding:8px 10px;border-radius:8px;font-size:13px;color:var(--text-main);}
.slash-item:hover{background:var(--bg-blue);color:var(--dark-blue)}
.slash-item .si-em{width:22px;display:inline-flex;align-items:center;justify-content:center;color:var(--primary-blue)}
.slash-item small{color:var(--text-muted);font-size:11px;margin-left:auto}

.bottom-hints{display:flex;gap:20px;margin-top:16px;font-size:12px;color:var(--text-muted);flex:none;}
.bottom-hints > span{cursor:pointer;padding:2px 8px;border-radius:12px;transition:.15s;display:inline-flex;align-items:center;gap:4px}
.bottom-hints > span:hover{background:rgba(255,255,255,.75);color:var(--dark-blue)}

/* 2026-11-02：工作空间板件选择器（替代对话区内胶囊板件行）。
   默认态仅显示“<图标><当前板件> ⌄”（删去“工作空间：”前缀、缩小字号）；点击向上展开全部功能板件列表，点击切换。 */
.ws-selector{position:relative}
.ws-current{display:inline-flex;align-items:center;gap:4px;user-select:none;font-size:12px}
/* 不再单独缩小图标：沿用底部区默认图标尺寸（folder 13 / chevronDown 11，由 ico() 内联决定），与同区文字一致 */
.ws-current.open .caret{transform:rotate(180deg)}
.ws-dropdown{position:absolute;left:0;bottom:calc(100% + 8px);min-width:220px;max-height:320px;overflow:auto;
  background:#fff;border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 12px 30px rgba(15,23,42,.16);
  padding:6px;z-index:50;animation:fade .18s ease;scrollbar-width:none;-ms-overflow-style:none}
.ws-dropdown::-webkit-scrollbar{display:none}
.ws-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;cursor:pointer;transition:.12s;color:var(--text-main)}
.ws-item:hover{background:var(--bg-blue)}
.ws-item .ico{width:14px;height:14px;flex:none;stroke:var(--text-sub)}
.ws-item .ws-name{font-size:12px;font-weight:500;flex:1}
.ws-item.on{background:var(--bg-blue)}
.ws-item.on .ws-name{color:var(--dark-blue);font-weight:600}
.ws-item.on .ico{stroke:var(--primary-blue)}
.ws-item .ws-check{flex:none;margin-left:2px}

/* ---------------- 管理页面 ---------------- */
/* 页面滚动区：保留 overflow 与 scrollbar-gutter（布局稳定），滚动条回退为浏览器原生（2026-11-02 删除自定义滚动条样式） */
.page{width:100%;overflow-y:auto;padding:6px 16px 20px 2px;scrollbar-gutter:stable}
/* 参考页风：舆情/标讯列表页改为白底（与全站/知识库一致），白色卡片由其边框/阴影与页面拉开层次 */
#viewNews .page,#viewBids .page{background:transparent}
/* 采购舆情：与采购知识库页面保持一致的容器与水平居中策略——
   采用与 #viewKb 相同的 max-width 与 margin:0 auto，使正文左缘与左侧栏的间距
   在任意屏宽下都和知识库页面严格一致（左缘对齐），不再因 900px 窄列居中而右移 */
#viewNews{max-width:min(1440px,calc(100% - 64px));margin-left:auto;margin-right:auto}
/* 采购舆情：.page 左内距回归全站默认值 2px（与知识库页面一致）；
   旧 26px 仅为在 900px 窄列内做卡片对称补偿，宽容器下无需再偏移 */
#viewNews .page{padding-left:2px}
/* 采购舆情页头：Grid 布局——标题独占第一行，副标题紧随其后（行距 3px，紧凑），
   「返回对话」按钮跨两行置于右列、底端与副标题底端严格对齐；
   页头底部通栏 1px 细分隔线与下方筛选栏分区。
   此前用 flex-wrap：按钮比文字行高，底端对齐时会把副标题在弹性行内向下顶出
   约 16px（标题与副标题间距被撑到 19px）；改 Grid 后副标题固定在第二行、
   与标题间距 = row-gap，按钮跨 grid-row:1/span 2 + align-self:end，
   其底端与副标题底端（网格底边）严格对齐，且副标题限于第一列、永不与按钮交错。
   标题不加竖分割线（副标题已独立成行）。
   整体协调美化沿用 v202610307：图标浅蓝徽章底 + 科技蓝描边、副标题 Ant 浅灰
   #86909C、按钮中性细边框 #E5E6EB（hover 才染科技蓝 + 箭头左移微交互） */
#viewNews .page-head{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;column-gap:16px;row-gap:15px;padding-bottom:0;margin-bottom:16px;border-bottom:none}
#viewNews .page-head h2{grid-column:1;grid-row:1;gap:10px;color:#1D2129;border-right:none;padding-right:0;margin-right:0;font-size:18px;font-weight:600;letter-spacing:.5px}
#viewNews .page-head h2 .ico{box-sizing:content-box;width:18px;height:18px;padding:6px;border-radius:9px;background:rgba(14,165,233,.1);stroke:#0ea5e9}
#viewNews .page-head p{grid-column:1;grid-row:2;min-width:0;margin-top:0;color:#86909C}
#viewNews .page-head .back-btn{grid-column:2;grid-row:1 / span 2;align-self:start;margin-left:0;padding:7px 14px;border-radius:9px;border-color:#E5E6EB;color:#4E5969;font-weight:500;background:#fff;transition:.15s}
#viewNews .page-head .back-btn:hover{border-color:#0ea5e9;color:#0ea5e9;background:rgba(14,165,233,.06)}
#viewNews .page-head .back-btn .ico{transition:transform .15s}
#viewNews .page-head .back-btn:hover .ico{transform:translateX(-2px)}
/* 参考设计：筛选栏「更多筛选」左侧加一道 1px 竖线，与栏目胶囊分区 */
#viewNews .filter-more{display:inline-flex;align-items:center}
#viewNews .filter-more::before{content:none} /* 2026-10-28 去掉板件与更多筛选之间的竖线 */
/* 参考布局：第二排筛选条改为「左筛选胶囊 + 右计数」同行，底部加细分隔线 */
#viewNews .filter-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:2px 0 20px;padding-bottom:16px;border-bottom:1px solid #E5E6EB;min-width:0}
#viewNews .filter-bar .filter-left{display:flex;align-items:center;gap:20px;min-width:0;flex:1}
#viewNews .news-count{margin:0;font-size:14px;color:#4E5969;white-space:nowrap}
/* 注册页（关键任务视图）：780px 上限对双栏表单太窄 → 加宽到 1020px，
   两侧对称留白 + 双侧滚动条沟槽，滚动条不再压住面板边框 */
#viewRegister{max-width:1020px}
#viewRegister .page{padding:0 10px;scrollbar-gutter:stable both-edges}
.page-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:16px;flex-wrap:wrap;}
.page-head h2{font-size:20px;font-weight:700;color:var(--text-main);display:inline-flex;align-items:center;gap:8px}
.page-head p{font-size:13px;color:var(--text-muted);margin-top:4px;width:100%}
.back-btn{margin-left:auto;align-self:center;white-space:nowrap;display:inline-flex;align-items:center;gap:3px}
/* 高频操作：返回按钮稍放大 + 图标加粗，更易点击 */
.btn-ghost.back-btn{padding:6px 13px;font-size:12.8px;font-weight:600;gap:5px;border-color:#d7e2ee}
.btn-ghost.back-btn:hover{border-color:var(--border-blue);background:var(--bg-blue);color:var(--dark-blue)}
.btn-ghost.back-btn .ico{width:15px;height:15px;stroke-width:2.4}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 3px rgba(15,23,42,.05),0 8px 20px rgba(15,23,42,.05);overflow:hidden;margin-bottom:18px;}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;border-bottom:1px solid var(--line-soft);flex-wrap:wrap;}
.panel-title{font-size:13.5px;font-weight:700;color:var(--text-main);display:inline-flex;align-items:center;gap:7px}
.panel-title .ico{color:var(--primary-blue)}
.panel-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.btn-primary{background:var(--primary-blue);color:#fff;font-size:12.5px;font-weight:500;padding:6px 13px;border-radius:8px;transition:.15s;}
.btn-primary:hover{background:var(--dark-blue)}
.btn-ghost{border:1px solid var(--line);background:#fff;font-size:12.3px;padding:5px 11px;border-radius:8px;color:var(--text-muted);transition:.15s;}
.btn-ghost:hover{border-color:var(--border-blue);color:var(--dark-blue);background:var(--bg-blue)}
.mini-select,.mini-input{border:1px solid var(--line);border-radius:8px;padding:5px 9px;font-size:12.3px;background:#fff;color:var(--text-main)}
.mini-input{width:170px}
.mini-select:focus,.mini-input:focus{border-color:var(--primary-blue)}

/* —— 采购头条设置面板 —— */
.hl-set-panel{border-color:#d9e6f4;background:linear-gradient(135deg,#f3f9ff 0%,#ffffff 60%,#edf5fd 100%)}
.hl-set-panel .panel-title .ico{color:var(--primary-blue)}
.hl-set-body{padding:14px 16px}
.hl-cur{font-size:13px;color:var(--text-main);margin-bottom:12px}
.hl-cur b{color:var(--dark-blue);font-weight:700}
.hl-pick{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.hl-pick .mini-select{min-width:280px;flex:1;max-width:440px}
/* 今日要闻：后台勾选列表 */
.today-picked{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:7px}
.today-picked li{display:flex;align-items:center;gap:9px;background:#f8fafc;border:1px solid var(--line);border-radius:9px;padding:7px 11px;font-size:13px}
.today-picked .tp-no{flex:none;width:21px;height:21px;border-radius:6px;background:#e0f2fe;color:#0284c7;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.today-picked .tp-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-main)}
.today-picked .tp-cat{flex:none;font-size:12px;color:var(--text-muted)}
.today-picked .btn-ghost{padding:3px 9px;font-size:12px}
.today-picked .btn-ghost[disabled]{opacity:.45;cursor:default}
.today-picked .tp-empty{background:none;border:none;color:#94a3b8;font-size:12.5px;padding:4px 2px}
.tp-yes{font-size:12px;color:#0284c7;margin-right:7px}

.table-wrap{overflow-x:auto}
.table{width:100%;border-collapse:collapse;font-size:12.8px}
/* 2026-09-29 后台布局整治：列数一多（用户 9 列 / 套餐 11 列 / 订单 8 列），
   width:100% 会把列压到极窄，文字被迫折成五六行 —— 实测「用户与会员」单元格最高 244px、
   全部 108 行超高，就是典型的"挤压错行"。给每张宽表定一个可读下限，超出部分交给
   .table-wrap 横向滚动，列宽回到自然宽度后行高立刻正常。 */
#userMTable{min-width:1080px}
#planTable{min-width:1200px}
#orderTable{min-width:1040px}
#logTable{min-width:900px}
#permStaffTable{min-width:820px}
#catSegTable{min-width:620px}
.table th{text-align:left;font-weight:600;color:var(--text-muted);font-size:11.8px;padding:10px 14px;background:#f8fafc;border-bottom:1px solid var(--line-soft);white-space:nowrap}
.table td{padding:11px 12px;border-bottom:1px solid var(--line-soft);color:var(--text-main);vertical-align:middle}
/* 后台表格：标题列限宽省略；操作列固定在右侧，横向滚动时始终可见（撤销/发布不会被挤出去） */
.table .td-title{max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.table th:last-child{position:sticky;right:0;background:#f8fafc;z-index:2}
.table td:last-child{position:sticky;right:0;background:#fff;z-index:1;box-shadow:-8px 0 10px -8px rgba(15,23,42,.14)}
.table .btn-ghost.danger{color:#b91c1c;border-color:#fecaca}
.table .btn-ghost.danger:hover{background:#fef2f2}
.table tbody tr:hover{background:#f8fdff}
.table tbody tr:last-child td{border-bottom:none}
.cell-user{display:flex;align-items:center;gap:9px}
.cell-user .avatar{width:28px;height:28px;font-size:11.5px;border-radius:8px;background:linear-gradient(135deg,#38bdf8,#0284c7);color:#fff;display:flex;align-items:center;justify-content:center;flex:none}
.cell-user b{font-weight:600;display:block;font-size:12.8px}
.cell-user span{font-size:11px;color:var(--text-muted)}
.tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;border-radius:20px;font-weight:500;white-space:nowrap}
.tag .ico{opacity:.85}
.tag-blue{background:var(--bg-blue);color:var(--dark-blue)}
.tag-gray{background:#f1f5f9;color:var(--text-muted)}
.tag-green{background:#ecfdf5;color:#16a34a}
.tag-amber{background:#fffbeb;color:#d97706}
.tag-red{background:#fef2f2;color:#dc2626}
.tag-purple{background:#f3e8ff;color:#7c3aed}
.bar{width:88px;height:5px;border-radius:3px;background:#f1f5f9;overflow:hidden;display:inline-block;vertical-align:middle;margin-right:7px}
.bar i{display:block;height:100%;background:linear-gradient(90deg,#38bdf8,#0284c7);border-radius:3px}
/* 这两个容器里是 JS 动态拼出来的表格，本身没有 .table-wrap 包裹；
   而 .panel 是 overflow:hidden，宽表会被直接裁掉、连横向滚动条都没有。补上滚动。 */
#permMatrix,#smsDetail{overflow-x:auto}

/* 操作列按钮较多（用户表 5 个），不换行会顶宽整列、换行时又容易把行高撑成两倍，
   这里允许折行并略微收紧间距/内距，尽量让按钮在一行内排完。 */
.row-actions{display:flex;gap:4px;flex-wrap:wrap}
.row-btn{font-size:11.5px;color:var(--dark-blue);padding:3px 6px;border-radius:6px;display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.row-btn:hover{background:var(--bg-blue)}
.row-btn.danger{color:#dc2626}
.row-btn.danger:hover{background:#fef2f2}

/* 2026-09-29 后台布局整治：
   ① minmax(0,1fr) —— 原来写 1fr（等价 minmax(auto,1fr)），只要某张卡里出现
      dysmsapi.aliyuncs.com / SMS_512585462 这类不可断的长串，就会把该列撑宽、其余列被挤窄
      （实测短信页四张卡宽度变成 143/279/59/210，第三张只剩 59px）。minmax(0,1fr) 强制等分。 */
.stat-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow-sm);min-width:0}
.stat .s-label{font-size:11.5px;color:var(--text-muted);display:flex;align-items:center;gap:6px;min-width:0}
/* 指标值可能是一长串英文（模板 CODE / 域名），允许中途断行，否则会顶破卡片 */
.stat .s-value{font-size:22px;font-weight:700;color:var(--text-main);margin-top:5px;letter-spacing:.3px;
  min-width:0;overflow-wrap:anywhere;line-height:1.25}
.stat .s-value small{font-size:12px;color:var(--text-muted);font-weight:500;margin-left:3px}
.stat .s-foot{font-size:11px;color:var(--text-muted);margin-top:3px}
.stat.accent{background:linear-gradient(135deg,#0ea5e9,#0369a1);border-color:transparent}
.stat.accent .s-label,.stat.accent .s-foot{color:rgba(255,255,255,.8)}
.stat.accent .s-value{color:#fff}

.agent-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:13px;padding-bottom:20px}
.agent-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:15px;box-shadow:var(--shadow-sm);transition:.16s;cursor:pointer;display:flex;flex-direction:column}
.agent-card:hover{border-color:var(--primary-blue);box-shadow:0 4px 14px rgba(14,165,233,.14);transform:translateY(-2px)}
.ac-top{display:flex;align-items:flex-start;gap:11px}
.ac-icon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex:none;background:var(--bg-blue);border:1px solid var(--border-blue)}
.ac-name{font-size:14px;font-weight:700;color:var(--text-main)}
.ac-cat{font-size:11px;color:var(--text-muted);margin-top:1px}
.ac-desc{font-size:12.4px;color:var(--text-muted);line-height:1.75;margin-top:10px;flex:1}
.ac-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}
.ac-foot{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding-top:11px;border-top:1px solid var(--line-soft)}
.ac-use{font-size:11.5px;color:var(--text-muted)}
.ac-btn{font-size:12px;font-weight:600;color:var(--dark-blue);display:inline-flex;align-items:center;gap:2px}
.agent-card:hover .ac-btn .ico{transform:translateX(2px)}
.ac-btn .ico{transition:transform .18s}

.plan-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding-bottom:20px}
.plan{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-sm);position:relative;display:flex;flex-direction:column}
.plan-join{margin-top:14px;width:100%;padding:8px;font-size:12.4px;font-weight:600;border-radius:8px;
  border:1px solid var(--border-blue);color:var(--dark-blue);background:var(--bg-blue);transition:.15s;
  display:flex;align-items:center;justify-content:center;gap:6px}
.plan-join:hover{background:var(--primary-blue);border-color:var(--primary-blue);color:#fff}
.plan.hot .plan-join{background:var(--primary-blue);border-color:var(--primary-blue);color:#fff}
.plan.hot .plan-join:hover{background:var(--dark-blue)}
.plan.hot{border-color:var(--primary-blue);box-shadow:0 6px 22px rgba(14,165,233,.14)}
.plan .p-badge{position:absolute;top:-9px;right:12px;font-size:10.5px;background:var(--primary-blue);color:#fff;padding:2px 8px;border-radius:20px;font-weight:500}
.plan h4{font-size:14px;font-weight:700;color:var(--text-main)}
.plan .p-price{font-size:20px;font-weight:700;color:var(--dark-blue);margin:6px 0 10px}
.plan .p-price small{font-size:11.5px;color:var(--text-muted);font-weight:500}
.plan ul{list-style:none;display:flex;flex-direction:column;gap:6px}
.plan li{font-size:12.2px;color:var(--text-muted);display:flex;gap:7px;align-items:flex-start}
.plan li svg{color:var(--primary-blue);margin-top:3px}
.plan li .ico{color:var(--primary-blue);margin-top:3px}

/* ---------------- 舆情 / 标讯 ---------------- */
.info-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--border-blue);
  border-radius:var(--radius);padding:12px 16px;margin-bottom:14px;box-shadow:var(--shadow-sm)}
.info-bar .ib-label{font-size:12.5px;color:var(--text-muted)}
.info-bar .ib-role{font-size:13px;font-weight:700;color:var(--dark-blue);display:inline-flex;align-items:center;gap:5px}
.info-bar .ib-tags{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.info-bar .ib-tag{font-size:11.5px;background:var(--bg-blue);color:var(--dark-blue);border:1px solid var(--border-blue);
  padding:2px 9px;border-radius:20px;display:inline-flex;align-items:center;gap:3px}
.info-bar .ib-btn{margin-left:auto;font-size:12px;color:var(--dark-blue);border:1px solid var(--border-blue);
  background:var(--bg-blue);padding:5px 12px;border-radius:8px;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
.info-bar .ib-btn:hover{background:#e0f2fe}

/* ===== 右侧停靠栏（全局第三栏） ===== */
.right-dock{width:clamp(300px,24vw,368px);flex:none;background:var(--bg-app);border-left:1px solid var(--line);display:flex;flex-direction:column;position:relative;transition:width .16s ease;min-width:0;overflow:hidden}
.right-dock.collapsed{width:0!important}
.right-dock.hidden{display:none!important}
/* 输出模式（智能体回答 / 质疑函草稿）正文较长，右栏放宽一档便于阅读与复制 */
.right-dock.mode-output{width:clamp(360px,34vw,560px)}
@media (max-width:1000px){ .right-dock.mode-output{width:min(92vw,560px)} }
.right-dock.mode-news #rdPanels{display:none}
.right-dock.mode-output #rdNewsPanel{display:none}
.rd-resizer{position:absolute;left:-3px;top:0;bottom:0;width:7px;cursor:col-resize;z-index:6;background:transparent}
.rd-resizer:hover{background:linear-gradient(90deg,transparent,rgba(14,165,233,.22))}
.rd-head{display:flex;align-items:center;justify-content:space-between;padding:13px 14px;border-bottom:1px solid var(--line);background:#fff;flex:none}
/* 资讯模式（采购舆情页等）：移除顶部「采购舆情」标题板件，右栏直接以「热点排行」卡片开头；
   折叠按钮悬浮到右栏右上角，保留收起能力 */
.right-dock.mode-news .rd-head{position:absolute;top:10px;right:10px;z-index:5;background:none;border-bottom:none;padding:0}
.right-dock.mode-news .rd-title{display:none}
/* 头部工具区：复制全文 + 收起（仅输出模式显示复制） */
.rd-tools{display:flex;align-items:center;gap:6px;margin-left:auto}
.rd-copy{width:26px;height:26px;border:none;background:#f1f5f9;border-radius:6px;cursor:pointer;color:var(--text-muted);
  display:flex;align-items:center;justify-content:center;transition:.15s}
.rd-copy[hidden]{display:none}
.rd-copy svg{display:block}
.rd-copy:hover{background:#e2e8f0;color:var(--dark-blue)}
.rd-copy.ok{background:#ecfdf5;color:#0e9f6e}
.rd-title{font-size:14px;font-weight:700;color:var(--text-main);display:flex;align-items:center;gap:7px}
.rd-collapse{width:26px;height:26px;border:none;background:#f1f5f9;border-radius:6px;cursor:pointer;color:var(--text-muted);font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;transition:.15s}
.rd-collapse svg{display:block}
.rd-collapse:hover{background:#e2e8f0;color:var(--dark-blue)}
.rd-scroll{flex:1;overflow-y:auto;padding:12px}
.rd-panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 3px rgba(15,23,42,.05),0 8px 20px rgba(15,23,42,.05);overflow:hidden;margin-bottom:14px}
.rd-panel-hd{display:flex;align-items:center;gap:8px;padding:11px 15px;border-bottom:1px solid var(--line);font-size:14px;font-weight:700;color:var(--text-main)}
.rd-panel-hd::before{content:"";width:3px;height:14px;border-radius:2px;background:var(--primary-blue)}
.rd-panel-hd.sub{font-weight:600;color:var(--text-muted);font-size:13px;border-top:1px solid #f1f5f9}
.rd-panels{display:flex;flex-direction:column;padding:14px 16px}
/* WorkBuddy 风格：卡片式输出面板（原空态占位提示已按需求移除） */
/* 输出区扁平结构：正文直接铺在面板里，「回答」徽标 + 内容（参考 WorkBuddy 结果面板） */
.rd-badge{display:inline-flex;align-items:center;background:#e0f2fe;color:var(--primary-blue);font-size:12px;font-weight:600;padding:3px 10px;border-radius:6px;margin-bottom:10px;align-self:flex-start}
.rd-body{font-size:13px;line-height:1.8;color:var(--text-main);word-break:break-word}
.rd-body .md p{margin-bottom:.9em}
.rd-body .md p:last-child{margin-bottom:0}
.rd-body table{border-collapse:collapse;width:100%;margin:.8em 0;font-size:12.5px}
.rd-body th,.rd-body td{border:1px solid var(--line);padding:5px 8px;text-align:left}
/* 输出面板内的代码块沿用统一浅色配色（不再单独深色底） */
.rd-body pre{background:#f5f9fd;border:1px solid #e3edf7;border-left:3px solid var(--primary-blue);
  border-radius:8px;padding:11px 13px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;font-size:12.5px;line-height:1.9}
.rd-body pre code{background:none;color:#22384c;padding:0;font-size:12.5px;line-height:1.9}
/* 展开按钮与折叠按钮（.rd-collapse）同款式同位置：收起时由 JS 把它定位到折叠按钮原位，箭头方向相反 */
.rd-reopen{position:fixed;top:14px;right:12px;z-index:50;width:26px;height:26px;padding:0;border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer;color:var(--text-muted);display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(15,23,42,.14);transition:.15s}
.rd-reopen[hidden]{display:none}
.rd-reopen:hover{background:#f1f5f9;color:var(--dark-blue)}
.rd-reopen svg{width:13px;height:13px;display:block}
.news-rank,.news-latest{list-style:none;margin:0;padding:6px 0}
.news-rank li,.news-latest li{display:flex;align-items:center;gap:9px;padding:8px 15px;font-size:13.5px;color:var(--text-main);cursor:pointer;transition:.14s;border-bottom:1px solid #f1f5f9}
.news-rank li:last-child,.news-latest li:last-child{border-bottom:none}
.news-rank li:hover,.news-latest li:hover{background:#f3f9ff;color:var(--dark-blue)}
.news-rank .rk{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:5px;font-size:12px;font-weight:700;color:#fff;background:#9fb3c8;flex-shrink:0}
.news-rank .rk1{background:#e23b3b}.news-rank .rk2{background:#f0820b}.news-rank .rk3{background:#e0a800}
.news-rank .lt,.news-latest .lt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.news-rank .rc{flex-shrink:0;margin-left:6px;font-size:11.5px;color:var(--text-muted);font-variant-numeric:tabular-nums}
.news-latest .lt::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--primary-blue);margin-right:8px;vertical-align:middle}
@media (max-width:1000px){ .right-dock{position:fixed;right:0;top:0;bottom:0;z-index:45;box-shadow:-10px 0 30px rgba(0,0,0,.12)} .right-dock.collapsed{display:none} }
@media (max-width:920px){ .main-content{padding:28px 16px 18px} }

/* 舆情栏目筛选：外层 bar 承载「更多筛选」下拉（不被筛选条 overflow 裁切） */
.filter-bar{display:flex;align-items:center;gap:20px;margin:2px 0 24px;min-width:0}
.filter-more{position:relative;flex:none}
/* 所有板件固定一排展示；滚动条完全隐藏（极端窄屏仍可横向滑动兜底），消除拥挤感 */
.filter-row{display:flex;gap:6px;flex-wrap:nowrap;overflow-x:auto;min-width:0;scrollbar-width:none;-ms-overflow-style:none}
.filter-row .filter-chip{flex:none;white-space:nowrap;font-size:14px;padding:7px 16px}
.filter-row::-webkit-scrollbar{display:none}
/* 轻量胶囊标签：无边框 + 浅灰底，选中为浅蓝底深蓝字（2026-10-28 与知识库板件统一） */
.filter-chip{font-size:14px;padding:7px 16px;border-radius:20px;border:1px solid transparent;background:transparent;color:#4E5969;cursor:pointer;transition:.15s;font-weight:500}
.filter-chip:hover{background:var(--bg-blue);color:var(--dark-blue)}
.filter-chip.on{background:var(--bg-blue);border-color:transparent;color:var(--dark-blue);font-weight:600}
/* 「更多筛选」下拉：收纳使用频率低的栏目，保持筛选行一行展示 */
.fmore{display:inline-flex;align-items:center;gap:4px;font-size:14px;padding:7px 16px;border-radius:20px;border:1px solid transparent;background:transparent;color:#4E5969;cursor:pointer;white-space:nowrap;transition:.15s}
.fmore:hover{border-color:var(--bg-blue);color:var(--dark-blue)}
.fmore.on{border-style:solid;border-color:transparent;background:var(--bg-blue);color:var(--dark-blue);font-weight:600}
.fmore .fmore-arrow{transition:transform .18s}
.fmore.open .fmore-arrow{transform:rotate(180deg)}
.fmore-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:124px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 26px rgba(15,23,42,.14);padding:6px;display:none;flex-direction:column;gap:2px;z-index:20}
.fmore.open .fmore-menu{display:flex}
.fmore-item{padding:8px 12px;border-radius:8px;font-size:14px;color:#4E5969;cursor:pointer;white-space:nowrap;transition:.14s}
.fmore-item:hover{background:var(--bg-blue);color:var(--dark-blue)}
.fmore-item.on{background:var(--bg-blue);color:var(--dark-blue);font-weight:600}
/* 结果总数提示 */
.news-count{margin:0 0 16px;font-size:14px;color:#4E5969}
.news-count b{color:var(--news-accent);font-weight:600}
.news-count:empty{display:none}

/* 采购舆情：容器加宽到与知识库一致后，列表改为自适应多列网格（最小 440px 一卡），
   避免单卡被拉伸成超宽条；窄屏自动回落为单列 */
.news-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(440px,1fr));gap:16px;padding-bottom:20px;align-items:stretch}
/* 网格布局下改用 gap 控制间距，取消卡片自身 margin-bottom 避免双重留白 */
#viewNews .news-card{margin-bottom:0}
/* 等高卡片：同排卡片拉齐高度，卡片内容纵向排布，底部来源/时间/CTA 统一压到卡片底部对齐 */
.news-list .news-card{display:flex;flex-direction:column;height:100%}
.news-card{background:#fff;border:none;border-radius:var(--radius);padding:24px;margin-bottom:16px;box-shadow:var(--news-shadow-sm);transition:.18s}
.news-card:hover{transform:translateY(-2px);box-shadow:var(--news-shadow-md)}
.nc-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
#viewNews .news-card .tag{font-size:12px;padding:2px 8px;border-radius:4px;font-weight:500}
.nc-title{font-size:17px;font-weight:600;color:#1D2129;line-height:1.6;margin-bottom:12px;transition:color .15s;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.news-card:hover .nc-title{color:var(--news-accent-dark)}
.nc-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:0}
/* HOT → 实心火苗图标，不加色底 */
.nc-hot{display:inline-flex;align-items:center;justify-content:center;font-size:13px;line-height:1;padding:2px 3px;vertical-align:middle}
.nc-headline{font-size:10.5px;background:#fff4e0;color:#b8650b;padding:2px 7px;border-radius:4px;font-weight:600;display:inline-flex;align-items:center;gap:2px}
.nc-sum{font-size:14px;color:#4E5969;line-height:1.6;margin-bottom:16px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* 来源 / 时间弱化：更浅的灰，让位于标题与摘要 */
.nc-foot{display:flex;align-items:center;gap:16px;margin-top:auto;font-size:13px;color:#86909C;flex-wrap:wrap}
/* 「就此提问」= 核心 CTA：蓝紫渐变 + AI 星芒图标（文字加粗加深影，保证渐变底上清晰锐利） */
/* 「就此提问」= 核心 CTA：纯色钢蓝底 + 白字，去掉渐变/投影/字距，最干净清晰 */
.nc-foot .nc-ask{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:500;color:#fff;background:var(--primary-blue);border:none;border-radius:16px;padding:5px 13px;cursor:pointer;box-shadow:0 3px 8px rgba(14,165,233,.18);-webkit-font-smoothing:antialiased;transition:.16s}
.nc-foot .nc-ask:hover{background:var(--dark-blue);box-shadow:0 4px 11px rgba(2,132,199,.28);transform:translateY(-1px)}
.nc-foot .nc-ask .ico{width:11px;height:11px;stroke-width:2.2;transition:transform .18s}
.nc-foot .nc-ask:hover .ico{transform:translateX(2px)}
/* 「详情」= 幽灵按钮（Ghost）：无底色无描边、浅灰图标+文字，视觉重量让位给下方 AI 按钮 */
.nc-detail{flex:none;color:#86909C;cursor:pointer;display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:500;background:none;border:none;padding:3px 6px;border-radius:6px;white-space:nowrap;transition:.15s}
.nc-detail:hover{color:var(--news-accent);background:var(--news-accent-bg)}
.nc-detail .ico{width:13px;height:13px;transition:transform .18s}
.nc-detail:hover .ico{transform:translateX(1px)}

/* 前台舆情列表分页：浅蓝主题，与筛选胶囊风格统一 */
.news-pager{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin:24px 0 8px;padding-top:8px}
.news-pager .pager-btn{font-size:14px;min-width:38px;height:34px;padding:0 12px;border-radius:8px;border:1px solid #D5E4F2;background:#fff;color:#4E5969;cursor:pointer;transition:.15s;font-variant-numeric:tabular-nums}
.news-pager .pager-btn:hover{background:var(--bg-blue);border-color:var(--primary-blue);color:var(--dark-blue)}
.news-pager .pager-btn.on{background:var(--bg-blue);border-color:var(--primary-blue);color:var(--dark-blue);font-weight:600}
.news-pager .pager-btn.dis{color:#C9CDD4;background:#fff;border-color:#EEF1F5;cursor:not-allowed}
.news-pager .pager-btn.dis:hover{background:#fff;border-color:#EEF1F5;color:#C9CDD4}
.news-pager .pager-ell{color:#C9CDD4;font-size:14px;padding:0 2px;user-select:none}
.news-pager .pager-info{margin-left:8px;font-size:13px;color:#86909C;font-variant-numeric:tabular-nums;white-space:nowrap}

/* 采购知识库三栏列表分页器（与资讯分页器同款交互） */
.kb-pager{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin:24px 0 8px;padding-top:12px;border-top:1px dashed #EEF1F5}
.kb-pager .pager-btn{font-size:14px;min-width:38px;height:34px;padding:0 12px;border-radius:8px;border:1px solid #D5E4F2;background:#fff;color:#4E5969;cursor:pointer;transition:.15s;font-variant-numeric:tabular-nums}
.kb-pager .pager-btn:hover{background:var(--bg-blue);border-color:var(--primary-blue);color:var(--dark-blue)}
.kb-pager .pager-btn.on{background:var(--bg-blue);border-color:var(--primary-blue);color:var(--dark-blue);font-weight:600}
.kb-pager .pager-btn.dis{color:#C9CDD4;background:#fff;border-color:#EEF1F5;cursor:not-allowed}
.kb-pager .pager-btn.dis:hover{background:#fff;border-color:#EEF1F5;color:#C9CDD4}
.kb-pager .pager-ell{color:#C9CDD4;font-size:14px;padding:0 2px;user-select:none}
.kb-pager .pager-info{margin-left:8px;font-size:13px;color:#86909C;font-variant-numeric:tabular-nums;white-space:nowrap}
/* 后台列表分页器容器：列表面板 padding:0 时给分页留左右与底部留白 */
.kb-pager-host{padding:0 16px 16px}
.kb-pager-host:empty{padding:0}

/* ---------- 实务问答库（前台） ----------
   2026-11-11：顶部「全部问题 / 政府采购 / 招投标 / 国企采购」筛选按钮已移除，
   统一改为左侧栏「业务领域 / 答复部门 / 高频关键词」多维筛选（复用 .kb-side 体系）。 */
.kb-qa-item{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px 20px;margin-bottom:14px;box-shadow:0 1px 3px rgba(15,24,40,.05),0 8px 20px rgba(15,24,40,.04);transition:.18s}
.kb-qa-item:hover{border-color:#BFD7EE;box-shadow:0 4px 14px rgba(15,24,40,.09)}
.kb-qa-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding-bottom:12px;margin-bottom:13px;border-bottom:1px solid #EDF1F6;font-size:13px;color:#4E5969}
.kb-qa-no{font-weight:400;color:#86909C;letter-spacing:.2px;white-space:nowrap}
.kb-qa-no b{color:var(--dark-blue);font-weight:700;font-size:14px;letter-spacing:.5px;margin-left:2px}
.kb-qa-cat{display:inline-flex;align-items:center;background:#E7F4EF;color:#2E8B6F;border-radius:6px;padding:3px 10px;font-size:12px;font-weight:600;line-height:1;white-space:nowrap}
.kb-qa-meta{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px}
.kb-qa-kw,.kb-qa-unit,.kb-qa-time{color:#3A4A52;white-space:nowrap}
.kb-qa-kw i,.kb-qa-unit i,.kb-qa-time i{font-style:normal;color:#A9B2C0;margin-right:5px}
.kb-qa-time{color:#86909C;font-variant-numeric:tabular-nums}
.kb-qa-body{font-size:14px;line-height:1.85;color:var(--text)}
.kb-qa-q{display:flex;gap:10px;align-items:flex-start;margin-bottom:12px;padding:10px 12px;border-radius:8px;background:#F1F8F5}
.kb-qa-a{display:flex;gap:10px;align-items:flex-start;margin-bottom:12px;padding:12px 14px;border-radius:8px;background:#F2F7FC}
.kb-qa-mark{flex:none;width:20px;height:20px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;margin-top:6px}
.kb-qa-mark.q{background:#3DA98A}
.kb-qa-mark.a{background:#5AA0D6}
.kb-qa-text{flex:1;min-width:0}
.kb-qa-q .kb-qa-text{font-size:14.5px;font-weight:400;line-height:1.85;color:#3A4A52}
.kb-qa-a .kb-qa-text{font-size:14.5px;font-weight:400;line-height:1.85;color:#3A4A52}
.kb-qa-text mark{background:#E6F3EC;color:#1F7A5B;padding:0 1px;border-radius:2px}
/* 实务问答正文：后台录入的换行/空行还原为段落，并区分章节、提问、解答层级 */
.kb-qa-text{white-space:normal}
.kb-qa-p{margin:0 0 6px;line-height:1.85;overflow-wrap:anywhere;word-break:break-word}
.kb-qa-p:last-child{margin-bottom:0}
.kb-qa-gap{margin-top:11px}
.kb-qa-title{font-size:15px;font-weight:600;color:#2E3D4D;line-height:1.7}
.kb-qa-intro{font-size:13.8px;color:#5B6875;margin-top:8px;line-height:1.8}
.kb-qa-h{font-size:14.5px;font-weight:700;color:#1B4F7A;border-left:3px solid #5AA0D6;padding-left:10px;margin:14px 0 8px}
.kb-qa-h2{font-weight:600;color:#2E4A61;margin-top:10px}
.kb-qa-qline{font-weight:600;color:#2E3D4D;margin-top:10px}
.kb-qa-aline{margin-top:2px}
.kb-qa-lead{font-weight:700;color:#1B6FA8}
.kb-field-tip{font-size:11.5px;color:#9AA5B1;font-weight:400;margin-left:6px}
.kb-empty,.kb-loading{text-align:center;color:var(--text-muted);padding:40px 0;font-size:14px}
.kb-back{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--text-muted);cursor:pointer;margin-bottom:14px;user-select:none;transition:.15s}
.kb-back:hover{color:var(--dark-blue)}
.kb-back-arrow{font-size:18px;line-height:1}
.kb-page-head h2{font-size:21px;font-weight:700;color:var(--text-main);margin:0 0 6px}
.kb-page-head p{font-size:13.5px;color:var(--text-muted);margin:0;line-height:1.7}

.bid-list{display:flex;flex-direction:column;gap:12px;padding-bottom:20px}
.bid-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:15px 17px;box-shadow:var(--news-shadow-sm);transition:.18s}
.bid-card:hover{transform:translateY(-2px);box-shadow:var(--news-shadow-md);border-color:var(--line)}
.bid-card.hit{border-left:3px solid var(--news-accent)}
.bc-top{display:flex;align-items:flex-start;gap:12px}
.bc-title{font-size:14.5px;font-weight:700;color:var(--text-main);line-height:1.55;flex:1;min-width:0}
.bc-score{flex:none;text-align:center;min-width:56px}
.bc-score b{display:block;font-size:18px;color:var(--news-accent-dark);line-height:1.2}
.bc-score span{font-size:10.5px;color:var(--text-muted)}
.bc-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:12.3px;color:var(--text-muted);margin-top:9px}
.bc-meta b{color:var(--text-main);font-weight:600}
.bc-foot{display:flex;align-items:center;gap:8px;margin-top:11px;flex-wrap:wrap}
.bc-hit{font-size:11px;background:var(--news-accent-bg);color:var(--news-accent-dark);border:1px solid var(--news-accent-bg);padding:2px 9px;border-radius:20px}
.bc-act{margin-left:auto;display:flex;gap:6px}
/* ---------------- 用户注册 ---------------- */
/* 注册页顶部状态提示：已注册 / 未注册 / 已登录 */
.reg-notice-slot:empty{display:none}
.reg-notice{display:flex;align-items:center;gap:11px;margin:0 0 14px;padding:12px 14px;
  border-radius:10px;font-size:12.9px;line-height:1.7;
  border:1px solid var(--border-blue);background:var(--bg-blue);color:var(--dark-blue)}
.reg-notice.ok{border-color:#bbf7d0;background:#f0fdf4;color:#15803d}
.reg-notice .rn-ico{flex:none;display:inline-flex;align-items:center}
.reg-notice .rn-txt{flex:1;min-width:0}
.reg-notice .rn-txt b{font-weight:600}
.reg-notice .rn-txt span{opacity:.85}
.reg-notice .rn-acts{flex:none;display:flex;align-items:center;gap:8px}
.reg-notice .rn-btn{background:var(--primary-blue);color:#fff;border:none;font-size:12.5px;font-weight:600;
  padding:7px 18px;border-radius:8px;display:inline-flex;align-items:center;gap:6px;transition:.15s;
  box-shadow:0 2px 8px rgba(14,165,233,.28)}
.reg-notice .rn-btn:hover{background:var(--dark-blue)}
.reg-notice .rn-btn.ghost{background:#fff;color:var(--text-muted);border:1px solid var(--line);font-weight:500;box-shadow:none}
.reg-notice .rn-btn.ghost:hover{border-color:var(--border-blue);color:var(--dark-blue);background:var(--bg-blue)}
.reg-wrap{display:grid;grid-template-columns:7fr 3fr;gap:18px;align-items:stretch;padding-bottom:20px;}
.reg-wrap .panel{margin-bottom:0}
.reg-side .panel{margin-bottom:0}
/* 注册表单呼吸感（参考稿）：更大字号、更高输入框、更松间距（仅作用域注册页，不影响登录弹窗等共用表单） */
#viewRegister .panel-head{padding:16px 22px}
#viewRegister .panel-title{font-size:15.5px}
#viewRegister .panel-title .ico{width:17px;height:17px}
#viewRegister .panel-head .tag{font-size:11.5px;padding:3px 10px}
#viewRegister .reg-body{padding:22px}
#viewRegister .form-row{margin-bottom:18px}
#viewRegister .form-row label{font-size:13.5px;font-weight:500;color:var(--text-main);margin-bottom:8px}
#viewRegister .form-row input,
#viewRegister .form-row select{height:46px;padding:0 14px;font-size:14px;border-radius:10px;border-color:#dfe6ef}
#viewRegister .form-row input::placeholder{color:#9aa7b8}
#viewRegister .form-row input:focus,
#viewRegister .form-row select:focus{border-color:var(--primary-blue);box-shadow:0 0 0 3px rgba(14,165,233,.12)}
#viewRegister .pwd-wrap input{padding-right:46px}
#viewRegister .pwd-eye{width:32px;height:32px;right:9px}
#viewRegister .code-row button{width:126px;font-size:13.2px}
#viewRegister .hint{font-size:12.3px;margin-top:8px}
#viewRegister .agree{display:flex;align-items:flex-start;gap:9px;font-size:13px;line-height:1.8;margin:16px 0 18px;color:var(--text-muted);border:1px solid transparent;border-radius:10px;padding:11px 14px;cursor:pointer;transition:.18s;background:transparent}
#viewRegister .agree input{width:15px;height:15px;margin-top:4px;flex:none;accent-color:var(--primary-blue)}
#viewRegister .agree:has(input:checked){background:#f0f9ff;border-color:#bae6fd;color:var(--text-main)}
#viewRegister .agree .lnk-agree{color:#2563eb;font-weight:400;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
#viewRegister .agree .lnk-agree:hover{color:#1d4ed8;text-decoration-thickness:1.5px}
/* 协议详情正文（弹窗） */
#modalBody .agree-doc{max-height:64vh;overflow-y:auto;padding-right:4px}
#modalBody .agree-doc h4{font-size:13.5px;font-weight:700;color:var(--text-main);margin:16px 0 6px}
#modalBody .agree-doc h4:first-of-type{margin-top:2px}
#modalBody .agree-doc p{font-size:13px;line-height:1.9;color:#475569;margin:0 0 8px}
#modalBody .agree-doc .lead{color:#334155;font-weight:500;line-height:1.95}
#viewRegister .reg-submit{padding:13px;font-size:14.5px;border-radius:11px}
#viewRegister .reg-login{font-size:13px;margin-top:14px}
.reg-card{min-width:0}
.reg-body{padding:16px 18px 18px}
/* 注册页三态：状态卡片（已登录 / 已注册未登录）居中展示，隐藏表单 */
.reg-state-card{max-width:440px;margin:26px auto;text-align:center;padding:34px 30px;
  background:#fff;border:1px solid #e6edf5;border-radius:6px;box-shadow:0 8px 30px rgba(14,165,233,.08)}
.reg-state-card .rsc-av{width:58px;height:58px;margin:0 auto 14px;border-radius:16px;overflow:hidden;
  display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0ea5e9,#38bdf8);box-shadow:0 6px 16px rgba(14,165,233,.25)}
.reg-state-card .rsc-ico{width:64px;height:64px;margin:0 auto 14px;border-radius:18px;display:flex;align-items:center;justify-content:center;
  color:var(--primary-blue);background:#e0f2fe}
.reg-state-card .rsc-title{font-size:19px;font-weight:700;color:var(--text-main);margin-bottom:8px}
.reg-state-card .rsc-desc{font-size:13.5px;line-height:1.85;color:#64748b;margin-bottom:22px}
.reg-state-card .rsc-acts{display:flex;flex-direction:column;gap:10px}
.reg-state-card .rsc-acts .btn-primary,.reg-state-card .rsc-acts .btn-ghost{width:100%;justify-content:center;padding:12px}
/* 登录方式切换（密码登录 / 验证码登录） */
.lg-seg{display:flex;gap:6px;margin-bottom:14px;background:#f1f5f9;padding:4px;border-radius:10px}
.lg-seg-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:5px;border:0;background:transparent;
  padding:7px 10px;border-radius:8px;font-size:12.6px;color:var(--text-muted);cursor:pointer;transition:.15s}
.lg-seg-btn:hover{color:var(--dark-blue)}
.lg-seg-btn.on{background:#fff;color:var(--dark-blue);font-weight:600;box-shadow:0 1px 3px rgba(15,23,42,.09)}
.lg-foot{margin-top:12px;text-align:right;font-size:12.2px}
.lg-foot a{color:var(--primary-blue);cursor:pointer}
.lg-foot a:hover{text-decoration:underline}
/* 登录 / 重置密码弹窗（modal-auth）：对齐注册页视觉规范，增强呼吸感 */
.modal-auth{width:440px}
.modal-auth .modal-head{padding:16px 24px;border-bottom:none}
.modal-auth .modal-title{font-size:15.5px}
.modal-auth .modal-body{padding:14px 24px 8px}
.modal-auth .modal-foot{padding:10px 24px 16px;border-top:none}
.modal-auth .lg-wrap{padding-top:2px}
.modal-auth .lg-lead{font-size:12.8px;color:#8a97a8;margin:-4px 0 16px;line-height:1.7}
.modal-auth .lg-seg{display:flex;gap:6px;margin-bottom:20px;background:#f1f5f9;padding:5px;border-radius:11px}
.modal-auth .lg-seg-btn{padding:9px 10px;border-radius:8px;font-size:13.2px}
.modal-auth .form-row{margin-bottom:18px}
.modal-auth .form-row label{font-size:13.5px;font-weight:500;color:var(--text-main);margin-bottom:8px}
.modal-auth .form-row input{height:46px;padding:0 14px;font-size:14px;border-radius:10px;border-color:#dfe6ef}
.modal-auth .form-row input::placeholder{color:#9aa7b8}
.modal-auth .form-row input:focus{box-shadow:0 0 0 3px rgba(14,165,233,.12)}
.modal-auth .code-row button{width:126px;height:46px;font-size:13.2px;border-radius:10px}
.modal-auth .hint{font-size:12.3px;margin-top:8px;line-height:1.75}
.modal-auth .reg-submit{padding:13px;font-size:14.5px;border-radius:11px}
.modal-auth .lg-foot{margin-top:14px;font-size:12.8px}

.code-row{display:flex;gap:8px;align-items:stretch}
.code-row input{flex:1;min-width:0;letter-spacing:3px}
.code-row button{flex:none;width:120px;border:none;color:#fff;background:var(--primary-blue);font-size:12.8px;font-weight:600;border-radius:9px;transition:.15s;
  display:flex;align-items:center;justify-content:center;gap:5px;box-shadow:0 2px 8px rgba(14,165,233,.28)}
.code-row button:hover:not(:disabled){background:var(--dark-blue);box-shadow:0 3px 10px rgba(2,132,199,.32)}
.code-row button:disabled{background:#cbd5e1;color:#fff;cursor:not-allowed;box-shadow:none}
/* 密码框 + 显隐眼睛 */
.pwd-wrap{position:relative}
.pwd-wrap input{padding-right:40px;width:100%}
.pwd-eye{position:absolute;right:7px;top:50%;transform:translateY(-50%);width:28px;height:28px;border:0;background:none;color:var(--text-muted);cursor:pointer;
  display:flex;align-items:center;justify-content:center;border-radius:6px;transition:.15s}
.pwd-eye:hover{color:var(--dark-blue);background:#f1f5f9}
.pwd-eye.on{color:var(--primary-blue)}
/* 密码强度条 */
.pwd-meter{display:flex;align-items:center;gap:6px;margin-top:7px}
.pwd-meter span{flex:1;height:5px;border-radius:3px;background:#e2e8f0;transition:.18s}
.pwd-meter em{font-style:normal;font-size:11px;margin-left:3px;flex:none;color:var(--text-muted)}
.pwd-meter.lvl1 span:nth-child(-n+1){background:#f87171}
.pwd-meter.lvl1 em{color:#dc2626}
.pwd-meter.lvl2 span:nth-child(-n+2){background:#fbbf24}
.pwd-meter.lvl2 em{color:#d97706}
.pwd-meter.lvl3 span:nth-child(-n+3){background:#22c55e}
.pwd-meter.lvl3 em{color:#16a34a}
.hint{font-size:11.6px;color:var(--text-muted);margin-top:6px;line-height:1.7}
.hint.ok{color:#16a34a}
.hint.err{color:#dc2626}
.cat-note{font-size:11.8px;color:var(--dark-blue);background:var(--bg-blue);border-left:3px solid var(--primary-blue);
  padding:7px 11px;border-radius:0 8px 8px 0;margin-top:-5px;line-height:1.75}
.agree{display:flex;align-items:flex-start;gap:8px;font-size:12.3px;color:var(--text-muted);line-height:1.8;margin:14px 0 14px;cursor:pointer}
.agree input{margin-top:3px;accent-color:var(--primary-blue)}
.agree b{color:var(--dark-blue);font-weight:600}
.reg-submit{width:100%;padding:10px;font-size:13.5px;font-weight:600;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:7px}
.reg-submit:disabled{background:#94a3b8;cursor:not-allowed}
.reg-side{display:flex;flex-direction:column;gap:16px;min-width:0}
/* 双栏底边对齐：右栏末位面板 flex:1 吸收左右高差，两栏底边恒齐 */
.reg-side .panel{display:flex;flex-direction:column}
.reg-side .panel:last-child{flex:1}
.reg-side .panel:last-child .reg-steps{flex:1}
.reg-benefit{list-style:none;padding:12px 15px 13px;display:flex;flex-direction:column;gap:7px}
.reg-benefit li{font-size:12.6px;color:var(--text-muted);line-height:1.65;display:flex;gap:8px;align-items:flex-start}
.reg-benefit li svg{color:var(--primary-blue);margin-top:3px;flex:none}
.reg-benefit li .ico{color:var(--primary-blue);margin-top:3px;flex:none}
.reg-benefit b{color:var(--text-main);font-weight:600}
/* 注册流程步骤卡（右侧栏第二张，平衡左右高度） */
.reg-steps{list-style:none;padding:14px 16px 16px;margin:0;display:flex;flex-direction:column}
.reg-step{display:flex;gap:11px;position:relative;padding-bottom:15px}
.reg-step::before{content:'';position:absolute;left:10px;top:26px;bottom:1px;width:2px;background:var(--border-blue);border-radius:2px}
.reg-step:last-child{padding-bottom:0}
.reg-step:last-child::before{display:none}
.reg-step .rs-no{width:22px;height:22px;border-radius:50%;flex:none;background:var(--bg-blue);border:1px solid var(--border-blue);
  color:var(--dark-blue);font-size:11.5px;font-weight:700;display:flex;align-items:center;justify-content:center}
.reg-step:last-child .rs-no{background:var(--primary-blue);border-color:var(--primary-blue);color:#fff}
.reg-step .rs-main{min-width:0;padding-top:1px}
.reg-step .rs-t{font-size:12.8px;font-weight:600;color:var(--text-main);line-height:1.55}
.reg-step .rs-d{font-size:11.8px;color:var(--text-muted);margin-top:2px;line-height:1.65}
.reg-users{padding:8px 6px 12px;max-height:280px;overflow-y:auto}
.reg-user{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px}
.reg-user:hover{background:#f8fdff}
.reg-user .ru-av{width:30px;height:30px;border-radius:9px;flex:none;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#38bdf8,#0284c7);color:#fff;font-size:12px;font-weight:600}
.reg-user .ru-main{flex:1;min-width:0}
.reg-user .ru-name{font-size:12.8px;font-weight:600;color:var(--text-main);display:flex;align-items:center;gap:6px}
.reg-user .ru-sub{font-size:11px;color:var(--text-muted);margin-top:2px}
.reg-user .ru-del{opacity:0;color:var(--text-muted);font-size:11.5px;padding:3px 6px;border-radius:6px;display:inline-flex;align-items:center}
.reg-user:hover .ru-del{opacity:1}
.reg-user .ru-del:hover{color:#dc2626;background:#fef2f2}
.reg-empty{text-align:center;color:var(--text-muted);font-size:12.3px;padding:22px 0}
.reg-done{text-align:center;padding:14px 6px 8px}
.reg-done .rd-icon{width:56px;height:56px;border-radius:50%;background:#ecfdf5;color:#16a34a;display:flex;align-items:center;
  justify-content:center;margin:0 auto 12px;font-size:26px}
.reg-done h3{font-size:16px;color:var(--text-main);font-weight:700}
.reg-done p{font-size:12.6px;color:var(--text-muted);margin-top:6px;line-height:1.8}
.reg-info{margin:16px 0 4px;border:1px solid var(--line-soft);border-radius:10px;overflow:hidden}
.reg-info .ri-row{display:flex;font-size:12.6px;border-bottom:1px solid var(--line-soft)}
.reg-info .ri-row:last-child{border-bottom:none}
.reg-info .ri-k{width:96px;flex:none;padding:9px 12px;background:#f8fafc;color:var(--text-muted)}
.reg-info .ri-v{padding:9px 12px;color:var(--text-main);flex:1;min-width:0}
.reg-done-acts{display:flex;gap:8px;margin-top:16px}
.reg-done-acts button{flex:1;padding:9px;font-size:12.8px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;gap:5px}

/* ---------------- 个人中心 / 登录入口 ---------------- */
.ac-card{border:1px solid var(--line-soft);border-radius:6px;padding:16px 18px;background:#fff;box-shadow:var(--shadow-sm)}
.ac-top2{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.ac-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.reg-login{text-align:center;font-size:12.6px;color:var(--text-muted);margin-top:12px}
.reg-login a{color:var(--dark-blue);font-weight:600;cursor:pointer;margin-left:4px}
.reg-login a:hover{text-decoration:underline}

/* ---------------- 后台管理 Tab / 加入会员 ---------------- */
/* 后台 7 个 Tab，窄屏下必须允许换行，否则会被压缩成一团（原为不换行） */
.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap;row-gap:2px}
.tab-item{font-size:12.8px;color:var(--text-muted);padding:8px 14px;border-radius:8px 8px 0 0;cursor:pointer;
  border:1px solid transparent;border-bottom:none;margin-bottom:-1px;transition:.15s;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.tab-item .ico{opacity:.8}
.tab-item.on .ico{opacity:1;color:var(--primary-blue)}
.tab-item:hover{color:var(--dark-blue);background:var(--bg-blue)}
.tab-item.on{color:var(--dark-blue);font-weight:600;background:#fff;border-color:var(--line);border-bottom:1px solid #fff}
.tab-pane[hidden]{display:none}
.join-cta{display:flex;align-items:center;gap:18px;background:#fff;border:1px solid var(--border-blue);border-radius:var(--radius);
  padding:16px 18px;box-shadow:var(--shadow-sm);margin-bottom:12px}
.jc-text{flex:1;min-width:0}
.jc-title{font-size:14px;font-weight:700;color:var(--text-main)}
.jc-sub{font-size:12.6px;color:var(--text-muted);line-height:1.85;margin-top:5px}
.jc-btn{flex:none;padding:11px 26px;font-size:13.5px;font-weight:600;border-radius:10px;display:inline-flex;align-items:center;gap:7px}
.join-note{font-size:11.8px;color:var(--text-muted);text-align:center;padding-bottom:20px}
.plan-pick{display:flex;flex-direction:column;gap:9px}
.plan-opt{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:10px;padding:11px 13px;cursor:pointer;transition:.15s}
.plan-opt:hover{border-color:var(--border-blue);background:var(--bg-blue)}
.plan-opt.on{border-color:var(--primary-blue);background:var(--bg-blue)}
.plan-opt .po-name{font-size:13.2px;font-weight:600;color:var(--text-main);min-width:66px}
.plan-opt .po-price{font-size:13px;color:var(--dark-blue);font-weight:600}
.plan-opt .po-items{font-size:11.6px;color:var(--text-muted);line-height:1.7}
.plan-opt .po-radio{margin-left:auto;width:16px;height:16px;border-radius:50%;border:2px solid var(--line);flex:none;position:relative}
.plan-opt.on .po-radio{border-color:var(--primary-blue)}
.plan-opt.on .po-radio::after{content:'';position:absolute;inset:3px;border-radius:50%;background:var(--primary-blue)}

.empty-tip{text-align:center;color:var(--text-muted);font-size:13px;padding:34px 0}

/* ---------------- 弹窗 ---------------- */
.modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.42);z-index:100;display:none;align-items:center;justify-content:center;padding:20px}
.modal-mask.open{display:flex;animation:fade .18s ease}
.modal{width:520px;max-width:100%;max-height:86vh;background:#fff;border-radius:6px;box-shadow:0 20px 50px rgba(0,0,0,.18);display:flex;flex-direction:column;overflow:hidden}
.modal-page{width:min(1100px,96vw);max-width:100%;max-height:94vh}
.modal-page .modal-body{padding:22px 26px}
.modal-page .modal-head{padding:16px 26px}
.modal-page .modal-foot{padding:14px 26px}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line-soft)}
.modal-title{font-size:14.5px;font-weight:700;color:var(--text-main);display:flex;align-items:center;gap:8px}
.modal-title .ico{color:var(--primary-blue)}
.icon-btn{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--text-muted)}
.icon-btn:hover{background:#f1f5f9;color:var(--dark-blue)}
.modal-body{padding:16px;overflow-y:auto}
.modal-foot{padding:12px 16px;border-top:1px solid var(--line-soft);display:flex;justify-content:flex-end;gap:8px}
.form-row{margin-bottom:13px}
.form-row label{display:block;font-size:12.2px;color:var(--text-main);margin-bottom:5px;font-weight:600}
.form-row input,.form-row select,.form-row textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:8px 11px;font-size:13px;background:#fff}
.form-row textarea{resize:vertical;min-height:74px;line-height:1.7}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{border-color:var(--primary-blue)}
/* 舆情编辑：头条主图上传 */
.op-img-box{margin-top:2px;border:1px dashed #cdd8e4;border-radius:9px;width:100%;max-width:480px;height:150px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#f7fafc}
.op-img-box img{width:100%;height:100%;object-fit:cover;display:block}
.op-img-ph{color:#9aa4b0;font-size:13px}
.op-img-actions{display:flex;align-items:center;gap:10px;margin-top:9px;flex-wrap:wrap}
.op-img-btn{display:inline-block;cursor:pointer;margin:0;line-height:1.2}
.op-img-del.hidden{display:none}
/* 富文本编辑器 */
.rte-wrap{border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#fff}
.rte-wrap:focus-within{border-color:var(--primary-blue)}
.rte-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:4px;padding:7px 8px;border-bottom:1px solid var(--line-soft);background:#f8fafc}
.rte-btn{min-width:30px;height:28px;padding:0 8px;border:1px solid transparent;border-radius:6px;background:#fff;color:var(--text-main);font-size:13px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1}
.rte-btn:hover{background:#eef2f8;border-color:var(--line)}
.rte-btn:active{background:#e2e8f0}
.rte-sep{width:1px;height:18px;background:var(--line);margin:0 3px}
.rte-wrap .rte-sel{width:auto;flex:none;height:28px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:12.5px;color:var(--text-main);padding:0 6px;cursor:pointer}
.rte-wrap .rte-sel:hover{border-color:var(--primary-blue)}
.rte-btn.on{background:var(--bg-blue);border-color:var(--primary-blue);color:var(--dark-blue)}
.rte{height:340px;overflow-y:auto;padding:14px 16px;font-size:14px;line-height:1.85;outline:none}
.rte:empty:before{content:attr(data-ph);color:var(--text-muted);opacity:.7}
.rte p{margin:0 0 8px}
.rte ul,.rte ol{margin:0 0 8px;padding-left:22px}
.rte font[size="1"]{font-size:12px}.rte font[size="3"]{font-size:14px}.rte font[size="4"]{font-size:16px}.rte font[size="5"]{font-size:19px}.rte font[size="6"]{font-size:23px}.rte font[size="7"]{font-size:28px}
.rte img{max-width:100%}
.form-tip{display:block;margin-top:5px;font-size:11.6px;color:var(--text-muted);line-height:1.5}
.regperm-form{padding:14px 16px}
.btn-warn{background:#fff;border:1px solid #f0a020;color:#d98300;font-size:12.5px;font-weight:500;padding:6px 13px;border-radius:8px;transition:.15s;}
.btn-warn:hover{background:#fff7e8;border-color:#e09010}
.form-grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.check-list{display:flex;flex-wrap:wrap;gap:7px}
.check-item{font-size:12px;padding:5px 10px;border-radius:18px;border:1px solid var(--line);color:var(--text-muted);cursor:pointer;transition:.14s}
.check-item.on{background:var(--primary-blue);border-color:var(--primary-blue);color:#fff}

.toast{position:fixed;left:50%;bottom:34px;transform:translate(-50%,14px);background:#1e293b;color:#fff;font-size:12.8px;padding:9px 18px;border-radius:22px;box-shadow:0 12px 30px rgba(0,0,0,.16);opacity:0;pointer-events:none;transition:.22s;z-index:200}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------------- Markdown ---------------- */
.md{font-size:15.5px;line-height:1.9;color:var(--text-main)}
.msg-user .md{color:inherit}   /* 2026-10-15 浅柔底：原 #fff 白字改为继承气泡深蓝字色 */
/* 标题与正文拉开层级：h1/h2 16px、h3 15px（正文 14.5px），间距随之加大 */
.md h1,.md h2,.md h3{font-size:16px;font-weight:700;color:var(--text-main);margin:17px 0 8px;line-height:1.5;letter-spacing:.2px}
.md h3{font-size:15px}
.md h1:first-child,.md h2:first-child,.md h3:first-child{margin-top:0}
.md p{margin:8px 0}
.md ul,.md ol{margin:8px 0;padding-left:22px}
.md li{margin:5px 0}
.md strong{font-weight:700;color:var(--dark-blue)}
/* 2026-10-15：删除 .msg-user .md strong{color:#fff} —— 浅柔底上用默认深蓝 strong 色 */
.md code{background:#f1f5f9;border-radius:5px;padding:1px 5px;font-size:12.5px;font-family:Consolas,Menlo,monospace;color:var(--dark-blue)}
/* 代码块：原为深底浅字（#0f172a/#cbd5e1），在结果面板里太重、粘进 Word 也违和。
   改为政务钢蓝浅底 + 深墨字，左侧一道钢蓝竖条标识「成文内容」区块；
   pre-wrap 让质疑函这类长段落自动折行，不再横向滚动。 */
.md pre{background:#f5f9fd;border:1px solid #e3edf7;border-left:3px solid var(--primary-blue);
  border-radius:8px;padding:12px 14px;margin:10px 0;overflow-x:auto;white-space:pre-wrap;word-break:break-word}
.md pre code{background:none;color:#22384c;padding:0;font-size:12.5px;line-height:1.9;font-family:Consolas,Menlo,monospace}

/* 代码块一键复制：容器相对定位，按钮常驻右上角（不做 hover 才显示，避免触屏点不到） */
.md-pre{position:relative}
.md-pre pre{padding-right:64px}   /* 给右上角复制按钮留位，长行不会压到按钮下面 */

/* 质疑函草稿：按《政府采购供应商质疑函范本》排版
   整块淡钢蓝底色突出显示（与周围白底正文拉开层次）；
   标题「质疑函」居中 22px 加粗（范本：仿宋二号加粗）；
   正文 16px 仿宋；小标题（一、二、三、四…）用黑体加粗；
   字段行（质疑供应商：/地址：…）不缩进；段落首行缩进 2 字。 */
.md-pre.letter{background:#f3f9fe;border:1px solid #d8e8f8;border-radius:10px;overflow:hidden;
  box-shadow:0 1px 4px rgba(14,120,200,.06);margin:10px 0}
.md-pre-hd{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px 12px;background:#e7f2fd;border-bottom:1px solid #d8e8f8}
.md-pre-t{font-size:12.5px;font-weight:700;color:var(--dark-blue);letter-spacing:.5px}
.md-pre-hd .md-copy{position:static;box-shadow:none}
.md-pre.letter pre{background:none;border:none;border-left:none;border-radius:0;
  padding:16px 18px 18px;overflow-x:auto;
  font-family:"仿宋_GB2312","FangSong","仿宋","Fangsong_GB2312",serif;
  font-size:16px;line-height:1.9;color:#1f2d3d;letter-spacing:.2px}
.md-pre.letter pre code{background:none;color:inherit;padding:0;font-size:inherit;font-family:inherit;
  white-space:pre-wrap;word-break:break-word}
.md-pre.letter .ln{display:block;text-indent:2em}
.md-pre.letter .ln-blank{text-indent:0}
.md-pre.letter .ln-title{text-align:center;text-indent:0;font-size:22px;font-weight:700;letter-spacing:6px;margin-bottom:8px}
.md-pre.letter .ln-sec{text-indent:0;font-family:"黑体","SimHei","Heiti SC","Microsoft YaHei",sans-serif;font-weight:700;margin-top:12px}
.md-pre.letter .ln-field{text-indent:0}
.md-copy{position:absolute;top:6px;right:6px;z-index:2;display:inline-flex;align-items:center;gap:3px;
  height:22px;padding:0 8px;font-size:11.5px;line-height:1;color:var(--text-muted);
  background:#fff;border:1px solid var(--line);border-radius:6px;cursor:pointer;
  box-shadow:0 1px 3px rgba(15,23,42,.08);transition:.15s}
.md-copy:hover{color:var(--dark-blue);border-color:var(--border-blue);background:var(--bg-blue)}
.md-copy.ok{color:#0e9f6e;border-color:#a7f3d0;background:#ecfdf5}
.md blockquote{border-left:3px solid var(--border-blue);background:var(--bg-blue);padding:8px 12px;margin:9px 0;border-radius:0 8px 8px 0;color:var(--text-main);font-size:13px}
.md table{width:100%;border-collapse:collapse;margin:10px 0;font-size:12.6px}
.md th,.md td{border:1px solid var(--line);padding:7px 10px;text-align:left}
.md th{background:#f8fafc;font-weight:600;color:var(--text-main)}
.md hr{border:none;border-top:1px solid var(--line);margin:13px 0}

/* 智能体输出增强：链接 / 脚注 / 章节标签 */
.msg-user .md a.md-link{color:var(--dark-blue);border-bottom-color:var(--border-blue)}   /* 2026-10-15 浅柔底：原 #e0f2fe 浅链改深蓝 */
.md a.md-link{color:var(--dark-blue);text-decoration:none;border-bottom:1px solid var(--border-blue);transition:border-color .15s}
.md a.md-link:hover{border-bottom-color:var(--dark-blue)}
.md sup.md-fn{font-size:10.5px;line-height:1;vertical-align:super;margin:0 1px}
.md sup.md-fn a{color:var(--primary-blue);text-decoration:none;font-weight:600;padding:0 1px}
.md sup.md-fn a:hover{text-decoration:underline}
.md-sec{display:inline-block;margin:14px 0 6px;padding:2px 10px;border-radius:6px;
  background:var(--bg-blue);border:1px solid var(--border-blue);
  color:var(--dark-blue);font-size:12.5px;font-weight:700;line-height:1.7}
.md-sec:first-child{margin-top:0}
.md-tag{color:var(--dark-blue);font-weight:700}
.md-notes{margin-top:14px;padding-top:10px;border-top:1px dashed var(--line);font-size:12.2px;color:var(--text-muted);line-height:1.7}
.md-notes-title{font-weight:600;color:var(--text-muted);margin-bottom:4px}
.md-notes ol{margin:0;padding-left:18px}
.md-notes li{margin:4px 0;word-break:break-word}
.md-notes a.md-link{font-size:12.2px}

/* ---------------- 舆情详情弹窗 ---------------- */
.nd-head{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.nd-head .nd-title{font-size:17.5px;font-weight:700;color:var(--text-main);line-height:1.55;flex:1;min-width:200px}
.nd-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--text-muted);margin-bottom:14px;padding-bottom:11px;border-bottom:1px dashed var(--line-soft)}
.nd-block{margin-bottom:13px}
.nd-block:last-child{margin-bottom:0}
.nd-label{font-size:12px;font-weight:700;color:var(--dark-blue);margin-bottom:5px;display:flex;align-items:center;gap:6px}
.nd-label::before{content:"";width:3px;height:12px;border-radius:2px;background:var(--primary-blue)}
.nd-text{font-size:13.2px;line-height:1.8;color:var(--text-main)}
.nd-content.md{font-size:14.2px;line-height:2.05;color:var(--text-main);background:#f8fafc;border:1px solid var(--line-soft);border-radius:10px;padding:18px 22px;margin-top:2px}
.nd-content.md p{margin:9px 0}
.nd-content.md ul,.nd-content.md ol{margin:9px 0;padding-left:24px}
.nd-content.md li{margin:5px 0}
.nd-content.md b,.nd-content.md strong{font-weight:700}
.nd-content.md blockquote{margin:10px 0;padding:8px 14px;border-left:3px solid var(--primary-blue);background:#eef4fb;border-radius:0 8px 8px 0;color:var(--dark-blue)}
.nd-content.md font[size="1"]{font-size:12px}.nd-content.md font[size="2"]{font-size:13px}
.nd-content.md font[size="3"]{font-size:14px}.nd-content.md font[size="4"]{font-size:16px}
.nd-content.md font[size="5"]{font-size:19px}.nd-content.md font[size="6"]{font-size:23px}
.nd-content.md font[size="7"]{font-size:28px}
.nd-empty{font-size:12.6px;color:var(--text-muted);padding:10px 12px;background:#f8fafc;border-radius:8px;text-align:center}

/* ---------------- 响应式 ---------------- */
@media (max-width:900px){
  .sidebar{width:220px;padding:12px}
  .welcome-header h1{font-size:32px;letter-spacing:1px}
  .stat-row,.plan-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .reg-wrap{grid-template-columns:1fr}
}
@media (max-width:680px){
  body{overflow:auto}
  .sidebar{position:fixed;left:0;top:0;bottom:0;z-index:40;transform:translateX(-100%);transition:transform .22s ease;box-shadow:0 10px 30px rgba(0,0,0,.12)}
  .sidebar.open{transform:none}
  .main-content{padding:24px 14px}
  .stat-row,.plan-row{grid-template-columns:minmax(0,1fr)}
  .quick-actions{gap:7px}
  .action-tag{font-size:14px;padding:7px 14px}
  .toolbar-left .agent-pill{display:none}
  .toolbar-left .upload-hint{display:none}
}

/* ---------- 矮屏兜底：竖向空间紧张时逐级压缩，保证欢迎区与功能板件不被输入卡挤掉 ----------
 * 屏幕按 CSS 像素算：1080p 屏 + Windows 125%/150% 缩放时，浏览器视口常只剩 600~700px，
 * 若不压缩，输入卡（含开场白面板）会吃掉过多高度，导致上方的功能标签被挤出可视区。 */
@media (max-height:800px){
  .main-content{padding:20px 18px 16px}
  .welcome-header{margin-top:54px;margin-bottom:20px}
  .welcome-header h1{font-size:32px;margin-bottom:10px;letter-spacing:1px}
  .welcome-header p{font-size:14.4px;line-height:1.55}
  .quick-bar{margin-bottom:12px}
  .quick-actions{gap:6px}
  .action-tag{padding:7px 14px;font-size:14.5px;border-radius:19px}
  /* 内距必须上下对称（原来是 4px 10px 5px 不对称，矮屏会额外偏 0.5px） */
  .composer-intro{margin-bottom:4px;padding:4px 10px}
  .composer-float{margin-bottom:7px;gap:7px}
  .fchip{padding:4px 11px;font-size:12px;line-height:1.3;gap:4px}
  .chat-input-container textarea{min-height:84px}   /* 三行（行高略收紧，矮屏只差 4px） */
}
@media (max-height:640px){
  .main-content{padding:12px 16px 10px}
  .welcome-header{margin-top:36px;margin-bottom:12px}
  .welcome-header h1{font-size:27px;margin-bottom:8px}
  .welcome-header p{font-size:13.8px;line-height:1.5}
  .quick-bar{margin-bottom:9px}
  .quick-actions{gap:5px}
  .action-tag{padding:6px 13px;font-size:13.5px;border-radius:18px}
  .chat-input-container textarea{min-height:82px;max-height:118px;line-height:1.6}
  .input-toolbar{margin-top:6px;padding-top:6px}
  /* 内距上下对称，与上一档同一套逻辑 */
  .composer-intro{margin-bottom:4px;padding:4px 10px}
  .composer-float{margin-bottom:6px;gap:6px}
  .fchip{padding:4px 10px;font-size:11.5px;line-height:1.3;border-radius:14px}
}

/* 2026-09-30 修复：小视口下弹窗限高 86vh，摘要 5 行 + 214px 二维码超高，
   modal-body 出现滚动把二维码裁切。整体压缩垂直占用，并加矮屏降级档。 */
.pay-wrap{display:flex;flex-direction:column;gap:10px;align-items:center}
.pay-summary{width:100%;background:var(--line-soft);border:1px solid var(--line);border-radius:6px;padding:8px 13px}
.pay-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:5px 0;font-size:12.8px;border-bottom:1px dashed var(--line)}
.pay-row:last-child{border-bottom:none}
.pay-row>span{color:var(--text-muted);white-space:nowrap}
.pay-row>b{font-weight:600;color:var(--text-main);text-align:right}
.pay-amount{color:#dc2626;font-size:19px}
.pay-oid{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.6px;color:var(--text-muted);font-weight:400}
.pay-qr{width:196px;height:196px;background:#fff;border:1px solid var(--line);border-radius:6px;display:flex;align-items:center;justify-content:center;padding:7px;box-sizing:border-box}
.pay-qr svg{display:block}
.pay-loading,.pay-demo,.pay-err{font-size:12.5px;color:var(--text-muted);text-align:center;line-height:1.9;padding:10px}
.pay-demo b{display:block;font-size:15px;color:var(--text-main);margin-bottom:4px}
.pay-demo span{font-size:11.6px}
.pay-err{color:#dc2626}
.pay-tip{font-size:12.2px;color:var(--text-muted);line-height:1.7;text-align:center;margin:0;max-width:440px}
/* 支付方式徽标：微信支付用品牌绿高亮 */
.pay-chip{display:inline-flex;align-items:center;gap:5px;padding:2.5px 10px;border-radius:14px;font-size:12px;font-weight:600;line-height:1.5;vertical-align:middle}
.pay-chip svg{flex:none}
.pay-chip-wechat{background:#07c160;color:#fff;box-shadow:0 2px 6px rgba(7,193,96,.28)}
.pay-chip-demo{background:#e2e8f0;color:#475569}
/* 矮屏降级：确保「摘要+二维码+提示」一屏放完，不再滚动裁切 */
@media (max-height:760px){
  .pay-wrap{gap:8px}
  .pay-summary{padding:6px 12px}
  .pay-row{padding:3.5px 0;font-size:12.3px}
  .pay-amount{font-size:17.5px}
  .pay-qr{width:164px;height:164px;padding:6px}
  .pay-tip{font-size:11.8px;line-height:1.6}
  .modal-body{padding:12px 16px}
  .modal-foot{padding:9px 16px}
}
@media (max-width:680px){
  .pay-qr{width:180px;height:180px}
  .pay-row>b{font-size:12.5px}
}

/* ==========================================================
 * 账号中心
 * ========================================================== */
#viewAccount{max-width:1180px}
.ac-wrap{display:grid;grid-template-columns:236px 1fr;gap:16px;align-items:start;width:100%}

/* 左侧导航 */
.ac-nav.panel{padding:16px 12px;margin-bottom:0}
.ac-user{display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px 8px 16px;border-bottom:1px solid var(--line-soft);text-align:center}
.ac-user .ru-av{width:46px;height:46px;font-size:17px;border-radius:14px}
/* 形象化头像：SVG 自带渐变与人像，圆角跟随容器，避免露出容器底色 */
.ru-av svg,.msg-avatar svg,.cell-user .avatar svg{display:block;border-radius:inherit}
.acu-main{min-width:0}
.acu-main .ru-name{font-size:13.5px;justify-content:center}
.acu-tags{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;margin-top:2px}
.ac-menu{display:flex;flex-direction:column;gap:2px;margin-top:10px}
.ac-nav-btn{display:flex;align-items:center;gap:9px;width:100%;padding:9px 12px;border-radius:9px;
  font-size:12.8px;color:var(--text-muted);transition:.15s;text-align:left}
.ac-nav-btn:hover{background:#f8fafc;color:var(--text-main)}
.ac-nav-btn.on{background:var(--bg-blue);color:var(--dark-blue);font-weight:600}
.ac-nav-btn .ico{color:inherit;opacity:.95}
.ac-badge{margin-left:auto;min-width:17px;height:17px;padding:0 5px;border-radius:9px;background:#dc2626;color:#fff;
  font-size:10.5px;font-weight:600;display:inline-flex;align-items:center;justify-content:center}

/* 右侧内容 */
.ac-main{min-width:0}
.ac-main .panel{margin-bottom:0}
.ac-body{padding:16px 18px 20px}
.ac-loading,.ac-empty{text-align:center;color:var(--text-muted);font-size:12.5px;padding:28px 0}
.ac-head-act{display:flex;gap:8px}
.ac-note{font-size:11.8px;color:var(--text-muted);line-height:1.8;margin-top:14px;
  background:#f8fafc;border-left:3px solid var(--line);padding:8px 12px;border-radius:0 8px 8px 0}
.ac-sub{font-size:11px;color:var(--text-muted);margin-top:2px}
.ac-money{color:#dc2626}
.ac-code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.4px;color:var(--text-muted);
  background:#f8fafc;padding:1px 5px;border-radius:4px}

/* ===================== 知识库后台（内嵌 #admin 的「知识库」标签） ===================== */
.kb-subtabs{display:flex;gap:6px;flex-wrap:wrap;padding:10px 0 12px;border-bottom:1px solid var(--line-soft);margin-bottom:14px}
.kb-subtab{font-size:12.8px;color:var(--text-muted);padding:7px 14px;border-radius:8px;cursor:pointer;transition:.15s}
.kb-subtab:hover{color:var(--dark-blue);background:var(--bg-blue)}
.kb-subtab.on{color:#fff;font-weight:600;background:var(--primary-blue)}
/* 后台采购舆情：栏目分签 + 分页 */
.op-pager{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:12px 16px}
.op-pager .pg-info{color:var(--text-muted);font-size:13px;margin-right:6px}
.op-pager .pg-size{margin-left:auto}
.op-pg-btn{padding:5px 10px;border:1px solid var(--line-soft);background:#fff;border-radius:6px;cursor:pointer;font-size:13px;color:var(--text-muted);min-width:32px;line-height:1.4}
.op-pg-btn:hover:not(:disabled){background:var(--bg-blue);color:var(--dark-blue)}
.op-pg-btn.on{background:var(--primary-blue);border-color:var(--primary-blue);color:#fff;font-weight:600}
.op-pg-btn:disabled{opacity:.4;cursor:default}
.pg-ell{color:var(--text-muted);padding:0 4px}
.kb-main{min-height:200px}
.kb-field{margin-bottom:14px}
.kb-field label{display:block;font-size:12.6px;color:var(--text-muted);margin-bottom:5px;font-weight:500}
.kb-field input,.kb-field select,.kb-field textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 11px;font-size:13px;background:#fff;color:var(--text-main);outline:none;font-family:inherit}
.kb-field input:focus,.kb-field select:focus,.kb-field textarea:focus{border-color:var(--primary-blue);box-shadow:0 0 0 3px rgba(14,165,233,.08)}
.kb-field textarea{resize:vertical;line-height:1.7}
.kb-grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.kb-article-row{display:grid;grid-template-columns:90px 1fr 56px;gap:8px;margin-bottom:8px;align-items:start}
.kb-article-row input,.kb-article-row textarea{border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:12.5px;font-family:inherit;outline:none}
.kb-basis-row{display:flex;gap:8px;margin-bottom:6px;align-items:center}
.kb-basis-row select,.kb-basis-row input{border:1px solid var(--line);border-radius:6px;padding:6px 9px;font-size:12.5px;outline:none}
.kb-signal-hits{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:10px 12px;font-size:12.8px;line-height:1.85;max-height:220px;overflow:auto}
.kb-signal-hits mark{background:#fde047;padding:0 2px;border-radius:2px}
.kb-checklist{display:flex;flex-wrap:wrap;gap:8px}
.kb-checklist label{display:flex;align-items:center;gap:5px;font-size:12.8px;background:#f8fafc;padding:5px 10px;border-radius:6px;border:1px solid var(--line);cursor:pointer}
.kb-card{background:#fff;border:1px solid var(--line-soft);border-radius:6px;padding:16px}
.kb-card-h{font-size:13px;font-weight:600;color:var(--text-main);margin-bottom:8px}
.panel-body{padding:16px 18px}
.btn-ghost.danger{color:#dc2626;border-color:#fecaca}
.btn-ghost.danger:hover{background:#fef2f2}
.modal-head .x{margin-left:auto;font-size:20px;line-height:1;color:var(--text-muted);cursor:pointer;padding:2px 8px;border-radius:6px}
.modal-head .x:hover{background:var(--bg-blue);color:var(--dark-blue)}
@media(max-width:760px){ .kb-grid2{grid-template-columns:1fr} .kb-article-row{grid-template-columns:70px 1fr 48px} }

/* ---------- 知识库后台：标准基础库 / 品类知识库 / 需求标准库 新增组件 ---------- */
/* 全局 kb-tag 工具类（后台面板不在 #viewKb 作用域内，需独立定义） */
.kb-tag{font-size:11.5px;padding:1px 8px;border-radius:4px;background:#f3f4f6;color:var(--text-muted);white-space:nowrap;border:1px solid transparent;display:inline-block;line-height:1.7}
.kb-tag-effective{background:#ecfdf5;color:#047857;border-color:#a7f3d0}
.kb-tag-warn{background:#fffbeb;color:#b45309;border-color:#fde68a}
.kb-tag-amended{background:#fffbeb;color:#b45309;border-color:#fde68a}
.kb-tag-repealed{background:#f3f4f6;color:#6b7280;border-color:#e5e7eb}

/* 后台弹窗：需求标准附件上传区 */
.kb-att-upload{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.kb-att-upload input[type=file]{font-size:13px;max-width:340px}
.kb-att-tip{font-size:12px;color:var(--text-muted)}
.kb-att-list{display:flex;flex-direction:column;gap:6px}
.kb-att-row{display:flex;align-items:center;gap:8px;background:#f7fafc;border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:13px}
.kb-att-ic{font-size:16px;flex:none}
.kb-att-nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-att-sz{color:var(--text-muted);font-size:12px;flex:none}
.kb-att-link{color:var(--dark-blue);text-decoration:none;font-weight:500}
.kb-att-link:hover{text-decoration:underline}

/* 品类知识库：树 + 详情双栏布局 */
.kb-admin-cat-layout{display:flex;gap:0;min-height:560px;border:1px solid var(--line-soft);border-radius:8px;overflow:hidden}
.kb-admin-cat-side{width:280px;flex:none;border-right:1px solid var(--line-soft);background:#fafbfc;padding:14px}
.kb-admin-cat-side-title{font-size:12.5px;font-weight:600;color:var(--text-main);margin-bottom:10px}
.kb-admin-cat-detail{flex:1;padding:16px 18px;overflow:auto}
.kb-admin-cat-detail-head{margin-bottom:14px}
.kb-cat-detail-title{font-size:15px;font-weight:600;color:var(--text-main);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.kb-cat-detail-meta{margin:8px 0;display:flex;gap:6px;flex-wrap:wrap}
.kb-cat-admin-boards{display:grid;grid-template-columns:1fr;gap:12px;margin-bottom:14px}
.kb-cat-admin-board{background:#fff;border:1px solid var(--line-soft);border-radius:8px;padding:12px 14px}
.kb-cat-admin-board-h{font-size:13px;font-weight:600;color:var(--dark-blue);margin-bottom:8px;display:flex;align-items:center}
.kb-cat-admin-board-item{border-top:1px dashed var(--line);padding:8px 0}
.kb-cat-admin-board-item:first-of-type{border-top:none}
.kb-cat-admin-board-text{font-size:12.8px;line-height:1.75;color:var(--text-main);white-space:pre-wrap}
.kb-cat-admin-board-foot{font-size:11.5px;color:var(--text-muted);margin-top:4px;line-height:1.7}
.kb-cat-admin-section{margin-top:8px;background:#fff;border:1px solid var(--line-soft);border-radius:8px;padding:12px 14px}
@media(max-width:900px){ .kb-admin-cat-layout{flex-direction:column} .kb-admin-cat-side{width:auto;border-right:none;border-bottom:1px solid var(--line-soft)} .kb-cat-admin-boards{grid-template-columns:1fr} }

/* 需求标准库：引用清单 / 参数编辑行 */
.kb-std-quote-row{display:flex;gap:8px;margin-bottom:8px;align-items:center}
.kb-std-quote-row input{flex:1;border:1px solid var(--line);border-radius:7px;padding:7px 10px;font-size:12.8px;outline:none}
.kb-std-quote-row input:focus{border-color:var(--primary-blue)}
.kb-std-param-row{display:grid;grid-template-columns:1.4fr .8fr .7fr 1.6fr auto auto 1.2fr 48px;gap:7px;margin-bottom:8px;align-items:center}
.kb-std-param-row input,.kb-std-param-row select{border:1px solid var(--line);border-radius:7px;padding:7px 9px;font-size:12.5px;outline:none;width:100%}
.kb-std-param-row input:focus,.kb-std-param-row select:focus{border-color:var(--primary-blue)}
.kb-std-param-row .p_chk{display:flex;align-items:center;gap:3px;font-size:12px;color:var(--text-muted);white-space:nowrap}
.kb-std-param-row .p_chk input{width:auto}
@media(max-width:900px){ .kb-std-param-row{grid-template-columns:1fr 1fr;row-gap:6px} .kb-std-param-row .p_chk{justify-self:start} }


/* 键值信息表 */
.ac-info{border:1px solid var(--line-soft);border-radius:6px;overflow:hidden}
.ai-row{display:flex;align-items:flex-start;border-bottom:1px solid var(--line-soft)}
.ai-row:last-child{border-bottom:none}
.ai-k{width:132px;flex:none;padding:11px 14px;background:#f8fafc;font-size:12.3px;color:var(--text-muted)}
.ai-v{padding:11px 14px;font-size:12.6px;color:var(--text-main);line-height:1.7;word-break:break-all}
.ai-note{font-size:11.4px;color:var(--text-muted);margin-left:6px}

/* 汇总条 */
.ac-sum{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.acs-item{flex:1;min-width:118px;border:1px solid var(--line-soft);border-radius:6px;padding:10px 13px;background:#fcfdfe}
.acs-item span{display:block;font-size:11.4px;color:var(--text-muted);margin-bottom:4px}
.acs-item b{font-size:15px;color:var(--text-main)}

/* 概览：关键指标卡 */
.ac-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(186px,1fr));gap:12px;margin-bottom:14px}
.ac-kpi .kpi{border:1px solid var(--line-soft);border-radius:6px;padding:13px 15px;background:#fcfdfe}
.ac-kpi .kpi span{display:flex;align-items:center;gap:5px;font-size:11.6px;color:var(--text-muted)}
.ac-kpi .kpi b{display:block;font-size:23px;line-height:1.3;margin-top:7px;color:var(--text-main);font-weight:600}
.ac-kpi .kpi b em{font-style:normal;font-size:12px;font-weight:400;color:var(--text-muted);margin-left:3px}
.ac-kpi .kpi i{display:block;font-style:normal;font-size:11.4px;color:var(--text-muted);margin-top:5px}
.ac-kpi .kpi.warn{border-color:#fcd34d;background:#fffbeb}
.ac-kpi .kpi.warn b{color:#b45309}
.ac-kpi .kpi.danger{border-color:#fca5a5;background:#fef2f2}
.ac-kpi .kpi.danger b{color:#b91c1c}
.kpi-bar{height:5px;border-radius:3px;background:#e2e8f0;margin-top:9px;overflow:hidden}
.kpi-bar>i{display:block;height:100%;border-radius:3px;background:#0284c7}
.kpi-bar.low>i{background:#f59e0b}
.ac-alerts{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.ac-alert{display:flex;align-items:center;gap:7px;font-size:12.2px;padding:9px 12px;border-radius:9px;border:1px solid}
.ac-alert.info{background:var(--bg-blue);border-color:#bfdbfe;color:var(--dark-blue)}
.ac-alert.warn{background:#fffbeb;border-color:#fde68a;color:#92400e}
.ac-alert.danger{background:#fef2f2;border-color:#fecaca;color:#b91c1c}
.ac-quick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.ac-quick .btn-ghost{font-size:12.4px;padding:6px 12px}

/* 数据表格 */
.ac-table-wrap{overflow-x:auto;border:1px solid var(--line-soft);border-radius:6px}
.ac-table{width:100%;border-collapse:collapse;font-size:12.4px}
.ac-table th{text-align:left;font-weight:600;color:var(--text-muted);font-size:11.8px;
  padding:10px 13px;background:#f8fafc;border-bottom:1px solid var(--line-soft);white-space:nowrap}
.ac-table td{padding:10px 13px;border-bottom:1px solid var(--line-soft);color:var(--text-main);vertical-align:middle}
.ac-table tbody tr:last-child td{border-bottom:none}
.ac-table tbody tr:hover{background:#fcfdfe}
.ac-down{color:#dc2626}
.ac-up{color:#16a34a}

/* 权益信息 */
.ac-rights{display:flex;flex-direction:column;gap:14px}
.ar-card{border:1px solid var(--border-blue);background:var(--bg-blue);border-radius:6px;padding:14px 16px}
.ar-h{display:flex;align-items:center;gap:9px;font-size:12.4px;color:var(--text-muted)}
.ar-h b{font-size:16px;color:var(--text-main)}
.ar-desc{font-size:12.2px;color:var(--text-muted);line-height:1.75;margin-top:7px}
.ar-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.ar-item{border:1px solid var(--line-soft);border-radius:6px;padding:12px 14px;background:#fff}
.ar-item span{display:block;font-size:11.4px;color:var(--text-muted);margin-bottom:5px}
.ar-item b{font-size:16px;color:var(--text-main)}
.ar-item i{display:block;font-style:normal;font-size:11.2px;color:var(--text-muted);margin-top:4px}
.ar-bar-wrap{margin-top:2px}
.ar-bar-label{font-size:11.8px;color:var(--text-muted);margin-bottom:6px}
.ar-bar-label b{color:var(--text-main)}
.ar-bar{height:8px;border-radius:5px;background:var(--line-soft);overflow:hidden}
.ar-bar-in{height:100%;border-radius:5px;background:linear-gradient(90deg,#38bdf8,#0ea5e9);transition:width .3s}

/* 消息通知 */
.ac-notices{display:flex;flex-direction:column;gap:10px}
.acn-item{display:flex;align-items:flex-start;gap:11px;border:1px solid var(--line-soft);
  border-radius:6px;padding:12px 14px;background:#fff}
.acn-item.unread{background:#fcfdfe;border-color:var(--border-blue)}
.acn-dot{width:7px;height:7px;border-radius:50%;background:var(--line);margin-top:6px;flex:none}
.acn-item.unread .acn-dot{background:var(--primary-blue)}
.acn-main{flex:1;min-width:0}
.acn-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.acn-h b{font-size:13px;color:var(--text-main)}
.acn-new{font-size:9.5px;font-weight:700;color:#fff;background:#dc2626;padding:1px 5px;border-radius:4px;letter-spacing:.5px}
.acn-c{font-size:12.3px;color:var(--text-muted);line-height:1.8;margin-top:5px}
.acn-t{font-size:11.2px;color:var(--text-muted);margin-top:6px}

/* 账号安全 */
.ac-sec{display:flex;flex-direction:column;gap:11px}
.asec-item{display:flex;align-items:center;gap:13px;border:1px solid var(--line-soft);
  border-radius:6px;padding:14px 16px;background:#fff}
.asec-item.danger{border-color:#fecaca;background:#fffbfb}
.asec-ico{width:38px;height:38px;border-radius:10px;flex:none;display:flex;align-items:center;justify-content:center;
  background:var(--bg-blue);border:1px solid var(--border-blue);color:var(--dark-blue)}
.asec-item.danger .asec-ico{background:#fef2f2;border-color:#fecaca;color:#dc2626}
.asec-main{flex:1;min-width:0}
.asec-main b{display:block;font-size:13.2px;color:var(--text-main)}
.asec-main span{display:block;font-size:11.8px;color:var(--text-muted);margin-top:3px;line-height:1.7}
.btn-danger{border:1px solid #fecaca;background:#fff;font-size:12.3px;padding:6px 13px;border-radius:8px;
  color:#dc2626;transition:.15s;white-space:nowrap}
.btn-danger:hover{background:#dc2626;border-color:#dc2626;color:#fff}
.ac-warn{display:flex;gap:11px;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;padding:12px 14px;margin-bottom:14px}
.ac-warn .ico{color:#dc2626;margin-top:1px}
.ac-warn b{font-size:12.8px;color:#dc2626}
.ac-warn p{font-size:12px;color:var(--text-muted);line-height:1.8;margin-top:5px}
.ac-form-val{font-size:13px;color:var(--text-main)}
.ac-form-val .ac-sub{display:block;margin-top:3px}

@media (max-width:1000px){
  .ac-wrap{grid-template-columns:1fr}
  .ar-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:680px){
  .ar-grid{grid-template-columns:1fr}
  .ai-k{width:96px}
  .ac-body{padding:14px 12px 18px}
}

/* ==================== 知识库（v202610311 新增，.page 宽度统一由下方 1080px 规则控制） ==================== */
#viewKb .kb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:14px;padding-bottom:24px}
#viewKb .kb-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 3px rgba(15,23,42,.05),0 8px 20px rgba(15,23,42,.05);padding:18px;transition:.15s;cursor:pointer}
#viewKb .kb-card:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(15,23,42,.10);border-color:var(--news-accent)}
#viewKb .kb-ico{width:40px;height:40px;border-radius:11px;background:var(--news-accent-bg);color:var(--news-accent);display:flex;align-items:center;justify-content:center;margin-bottom:13px}
#viewKb .kb-ico svg{width:21px;height:21px}
#viewKb .kb-title{font-size:15px;font-weight:600;color:#1D2129;margin-bottom:7px}
#viewKb .kb-desc{font-size:12.5px;color:#86909C;line-height:1.75}
#viewKb .kb-soon{position:absolute;top:14px;right:14px;font-size:11px;color:#A9AEB8;background:#F2F3F5;border-radius:20px;padding:2px 9px}

/* ==================== 知识库前台（整合进主站栏目 · #viewKb 作用域，与后台 .kb-* 隔离） ==================== */
/* KB 视图整体：内容带宽从默认 780 提到 1080，居中后左右留白收窄（约原一半）；主区左 padding 压到最小 */
/* KB 正文：放宽到接近主区，使「正文↔左边栏」居中留白收窄到约一半（原 1080px 在宽屏下留白过大） */
#viewKb{max-width:min(1440px, calc(100% - 64px));margin:0 auto}
#viewKb .page{max-width:none;margin-left:auto;margin-right:auto}
#viewKb .hidden{display:none!important}
/* 主内容区对 KB 视图的左侧留白收窄（默认 12px → 4px），配合带宽提升，正文更贴近左侧栏 */
#viewKb{margin-left:4px;margin-right:4px}
@media (max-width:1180px){ #viewKb{max-width:100%} }
#viewKb .kb-loading{text-align:center;padding:40px;color:var(--text-muted);font-size:13px}

/* ---------- 头部：标题/描述 + 返回对话（上排）；功能板件 + 检索框（下排，同行） ---------- */
#viewKb .page-head{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto auto;column-gap:16px;row-gap:15px;padding-bottom:0;margin-bottom:30px;border-bottom:none}
#viewKb .page-head h2{grid-column:1;grid-row:1;gap:10px;color:#1D2129;border-right:none;padding-right:0;margin-right:0;font-size:18px;font-weight:600;letter-spacing:.5px}
#viewKb .page-head h2 .ico{box-sizing:content-box;width:18px;height:18px;padding:6px;border-radius:9px;background:rgba(14,165,233,.1);stroke:#0ea5e9}
#viewKb .page-head p{grid-column:1;grid-row:2;min-width:0;margin-top:0;width:auto;color:#86909C}
#viewKb .page-head .back-btn{grid-column:2;grid-row:1 / span 2;align-self:start;margin-left:0;padding:7px 14px;border-radius:9px;border-color:#E5E6EB;color:#4E5969;font-weight:500;background:#fff;transition:.15s}
#viewKb .page-head .back-btn:hover{border-color:#0ea5e9;color:#0ea5e9;background:rgba(14,165,233,.06)}
#viewKb .page-head .back-btn .ico{transition:transform .15s}
#viewKb .page-head .back-btn:hover .ico{transform:translateX(-2px)}
/* 下排：第一行功能板件，检索框 flex-basis:100% 自动换行独占下一行并拉满整行 */
#viewKb .kb-head-actions{grid-column:1 / -1;grid-row:3;display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:4px}
/* 功能板件：参照采购舆情 .filter-chip 胶囊样式（圆角 20px，悬浮浅蓝底，选中实心蓝） */
#viewKb .kb-scope-tabs{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;margin:0;padding:0;flex:1 1 auto;min-width:0}
#viewKb .kb-scope-tabs::-webkit-scrollbar{display:none}
#viewKb .kb-scope-tab{border:1px solid transparent;background:transparent;color:#4E5969;font-size:14px;line-height:1;padding:7px 16px;border-radius:20px;cursor:pointer;white-space:nowrap;transition:.15s;font-weight:500;flex:none}
#viewKb .kb-scope-tab:hover{background:var(--bg-blue);color:var(--dark-blue)} /* 2026-10-27：板件色系改回 TenderWork 主题色 */
#viewKb .kb-scope-tab.active{border-color:transparent;background:var(--bg-blue);color:var(--dark-blue);font-weight:600;box-shadow:none} /* 2026-10-27：去掉胶囊外边框 */
/* 检索框：独立一行拉满；整体作为带边框容器，检索按钮内嵌于输入框右侧 */
#viewKb .kb-head-search{flex:1 1 100%;display:flex;align-items:center;gap:10px;width:100%;height:46px;box-sizing:border-box;padding:0 6px 0 16px;border:1px solid #E5E6EB;border-radius:10px;background:#fff;transition:.15s;position:relative}
#viewKb .kb-head-search:focus-within{border-color:var(--primary-blue);box-shadow:0 0 0 3px rgba(14,165,233,.12)}
#viewKb .kb-head-search input{flex:1;min-width:0;height:100%;border:none;background:transparent;padding:0 46px 0 0;font-size:15px;outline:none;color:#1D2129}
#viewKb .kb-head-search input::placeholder{color:#A9AEB8}
/* 顶部全局检索：放大镜图标内嵌于输入框右侧 */
#viewKb .kb-head-search .kb-search-ico{position:absolute;right:12px;top:50%;transform:translateY(-50%);border:none;background:transparent;color:#A9AEB8;cursor:pointer;display:flex;padding:4px;line-height:0;transition:.15s}
#viewKb .kb-head-search .kb-search-ico:hover{color:var(--primary-blue)}
#viewKb .kb-head-search .kb-search-ico svg{width:18px;height:18px}

/* ---------- 入口卡片 ---------- */
#viewKb .kb-entry-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:26px}
#viewKb .kb-entry-card{background:#fff;border:1px solid var(--line);border-radius:6px;padding:24px 26px;transition:.18s;box-shadow:0 1px 3px rgba(15,24,40,.05),0 8px 20px rgba(15,24,40,.05);cursor:pointer}
#viewKb .kb-entry-card:hover{border-color:var(--primary-blue);box-shadow:0 6px 18px rgba(15,24,40,.10);transform:translateY(-2px)}
#viewKb .kb-ec-title{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:600;margin-bottom:8px;color:var(--text-main)}
#viewKb .kb-ec-icon{width:34px;height:34px;border-radius:9px;background:var(--bg-blue);color:var(--dark-blue);display:flex;align-items:center;justify-content:center;font-size:16px;flex:none}
#viewKb .kb-entry-card p{color:var(--text-muted);font-size:13px;margin-bottom:14px;line-height:1.7}
#viewKb .kb-ec-meta{display:flex;gap:18px;font-size:12.5px;color:#9ca3af;flex-wrap:wrap}
#viewKb .kb-ec-meta b{color:var(--dark-blue);font-weight:600;font-size:15px}

/* ---------- 区块标题 ---------- */
#viewKb .kb-section-title{font-size:15px;font-weight:600;margin-bottom:14px;display:flex;align-items:center;gap:8px;color:var(--text-main)}
#viewKb .kb-section-title::before{content:"";width:3px;height:14px;background:var(--primary-blue);border-radius:2px}

/* ---------- 最近更新 ---------- */
#viewKb .kb-update-list{background:#fff;border:1px solid var(--line);border-radius:6px;overflow:hidden;box-shadow:0 1px 3px rgba(15,24,40,.05)}
#viewKb .kb-update-item{display:flex;align-items:center;gap:12px;padding:13px 20px;border-bottom:1px solid var(--line);transition:.15s;cursor:pointer}
#viewKb .kb-update-item:last-child{border-bottom:none}
#viewKb .kb-update-item:hover{background:#fafbfc}
#viewKb .kb-ui-type{font-size:11.5px;padding:2px 8px;border-radius:4px;background:var(--bg-blue);color:var(--dark-blue);white-space:nowrap;font-weight:500}
#viewKb .kb-ui-title{flex:1;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-main)}
#viewKb .kb-ui-date{font-size:12px;color:#9ca3af;white-space:nowrap}

/* ---------- 列表页：左筛选 + 右内容 ---------- */
#viewKb .kb-page-with-side{display:grid;grid-template-columns:240px 1fr;gap:22px;align-items:start}
#viewKb .kb-side{position:sticky;top:10px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:4px 0;box-shadow:0 1px 3px rgba(15,24,40,.05);max-height:calc(100vh - 140px);overflow:auto}
/* 2026-11-02：删除 KB 双滚动条自定义样式，滚动条回退为浏览器原生（保留 overflow） */
#viewKb .kb-filter-group{padding:14px 18px;border-bottom:1px solid var(--line)}
#viewKb .kb-filter-group:last-child{border-bottom:none}
#viewKb .kb-filter-title{font-size:13px;font-weight:600;color:var(--text-main);margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}
#viewKb .kb-filter-title .collapse{color:#9ca3af;font-size:11px;font-weight:400;cursor:pointer}
/* 实务问答库：关键词组标注「高频自动收录」；长关键词单行省略，计数右对齐 */
#viewKb .kb-filter-note{font-size:11px;font-weight:400;color:#9ca3af;letter-spacing:0;white-space:nowrap}
#viewKb .kb-filter-option span:first-of-type{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#viewKb .kb-filter-option .count{flex:none}
#viewKb .kb-filter-option{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:13px;color:var(--text-muted);cursor:pointer;border-radius:4px;transition:.12s}
#viewKb .kb-filter-option:hover{color:var(--dark-blue)}
#viewKb .kb-filter-option input{accent-color:var(--primary-blue);cursor:pointer;width:14px;height:14px}
#viewKb .kb-filter-option .count{margin-left:auto;font-size:11.5px;color:#9ca3af;font-variant-numeric:tabular-nums}
#viewKb .kb-filter-option.active{color:var(--dark-blue);font-weight:500}

/* ---------- 列表页：搜索条 ---------- */
#viewKb .kb-list-search{display:flex;gap:10px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:12px;margin-bottom:16px;box-shadow:0 1px 3px rgba(15,24,40,.05)}
#viewKb .kb-list-search input{flex:1;height:38px;border:1px solid var(--line);border-radius:9px;padding:0 14px;outline:none;transition:.15s;font-size:13px}
#viewKb .kb-list-search input:focus{border-color:var(--primary-blue);box-shadow:0 0 0 3px rgba(14,165,233,.1)}
#viewKb .kb-list-search select{height:38px;border:1px solid var(--line);border-radius:9px;padding:0 10px;background:#fff;color:var(--text-muted);outline:none;cursor:pointer}
#viewKb .kb-list-search button{height:38px;padding:0 24px;border-radius:9px;background:var(--primary-blue);color:#fff;border:none;font-weight:500;cursor:pointer;transition:.15s}
#viewKb .kb-list-search button:hover{background:var(--dark-blue)}

/* ---------- 结果计数 + 筛选 chips ---------- */
#viewKb .kb-result-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:12px;flex-wrap:wrap}
#viewKb .kb-result-count{font-size:13px;color:var(--text-muted)}
#viewKb .kb-result-count b{color:var(--dark-blue);font-weight:600}
#viewKb .kb-chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
#viewKb .kb-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 6px 3px 10px;border-radius:14px;background:var(--bg-blue);color:var(--dark-blue);font-size:12px}
#viewKb .kb-chip button{color:var(--dark-blue);font-size:14px;line-height:1;padding:0 3px;opacity:.7;background:none;border:none;cursor:pointer}
#viewKb .kb-chip button:hover{opacity:1}
#viewKb .kb-chip-reset{font-size:12px;color:var(--text-muted);text-decoration:underline;cursor:pointer;margin-left:4px}
#viewKb .kb-chip-reset:hover{color:var(--dark-blue)}

/* ---------- 结果卡片 ---------- */
#viewKb .kb-result-card{background:#fff;border:1px solid var(--line);border-radius:6px;padding:13px 20px;margin-bottom:10px;transition:.16s;cursor:pointer;box-shadow:0 1px 3px rgba(15,24,40,.05)}
#viewKb .kb-result-card:hover{border-color:var(--primary-blue);box-shadow:0 6px 18px rgba(15,24,40,.10)}
#viewKb .kb-rc-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:4px;flex-wrap:wrap}
#viewKb .kb-rc-title{font-size:15px;font-weight:600;color:var(--text-main);line-height:1.45;flex:1;min-width:200px}
#viewKb .kb-result-card:hover .kb-rc-title{color:var(--dark-blue)}
/* 案例库列表卡片：标题行右侧展示发布时间 */
#viewKb .kb-rc-date{flex:none;align-self:flex-start;margin-top:2px;font-size:12px;color:#86909C;white-space:nowrap;line-height:1.5;font-variant-numeric:tabular-nums}
#viewKb .kb-rc-date i{font-style:normal;color:#A9B2C0;margin-right:6px}
#viewKb .kb-rc-date b{font-weight:600;color:#5A6875}
#viewKb .kb-rc-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:5px}
#viewKb .kb-tag{font-size:11.5px;padding:1px 8px;border-radius:4px;background:#f3f4f6;color:var(--text-muted);white-space:nowrap;border:1px solid transparent}
#viewKb .kb-tag-level{background:var(--bg-blue);color:var(--dark-blue)}
#viewKb .kb-tag-effective{background:#ecfdf5;color:#047857;border-color:#a7f3d0}
#viewKb .kb-tag-amended{background:#fffbeb;color:#b45309;border-color:#fde68a}
#viewKb .kb-tag-repealed{background:#f3f4f6;color:#6b7280;border-color:#e5e7eb}
#viewKb .kb-docno{font-size:12.5px;color:var(--text-muted)}
#viewKb .kb-rc-snippet{font-size:13px;color:var(--text-muted);line-height:1.6;background:#fafbfc;border-left:3px solid #cbd5e1;padding:6px 12px;border-radius:0 4px 4px 0;margin-top:6px}
#viewKb .kb-sn-label{color:var(--dark-blue);font-weight:600;margin-right:4px}
#viewKb .kb-rc-foot{display:flex;gap:8px;margin-top:8px}
#viewKb .kb-btn-sm{padding:4px 12px;border-radius:9px;font-size:12.5px;border:1px solid var(--line);background:#fff;color:var(--text-muted);cursor:pointer;transition:.15s}
#viewKb .kb-btn-sm:hover{border-color:var(--primary-blue);color:var(--dark-blue)}
#viewKb .kb-btn-sm.primary{background:var(--primary-blue);color:#fff;border-color:var(--primary-blue)}
#viewKb .kb-btn-sm.primary:hover{background:var(--dark-blue)}
#viewKb mark{background:#fff3b0;color:inherit;padding:0 2px;border-radius:2px}

/* ===== 需求标准库 / 品类知识库（前台） ===== */
#viewKb .kb-std-layout{display:grid;grid-template-columns:230px 1fr;gap:20px;align-items:start}
#viewKb .kb-std-side{background:#fff;border:1px solid var(--line);border-radius:12px;padding:4px 0}
#viewKb .kb-std-side-title{font-size:13px;font-weight:600;color:var(--ink);margin:10px 14px 10px 10px}
#viewKb .kb-cat-tree-wrap{max-height:62vh;overflow:auto;scrollbar-gutter:stable}
#viewKb .kb-cat-tree{list-style:none;margin:0;padding-left:6px}
#viewKb .kb-cat-tree .kb-cat-tree{padding-left:14px}
#viewKb .kb-cat-tree li{margin:0;padding:0;line-height:1.3}
#viewKb .kb-cat-node{display:flex;align-items:center;gap:7px;padding:7px 10px 7px 4px;line-height:1.4;border-radius:6px;cursor:pointer;font-size:13px;color:var(--ink);transition:.12s}
#viewKb .kb-cat-node:hover{background:#eef4fb}
#viewKb .kb-cat-node.on{background:#e8f1ff;color:var(--primary-blue);font-weight:600}
#viewKb .kb-cat-arrow{width:12px;flex:none;color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center}
#viewKb .kb-cat-arrow.leaf{width:12px}
#viewKb .kb-cat-ico{flex:none;display:inline-flex;color:#9aa6b2}
#viewKb .kb-cat-node.leaf .kb-cat-ico{color:var(--primary-blue)}
#viewKb .kb-cat-node.on .kb-cat-ico{color:var(--primary-blue)}
#viewKb .kb-cat-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#viewKb .kb-cat-code{font-size:11px;color:var(--text-muted);flex:none;font-variant-numeric:tabular-nums}
#viewKb .kb-cat-node.on .kb-cat-code{color:var(--primary-blue)}
#viewKb .kb-cat-leaf{font-size:10px;padding:1px 6px;border-radius:4px;background:#f0f2f5;color:var(--text-muted);flex:none;margin-left:4px}
#viewKb .kb-cat-node.on .kb-cat-leaf{background:#d6e8ff;color:var(--primary-blue)}
#viewKb .kb-std-main{min-width:0}
#viewKb .kb-std-toolbar{display:flex;justify-content:flex-end;margin-bottom:10px}
#viewKb .kb-std-toolbar .btn-ghost{padding:5px 12px;font-size:12px}
#viewKb .kb-std-list{display:flex;flex-direction:column;gap:12px}
#viewKb .kb-std-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;cursor:pointer;transition:.15s}
#viewKb .kb-std-card:hover{border-color:var(--primary-blue);box-shadow:0 6px 18px rgba(14,165,233,.1)}
#viewKb .kb-std-card.mini{padding:10px 12px}
#viewKb .kb-std-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#viewKb .kb-std-name{font-size:15px;font-weight:600;color:var(--ink)}
#viewKb .kb-std-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
#viewKb .kb-std-cats{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;font-size:12px;color:var(--text-muted)}
#viewKb .kb-std-cats-none{color:#b45309}
#viewKb .kb-std-cat{background:var(--bg-blue);color:var(--dark-blue);padding:1px 8px;border-radius:4px;cursor:pointer}
#viewKb .kb-std-warn{background:#fffbeb;border:1px solid #fde68a;color:#b45309;font-size:12px;padding:6px 10px;border-radius:8px;margin-bottom:8px}
#viewKb .kb-empty,#viewKb .kb-muted{color:var(--text-muted);font-size:13px;padding:18px;text-align:center}
#viewKb .kb-muted{text-align:left;padding:6px 0}
#viewKb .kb-breadcrumb{font-size:13px;color:var(--text-muted);margin-bottom:12px}
#viewKb .kb-breadcrumb a{color:var(--dark-blue);cursor:pointer}
#viewKb .kb-std-detail-head{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px}
#viewKb .kb-cat-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:4px 0 16px;border-bottom:1px solid var(--line)}
#viewKb .kb-cat-detail-row{display:flex;flex-direction:column;gap:10px;min-width:0}
#viewKb .kb-cat-detail-title{font-size:22px;font-weight:700;color:var(--ink);line-height:1.3}
#viewKb .kb-cat-detail-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
#viewKb .kb-code-tag{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;padding:2px 9px;border-radius:6px;background:#f3f4f6;color:#475569;white-space:nowrap}
#viewKb .kb-cat-actions{display:flex;gap:10px;flex:none;align-items:center}
#viewKb .kb-btn-ghost{height:34px;padding:0 16px;border-radius:8px;background:#fff;color:#475569;border:1px solid #d8dee6;cursor:pointer;font-size:13px;transition:.15s}
#viewKb .kb-btn-ghost:hover{border-color:var(--primary-blue);color:var(--primary-blue)}
#viewKb .kb-btn-ghost[data-on="1"]{color:#f59e0b;border-color:#f59e0b;background:#fffbeb}
#viewKb .kb-btn-primary{height:34px;padding:0 18px;border-radius:8px;background:var(--primary-blue);color:#fff;border:none;cursor:pointer;font-size:13px;font-weight:500;transition:.15s}
#viewKb .kb-btn-primary:hover{background:var(--dark-blue)}
#viewKb .kb-std-detail-title{font-size:19px;font-weight:700;color:var(--ink);margin-bottom:10px}
#viewKb .kb-std-detail-meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
#viewKb .kb-std-actions{margin-top:6px}
#viewKb .kb-std-section,#viewKb .kb-cat-section{margin-top:18px}
#viewKb .kb-std-section-title,#viewKb .kb-cat-section-title{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:10px;padding-left:10px;border-left:3px solid var(--primary-blue)}
#viewKb .kb-param-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;font-size:13px}
#viewKb .kb-param-table th,#viewKb .kb-param-table td{border-bottom:1px solid var(--line);padding:9px 12px;text-align:left}
#viewKb .kb-param-table th{background:#f7fafc;color:var(--text-muted);font-weight:600}
#viewKb .kb-ess{color:#dc2626;font-weight:600}
#viewKb .kb-quote-list{display:flex;flex-wrap:wrap;gap:8px}
#viewKb .kb-quote-item{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:12.5px}
/* 需求标准库：左侧两维筛选（标准层级 / 品目分类） */
#viewKb .kb-side-group{margin-bottom:18px}
#viewKb .kb-side-group:last-child{margin-bottom:0}
#viewKb .kb-level-chips{display:flex;flex-direction:column;gap:6px}
#viewKb .kb-chip{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--ink);cursor:pointer;padding:4px 8px;border-radius:7px;transition:.12s}
#viewKb .kb-chip:hover{background:var(--bg-blue)}
#viewKb .kb-chip input{accent-color:var(--primary-blue);width:15px;height:15px}
/* 需求标准：前台附件内容展示 */
#viewKb .kb-attach-list{display:flex;flex-direction:column;gap:14px}
#viewKb .kb-attach-item{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}
#viewKb .kb-attach-file{display:flex;align-items:center;gap:10px;padding:12px 14px}
#viewKb .kb-attach-icon{font-size:22px;flex:none}
#viewKb .kb-attach-name{flex:1;min-width:0;font-size:14px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#viewKb .kb-attach-size{color:var(--text-muted);font-size:12.5px;flex:none}
#viewKb .kb-attach-dl{color:var(--dark-blue);text-decoration:none;font-weight:500;font-size:13px;padding:4px 10px;border:1px solid var(--line);border-radius:7px;transition:.12s}
#viewKb .kb-attach-dl:hover{background:var(--bg-blue);border-color:var(--primary-blue)}
#viewKb .kb-attach-imgwrap{padding:14px;background:#f7fafc;display:flex;justify-content:center}
#viewKb .kb-std-attach-img{max-width:100%;max-height:70vh;border:1px solid var(--line);border-radius:8px;background:#fff}
#viewKb .kb-cat-layout{display:grid;grid-template-columns:300px 1fr;gap:20px;align-items:start}
#viewKb .kb-cat-side{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px}
#viewKb .kb-cat-side .mini-input{flex:none}
#viewKb .kb-cat-main{min-width:0}
#viewKb .kb-cat-welcome{display:flex;align-items:flex-start;gap:14px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin-bottom:16px}
#viewKb .kb-cat-welcome-ico{flex:none;width:46px;height:46px;display:flex;align-items:center;justify-content:center;background:var(--bg-blue);color:var(--primary-blue);border-radius:12px}
#viewKb .kb-cat-welcome-title{font-size:16px;font-weight:700;color:var(--ink);margin-bottom:6px}
#viewKb .kb-cat-welcome-desc{font-size:13px;color:var(--text-muted);line-height:1.8}
/* 品类库侧栏检索：放大镜图标内嵌于输入框右侧 */
#viewKb .kb-search-inline{position:relative;display:flex;align-items:center;width:100%}
#viewKb .kb-search-inline .mini-input{width:100%;padding-right:34px;background:#f5f6f7;border-color:transparent}
#viewKb .kb-search-inline .mini-input:focus{background:#fff;border-color:var(--primary-blue)}
#viewKb .kb-search-inline .kb-search-ico{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:none;background:transparent;color:#94a3b8;cursor:pointer;display:flex;padding:4px;line-height:0;transition:.15s}
#viewKb .kb-search-inline .kb-search-ico:hover{color:var(--primary-blue)}
#viewKb .kb-search-inline .kb-search-ico svg{width:16px;height:16px}
/* 热门品类服务快捷入口 */
#viewKb .kb-popular{margin-top:4px}
#viewKb .kb-popular-title{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:12px}
#viewKb .kb-popular-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
#viewKb .kb-pop-card{display:flex;flex-direction:column;align-items:flex-start;gap:7px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;cursor:pointer;transition:.15s;text-decoration:none}
#viewKb .kb-pop-card:hover{border-color:var(--primary-blue);box-shadow:0 4px 14px rgba(14,165,233,.12);transform:translateY(-2px)}
#viewKb .kb-pop-ico{font-size:20px;line-height:1;width:42px;height:42px;display:flex;align-items:center;justify-content:center;background:var(--bg-blue);color:var(--primary-blue);border-radius:10px}
#viewKb .kb-pop-name{font-size:14px;font-weight:600;color:var(--ink)}
#viewKb .kb-pop-sub{font-size:11px;color:var(--text-muted);line-height:1.5}
#viewKb .kb-pop-go{margin-top:2px;font-size:12px;font-weight:600;color:var(--primary-blue);display:inline-flex;align-items:center;gap:3px;opacity:0;transform:translateX(-3px);transition:.15s}
#viewKb .kb-pop-card:hover .kb-pop-go{opacity:1;transform:translateX(0)}
#viewKb .kb-cat-tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-top:20px}
#viewKb .kb-cat-tab{appearance:none;background:transparent;border:none;padding:10px 14px;font-size:14px;color:var(--text-muted);cursor:pointer;position:relative;font-weight:500;transition:.15s}
#viewKb .kb-cat-tab:hover{color:var(--ink)}
#viewKb .kb-cat-tab.on{color:var(--primary-blue);font-weight:600}
#viewKb .kb-cat-tab.on::after{content:'';position:absolute;left:10px;right:10px;bottom:-1px;height:2px;background:var(--primary-blue);border-radius:2px}
#viewKb .kb-cat-panels{margin-top:20px}
#viewKb .kb-cat-panel{display:none;flex-direction:column;gap:16px}
#viewKb .kb-cat-panel.on{display:flex}
#viewKb .kb-cat-card{background:#f7f8fa;border-radius:12px;padding:20px 22px}
#viewKb .kb-cat-card-title{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:10px}
#viewKb .kb-cat-card-body{font-size:13.5px;line-height:1.95;color:#334155;white-space:pre-wrap;word-break:break-word}
#viewKb .kb-cat-card-foot{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;font-size:11.5px;color:var(--text-muted)}
#viewKb .kb-cat-kv{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 24px}
#viewKb .kb-cat-kv-item{display:flex;gap:8px;align-items:baseline}
#viewKb .kb-cat-kv-k{flex:none;color:var(--text-muted);font-size:13px;min-width:64px}
#viewKb .kb-cat-kv-v{color:var(--ink);font-size:13px;font-weight:500}
#viewKb .kb-cat-std-list{display:flex;flex-direction:column;gap:10px}
#viewKb .kb-md-mask{position:fixed;inset:0;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;z-index:9999}
#viewKb .kb-md-modal{background:#fff;border-radius:14px;width:min(760px,92vw);max-height:86vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 60px rgba(2,8,23,.35)}
#viewKb .kb-md-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);font-weight:600;color:var(--ink)}
#viewKb .kb-md-close{border:none;background:transparent;font-size:22px;line-height:1;color:var(--text-muted);cursor:pointer}
#viewKb .kb-md-body{overflow:auto;padding:14px 18px}
#viewKb .kb-md-pre{white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.7;color:var(--ink);font-family:var(--mono,ui-monospace,monospace)}
#viewKb .kb-md-foot{display:flex;gap:10px;justify-content:flex-end;padding:12px 18px;border-top:1px solid var(--line)}
@media(max-width:880px){
  #viewKb .kb-std-layout,#viewKb .kb-cat-layout{grid-template-columns:1fr}
  #viewKb .kb-cat-kv{grid-template-columns:1fr}
}

/* ---------- 空状态 ---------- */
#viewKb .kb-empty{background:#fff;border:1px dashed #cbd5e1;border-radius:6px;padding:56px 24px;text-align:center}
#viewKb .kb-empty .e-icon{font-size:36px;color:#9ca3af;margin-bottom:12px}
#viewKb .kb-empty h3{font-size:15px;font-weight:600;margin-bottom:8px;color:var(--text-main)}
#viewKb .kb-empty p{font-size:13px;color:var(--text-muted);margin-bottom:16px}

/* ---------- 详情页 ---------- */
#viewKb .kb-detail-wrap{display:grid;grid-template-columns:240px 1fr;gap:22px;align-items:start}
/* 未执行条文拆分：无目录，正文按后台粘贴原样展示 */
#viewKb .kb-detail-wrap.kb-no-toc{grid-template-columns:minmax(0,1fr)}
#viewKb .kb-reg-plain{padding:24px 32px 32px;font-size:14px;line-height:1.9;color:var(--text-main);word-break:break-word}
#viewKb .kb-reg-plain-p{margin:0 0 12px;white-space:normal}
#viewKb .kb-reg-plain-head{font-size:15px;font-weight:700;color:var(--dark-blue);text-align:center;margin:22px 0 14px}
/* 富文本正文（Word / 网页粘贴）：段落、标题、表格、图片、链接与字号 */
#viewKb .kb-reg-plain h1{font-size:18px;font-weight:700;color:var(--dark-blue);text-align:center;margin:20px 0 12px}
#viewKb .kb-reg-plain h2{font-size:15.5px;font-weight:600;color:var(--dark-blue);margin:18px 0 8px;padding-left:10px;border-left:3px solid var(--primary-blue)}
#viewKb .kb-reg-plain h3,#viewKb .kb-reg-plain h4{font-size:14.5px;font-weight:600;color:var(--text-main);margin:14px 0 6px}
#viewKb .kb-reg-plain p:not([class]){margin:0 0 10px}
#viewKb .kb-reg-plain div:not([class]){margin:0 0 6px;min-height:1em}
#viewKb .kb-reg-plain ul,#viewKb .kb-reg-plain ol{margin:0 0 10px;padding-left:24px}
#viewKb .kb-reg-plain li{margin:0 0 5px}
#viewKb .kb-reg-plain blockquote{margin:0 0 10px;padding:8px 14px;background:#f7fafc;border-left:3px solid #cbd5e1;color:var(--text-muted)}
#viewKb .kb-reg-plain table{border-collapse:collapse;width:100%;margin:0 0 12px;font-size:13px}
#viewKb .kb-reg-plain th,#viewKb .kb-reg-plain td{border:1px solid var(--line);padding:7px 10px;text-align:left;vertical-align:top}
#viewKb .kb-reg-plain th{background:#f7fafc;font-weight:600}
#viewKb .kb-reg-plain img{max-width:100%;height:auto;border-radius:6px;margin:6px 0}
#viewKb .kb-reg-plain a{color:var(--dark-blue);text-decoration:underline;cursor:pointer}
#viewKb .kb-reg-plain a:hover{color:var(--primary-blue)}
#viewKb .kb-reg-plain a[data-dl-guard]:after{content:' ⤓';font-size:12px;color:var(--primary-blue)}
#viewKb .kb-reg-plain font[size="1"]{font-size:12px}#viewKb .kb-reg-plain font[size="3"]{font-size:14px}#viewKb .kb-reg-plain font[size="4"]{font-size:16px}#viewKb .kb-reg-plain font[size="5"]{font-size:19px}#viewKb .kb-reg-plain font[size="6"]{font-size:23px}#viewKb .kb-reg-plain font[size="7"]{font-size:28px}
/* 条款式法规：富文本正文中的附件链接汇总（有链接才显示） */
#viewKb .kb-reg-attach{margin:0 24px 26px;padding:14px 18px;background:#f8fafc;border:1px solid var(--line);border-radius:9px}
#viewKb .kb-reg-attach-title{font-size:13px;font-weight:700;color:var(--dark-blue);margin-bottom:10px}
#viewKb .kb-reg-attach-list{display:flex;flex-direction:column;gap:7px}
#viewKb .kb-reg-attach-link{color:var(--dark-blue);font-size:13px;text-decoration:underline;word-break:break-all;cursor:pointer}
#viewKb .kb-reg-attach-link:hover{color:var(--primary-blue)}
#viewKb .kb-reg-attach-link[data-dl-guard]:after{content:' ⤓';font-size:12px;color:var(--primary-blue)}
#viewKb .kb-toc{position:sticky;top:10px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:16px 0;max-height:calc(100vh - 140px);overflow-y:auto;box-shadow:0 1px 3px rgba(15,24,40,.05)}
#viewKb .kb-toc-title{font-size:12.5px;font-weight:600;color:var(--text-muted);padding:0 18px 10px;letter-spacing:.5px}
#viewKb .kb-toc-chapter{font-size:12.5px;font-weight:600;color:var(--text-main);padding:8px 18px 4px;margin-top:4px}
#viewKb .kb-toc-item{display:block;font-size:12.5px;color:var(--text-muted);padding:4px 18px 4px 28px;border-left:2px solid transparent;transition:.12s;cursor:pointer}
#viewKb .kb-toc-item:hover{color:var(--dark-blue);background:#fafbfc}
#viewKb .kb-toc-item.active{color:var(--dark-blue);background:var(--bg-blue);border-left-color:var(--primary-blue);font-weight:500}
#viewKb .kb-detail-main{background:#fff;border:1px solid var(--line);border-radius:6px;box-shadow:0 1px 3px rgba(15,24,40,.05);overflow:hidden}
#viewKb .kb-detail-header{padding:24px 32px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fbfcfd,#fff)}
#viewKb .kb-detail-head-top{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}
#viewKb .kb-detail-header h1{font-size:21px;font-weight:700;line-height:1.45;margin:0;flex:1;min-width:0;color:var(--text-main)}
#viewKb .kb-detail-actions{flex:none;display:flex;gap:8px;padding-top:3px}
#viewKb .kb-detail-actions .kb-btn-sm{white-space:nowrap}
#viewKb .kb-detail-crumb{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;color:var(--text-muted);text-decoration:none;margin-bottom:14px;transition:.15s}
#viewKb .kb-detail-crumb:hover{color:var(--primary-blue)}
#viewKb .kb-detail-titles{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:10px}
#viewKb .kb-detail-titles h1{flex:none;margin:0}
#viewKb .kb-detail-titles .kb-rc-meta{margin:0}
#viewKb .kb-detail-meta-grid{margin-top:16px}
#viewKb .kb-detail-meta-grid{margin-bottom:2px}
#viewKb .kb-btn-sm.ghost{background:#fff;color:#475569;border:1px solid #d8dee6}
#viewKb .kb-btn-sm.ghost:hover{border-color:var(--primary-blue);color:var(--primary-blue)}
#viewKb .kb-detail-meta-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px 22px}
#viewKb .kb-meta-item{display:flex;align-items:baseline;gap:6px;font-size:12.5px;min-width:0}
#viewKb .kb-meta-k{flex:none;width:56px;color:var(--text-muted)}
#viewKb .kb-meta-v{color:var(--text-main);font-weight:500;word-break:break-word;min-width:0}
#viewKb .kb-pub-note{background:#F5F8FB;border:1px solid #E9F0F7;border-radius:0;padding:16px 18px;margin:16px 0 4px;white-space:pre-wrap;word-break:break-word;line-height:1.9}
#viewKb .kb-pub-title{font-size:14px;font-weight:400;color:var(--text-main);text-align:left;line-height:1.9;margin-bottom:8px}
#viewKb .kb-pub-body{font-size:13.5px;color:#475569;text-align:left}
#viewKb .kb-pub-sign{font-size:13.5px;color:#475569;text-align:right;margin-top:12px}
#viewKb .kb-notice-bar{display:flex;gap:10px;align-items:flex-start;padding:12px 16px;border-radius:9px;font-size:13px;margin-top:14px;line-height:1.6}
#viewKb .kb-notice-bar.warn{background:#fffbeb;border:1px solid #fde68a;color:#b45309}
#viewKb .kb-notice-bar.gray{background:#f3f4f6;border:1px solid #e5e7eb;color:#6b7280}
#viewKb .kb-article-list{padding:8px 32px 32px}
#viewKb .kb-chapter-heading{font-size:15px;font-weight:700;color:var(--dark-blue);padding:22px 0 10px;border-bottom:1px solid var(--line);margin-bottom:6px}
#viewKb .kb-article{padding:14px 14px 14px 16px;border-left:3px solid transparent;border-radius:0 6px 6px 0;transition:background .18s,border-color .18s;position:relative;scroll-margin-top:20px}
#viewKb .kb-article:hover{background:#fafbfc;border-left-color:#cbd5e1}
#viewKb .kb-article.highlight{background:#fffbe6;border-left-color:#f0b400;animation:kbFlash 2.4s ease-out}
@keyframes kbFlash{0%{background:#fff3b0}100%{background:#fffbe6}}
#viewKb .kb-article-no{font-weight:700;color:var(--text-main);margin-right:6px}
#viewKb .kb-article-text{font-size:14px;line-height:1.9;color:var(--text-main);white-space:pre-wrap;word-break:break-word}
#viewKb .kb-article-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:8px;opacity:0;transition:opacity .15s}
#viewKb .kb-article:hover .kb-article-actions{opacity:1}
#viewKb .kb-act-btn{font-size:12px;color:var(--text-muted);padding:2px 8px;border-radius:4px;border:1px solid var(--line);background:#fff;cursor:pointer;transition:.15s}
#viewKb .kb-act-btn.kb-act-ai{color:var(--dark-blue);border-color:#bae0ff;background:#f2f9ff;font-weight:600}
#viewKb .kb-act-btn.kb-act-ai:hover{background:var(--primary-blue);border-color:var(--primary-blue);color:#fff}
#viewKb .kb-act-btn:hover{color:var(--dark-blue);border-color:var(--primary-blue)}
#viewKb .kb-version-note{margin-top:6px;font-size:12.5px;color:#b45309;background:#fffbeb;border:1px solid #fde68a;padding:6px 10px;border-radius:4px}
#viewKb .kb-case-block{padding:20px 32px;border-bottom:1px solid var(--line)}
#viewKb .kb-case-block:last-child{border-bottom:none}
#viewKb .kb-case-block-title{font-size:13.5px;font-weight:600;color:var(--dark-blue);margin-bottom:10px;display:flex;align-items:center;gap:7px}
#viewKb .kb-case-block-title::before{content:"";width:3px;height:13px;background:var(--primary-blue);border-radius:2px}
#viewKb .kb-case-block-body{font-size:14px;line-height:1.85;color:var(--text-main);white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}
/* 案例正文：核心事实/认定结论/处理结果合并后的单一富文本展示区，兼容内嵌 h2/p/ul/ol/blockquote/img 等 */
#viewKb .kb-case-content{font-size:14px;line-height:1.9;color:var(--text-main);white-space:normal;word-break:break-word;overflow-wrap:anywhere}
#viewKb .kb-case-content h2{font-size:15.5px;font-weight:600;color:var(--dark-blue);margin:18px 0 8px;padding-left:10px;border-left:3px solid var(--primary-blue)}
#viewKb .kb-case-content h2:first-child{margin-top:2px}
#viewKb .kb-case-content h3,#viewKb .kb-case-content h4{font-size:14.5px;font-weight:600;color:var(--text-main);margin:14px 0 6px}
#viewKb .kb-case-content p{margin:0 0 10px}
#viewKb .kb-case-content ul,#viewKb .kb-case-content ol{margin:0 0 10px;padding-left:22px}
#viewKb .kb-case-content li{margin:0 0 5px}
#viewKb .kb-case-content blockquote{margin:0 0 10px;padding:8px 14px;background:#f7fafc;border-left:3px solid #cbd5e1;color:var(--text-muted)}
#viewKb .kb-case-content img{max-width:100%;height:auto;border-radius:6px;margin:6px 0}
#viewKb .kb-case-content table{border-collapse:collapse;width:100%;margin:0 0 10px;font-size:13px}
#viewKb .kb-case-content th,#viewKb .kb-case-content td{border:1px solid var(--line);padding:7px 10px;text-align:left}
#viewKb .kb-case-content th{background:#f7fafc;font-weight:600}
#viewKb .kb-case-content a{color:var(--dark-blue);text-decoration:underline}
#viewKb .kb-case-content font[size="1"]{font-size:12px}#viewKb .kb-case-content font[size="3"]{font-size:14px}#viewKb .kb-case-content font[size="4"]{font-size:16px}#viewKb .kb-case-content font[size="5"]{font-size:19px}#viewKb .kb-case-content font[size="6"]{font-size:23px}#viewKb .kb-case-content font[size="7"]{font-size:28px}
#viewKb .kb-detail-meta{display:flex;flex-wrap:wrap;gap:4px 18px;align-items:center;font-size:13px;color:var(--text-sub)}
#viewKb .kb-basis-list{display:flex;flex-direction:column;gap:8px}
#viewKb .kb-basis-item{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#fafbfc;border:1px solid var(--line);border-radius:6px;font-size:13px;transition:.15s;cursor:pointer}
#viewKb .kb-basis-item:hover{border-color:var(--primary-blue);background:var(--bg-blue)}
#viewKb .kb-basis-item .b-doc{font-weight:500;color:var(--text-main)}
#viewKb .kb-basis-item .b-art{color:var(--dark-blue);font-weight:600}
#viewKb .kb-basis-item .b-arrow{margin-left:auto;color:#9ca3af}
#viewKb .kb-insight-list{margin:0;padding-left:20px}
#viewKb .kb-insight-list li{font-size:13.5px;line-height:1.85;color:var(--text-muted);margin-bottom:6px}
#viewKb .kb-insight-list li::marker{color:var(--dark-blue);font-weight:700}

/* ---------- 问答抽屉 ---------- */
#viewKb .kb-drawer-mask{position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:90;opacity:0;pointer-events:none;transition:opacity .22s}
#viewKb .kb-drawer-mask.open{opacity:1;pointer-events:auto}
#viewKb .kb-drawer{position:fixed;top:0;right:0;bottom:0;width:460px;max-width:92vw;background:#fff;z-index:100;display:flex;flex-direction:column;box-shadow:-8px 0 32px rgba(15,23,42,.16);transform:translateX(100%);transition:transform .26s cubic-bezier(.4,0,.2,1)}
#viewKb .kb-drawer.open{transform:translateX(0)}
#viewKb .kb-drawer-head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
#viewKb .kb-drawer-head h3{font-size:15px;font-weight:600;flex:1;color:var(--text-main)}
#viewKb .kb-scope-badge{font-size:11.5px;padding:2px 8px;border-radius:10px;background:var(--bg-blue);color:var(--dark-blue)}
#viewKb .kb-drawer-close{font-size:20px;color:#9ca3af;line-height:1;padding:2px 6px;border-radius:4px;background:none;border:none;cursor:pointer}
#viewKb .kb-drawer-close:hover{background:#f3f4f6;color:var(--text-main)}
#viewKb .kb-drawer-body{flex:1;overflow-y:auto;padding:18px 20px;background:#fafbfc}
#viewKb .kb-msg{display:flex;gap:10px;margin-bottom:18px}
#viewKb .kb-msg-avatar{width:28px;height:28px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}
#viewKb .kb-msg.user .kb-msg-avatar{background:var(--primary-blue);color:#fff}
#viewKb .kb-msg.ai .kb-msg-avatar{background:#e0f2fe;color:#0369a1}
#viewKb .kb-msg-bubble{flex:1;min-width:0}
#viewKb .kb-msg-name{font-size:11.5px;color:#9ca3af;margin-bottom:5px}
#viewKb .kb-msg-content{background:#fff;border:1px solid var(--line);border-radius:0 8px 8px 8px;padding:12px 14px;font-size:13.5px;line-height:1.8;color:var(--text-main);white-space:pre-wrap;word-break:break-word}
#viewKb .kb-msg.user .kb-msg-content{background:var(--primary-blue);color:#fff;border-color:var(--primary-blue);border-radius:8px 0 8px 8px}
#viewKb .kb-cite-inline{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 4px;border-radius:3px;background:var(--bg-blue);color:var(--dark-blue);font-size:11px;font-weight:600;margin:0 1px;cursor:pointer;vertical-align:baseline}
#viewKb .kb-cite-inline:hover{background:var(--primary-blue);color:#fff}
#viewKb .kb-citations{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
#viewKb .kb-cite-card{background:#fff;border:1px solid var(--line);border-left:3px solid var(--primary-blue);border-radius:0 6px 6px 0;padding:9px 12px;font-size:12.5px;transition:.15s;cursor:pointer}
#viewKb .kb-cite-card:hover{background:var(--bg-blue);border-color:var(--primary-blue)}
#viewKb .kb-cite-card .cc-head{display:flex;gap:6px;align-items:center;margin-bottom:4px}
#viewKb .kb-cite-card .cc-idx{width:16px;height:16px;border-radius:3px;background:var(--primary-blue);color:#fff;font-size:10.5px;display:flex;align-items:center;justify-content:center;font-weight:600}
#viewKb .kb-cite-card .cc-doc{font-weight:600;color:var(--text-main)}
#viewKb .kb-cite-card .cc-art{color:var(--dark-blue);font-weight:600}
#viewKb .kb-cite-card .cc-text{color:var(--text-muted);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#viewKb .kb-typing-cursor{display:inline-block;width:2px;height:14px;background:var(--primary-blue);vertical-align:middle;animation:kbBlink 1s step-end infinite}
@keyframes kbBlink{50%{opacity:0}}
#viewKb .kb-grounded-warn{background:#fffbeb;border:1px solid #fde68a;color:#b45309;padding:10px 14px;border-radius:6px;font-size:12.5px;margin-bottom:12px}
#viewKb .kb-drawer-foot{padding:12px 16px;border-top:1px solid var(--line);background:#fff}
#viewKb .kb-ask-input-wrap{display:flex;gap:8px;border:1px solid var(--line);border-radius:8px;padding:6px 6px 6px 12px;background:#fff;transition:.15s}
#viewKb .kb-ask-input-wrap:focus-within{border-color:var(--primary-blue);box-shadow:0 0 0 3px rgba(14,165,233,.08)}
#viewKb .kb-ask-input-wrap input{flex:1;border:none;outline:none;height:32px;font-size:13.5px;background:transparent;color:var(--text-main)}
#viewKb .kb-ask-input-wrap button{padding:0 16px;height:32px;border-radius:6px;background:var(--primary-blue);color:#fff;font-size:13px;font-weight:500;border:none;cursor:pointer}
#viewKb .kb-ask-input-wrap button:hover{background:var(--dark-blue)}
#viewKb .kb-ask-input-wrap button:disabled{background:#cbd5e1;cursor:not-allowed}
#viewKb .kb-suggest{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
#viewKb .kb-suggest button{font-size:12px;padding:4px 10px;border-radius:12px;border:1px solid var(--line);color:var(--text-muted);background:#fff;cursor:pointer;transition:.15s}
#viewKb .kb-suggest button:hover{border-color:var(--primary-blue);color:var(--dark-blue)}

/* ---------- 响应式 ---------- */
/* 板件与检索框始终同行（封装于 .kb-head-actions）；仅超窄屏允许换行，并让检索框占满 */
@media(max-width:1600px){
  #viewKb .page-head{grid-template-columns:minmax(0,1fr) auto}
}
@media(max-width:960px){
  #viewKb .kb-page-with-side,#viewKb .kb-detail-wrap{grid-template-columns:1fr}
  #viewKb .kb-side,#viewKb .kb-toc{position:static;max-height:none}
  #viewKb .kb-toc{display:none}
  #viewKb .kb-entry-grid{grid-template-columns:1fr}
  #viewKb .kb-detail-head-top{flex-direction:column;align-items:stretch;gap:12px;margin-bottom:14px}
  #viewKb .kb-detail-actions{width:100%;padding-top:0}
  #viewKb .kb-detail-actions .kb-btn-sm{flex:1}
  #viewKb .kb-detail-meta-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px}
  #viewKb .kb-head-actions{gap:10px}
  #viewKb .kb-head-search{gap:6px}
  #viewKb .kb-drawer{width:100%}
}
@media(max-width:560px){
  #viewKb .kb-detail-header{padding:18px 18px}
  #viewKb .kb-detail-meta-grid{grid-template-columns:1fr;gap:9px}
}

/* ==================== 条文「AI 解读」侧边窗（2026-11-05） ==================== */
/* 复用 #viewKb .kb-drawer* 抽屉骨架与消息气泡，仅补充 AI 解读专属细节 */
#viewKb .kb-ai-drawer-mask{z-index:105}
#viewKb .kb-ai-drawer{z-index:110}
#viewKb .kb-ai-drawer .kb-drawer-head h3{display:flex;align-items:center;gap:7px}
#viewKb .kb-ai-spark{color:#0ea5e9;font-size:15px}
#viewKb .kb-ai-body{padding:16px 18px}
#viewKb .kb-ai-quote{background:#f5f8fb;border:1px solid #e9f0f7;border-left:3px solid #5aa0d6;padding:10px 13px;margin-bottom:16px;max-height:150px;overflow-y:auto}
#viewKb .kb-ai-quote-h{font-size:11.5px;font-weight:600;color:#64748b;margin-bottom:6px;line-height:1.7;word-break:break-word}
#viewKb .kb-ai-quote-c{font-size:13px;line-height:1.85;color:#3a4a52;white-space:pre-wrap;word-break:break-word}
#viewKb .kb-ai-quote-c b{color:#2b6cb0;font-weight:700;margin-right:6px}
#viewKb .kb-ai-msg .kb-msg-content{white-space:normal;font-size:13.5px;line-height:1.85}
/* 结果卡片与上方「条文原文」问题区左对齐：隐藏 AI 头像，气泡占满整行 */
#viewKb .kb-ai-msg .kb-msg-avatar{display:none}
#viewKb .kb-ai-msg .kb-msg-bubble{flex:1 1 auto;min-width:0}
#viewKb .kb-ai-msg .kb-msg-content{border-radius:8px}
#viewKb .kb-ai-msg .kb-msg-content h1,
#viewKb .kb-ai-msg .kb-msg-content h2,
#viewKb .kb-ai-msg .kb-msg-content h3{font-size:14px;font-weight:700;color:var(--text-main);margin:12px 0 6px}
#viewKb .kb-ai-msg .kb-msg-content>:first-child{margin-top:0}
#viewKb .kb-ai-msg .kb-msg-content p{margin:6px 0}
#viewKb .kb-ai-msg .kb-msg-content ul,
#viewKb .kb-ai-msg .kb-msg-content ol{padding-left:20px;margin:6px 0}
#viewKb .kb-ai-msg .kb-msg-content li{margin:3px 0}
#viewKb .kb-ai-msg .kb-msg-content strong{font-weight:700;color:var(--text-main)}
#viewKb .kb-ai-msg .kb-msg-content code{background:#f1f5f9;padding:1px 4px;border-radius:3px;font-size:12.5px}
#viewKb .kb-ai-loading{display:flex;align-items:center;gap:5px;color:var(--text-muted);font-size:13px;padding:4px 0}
#viewKb .kb-ai-loading i{width:6px;height:6px;border-radius:50%;background:#5aa0d6;animation:kbAiBlink 1.1s infinite}
#viewKb .kb-ai-loading i:nth-child(2){animation-delay:.18s}
#viewKb .kb-ai-loading i:nth-child(3){animation-delay:.36s}
#viewKb .kb-ai-loading span{margin-left:6px}
@keyframes kbAiBlink{0%,80%,100%{opacity:.25}40%{opacity:1}}
#viewKb .kb-ai-notice{background:#fffbeb;border:1px solid #fde68a;color:#92400e;border-radius:6px;padding:9px 12px;font-size:13px;line-height:1.8;margin:8px 0}
#viewKb .kb-ai-tip{font-size:12.5px;color:var(--text-muted);line-height:1.85;margin-top:8px}
#viewKb .kb-ai-tip a{color:var(--dark-blue);font-weight:600}
#viewKb .kb-ai-foot-wrap{padding:12px 16px}
#viewKb .kb-ai-foot{display:flex;align-items:center;justify-content:flex-start;gap:10px;padding:0 0 10px}
#viewKb .kb-ai-status{font-size:12px;color:#94a3b8;flex:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#viewKb .kb-ai-btn{padding:2px 10px;border-radius:999px;font-size:11.5px;line-height:1.6;border:1px solid #d8dee6;background:#fff;color:#475569;cursor:pointer;transition:.15s}
#viewKb .kb-ai-btn:hover{border-color:var(--primary-blue);color:var(--dark-blue)}
#viewKb #kbAiSubmit{padding:0 18px}
@media(max-width:560px){
  #viewKb .kb-ai-body{padding:14px}
  #viewKb .kb-ai-foot-wrap{padding:10px 12px}
}

/* ===== 争议类型受控词表维护（后台 / 案例编辑联动） ===== */
.kbt-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.kbt-tools button,.kbt-group-ops button{white-space:nowrap;flex:none}
.kbt-tools .kbt-name{width:210px}
.kbt-tools .kbt-group{width:150px}
.kbt-tools .kbt-check{display:inline-flex;align-items:center;gap:5px;font-size:12.3px;color:var(--text-muted);white-space:nowrap}
.kbt-tools .kbt-check input{width:auto;margin:0}
.kbt-summary{margin-left:auto;font-size:12px;color:#94a3b8}
.kbt-group-card{border:1px solid var(--line);border-radius:10px;background:#fff;padding:12px 14px;margin-bottom:10px}
.kbt-group-hd{display:flex;align-items:center;gap:9px;margin-bottom:9px}
.kbt-group-name{font-size:13.5px;font-weight:600;color:var(--text-main)}
.kbt-group-count{font-size:11.5px;color:#94a3b8}
.kbt-group-ops{margin-left:auto;display:flex;gap:6px}
.kbt-chip{display:inline-flex;align-items:center;gap:5px;margin:0 6px 7px 0;padding:4px 6px 4px 10px;border:1px solid #cfe6f8;border-radius:16px;background:#eaf4fd;color:#0369a1;font-size:12.5px;line-height:1.5}
.kbt-chip.is-hidden{background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8}
.kbt-chip.is-hidden .kbt-n{text-decoration:line-through}
.kbt-use{font-size:11px;color:#64748b;background:rgba(255,255,255,.85);border-radius:9px;padding:0 6px}
.kbt-chip.is-hidden .kbt-use{color:#94a3b8}
.kbt-badge{font-size:10.5px;color:#b91c1c;background:#fee2e2;border-radius:8px;padding:0 5px}
.kbt-ibtn{border:0;background:transparent;color:inherit;font-size:12px;line-height:1;padding:2px 4px;border-radius:4px;cursor:pointer;opacity:.65}
.kbt-ibtn:hover{opacity:1;background:rgba(2,132,199,.14)}
.kbt-ibtn.danger:hover{background:#fee2e2;color:#b91c1c}
.kbt-empty{font-size:12.5px;color:#94a3b8;padding:4px 0}
.kbt-legend{font-size:11.8px;color:#94a3b8;line-height:1.8;margin-top:10px}
.kbt-legend b{color:var(--text-muted)}
.kbt-form .kb-field{margin-bottom:12px}
.kbt-form .kbt-check{display:flex;align-items:flex-start;gap:8px;font-size:12.6px;color:var(--text-muted);line-height:1.7}
.kbt-form .kbt-check input{width:auto;margin-top:3px;flex:none}
.kbt-form .kbt-impact{background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:9px 11px;font-size:12.3px;color:var(--text-muted);line-height:1.75}
.kbt-form .kbt-impact b{color:var(--dark-blue)}
.kbt-pick{display:flex;flex-wrap:wrap;gap:7px;max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:10px;background:#fff}
.kbt-pick-group{width:100%;font-size:11.8px;font-weight:600;color:#94a3b8;margin:3px 0 1px}
.kbt-pick label{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;background:#f8fafc;border:1px solid var(--line);border-radius:6px;padding:4px 9px;cursor:pointer}
.kbt-pick label.off{opacity:.62;background:#f1f5f9}
.kbt-pick label.legacy{background:#fff7ed;border-color:#fed7aa;color:#9a3412}
.kbt-pick label input{width:auto;margin:0}
.kbt-pick .n{font-size:11px;color:#94a3b8}
.kbt-pick .tagx{font-size:10.5px;color:#b45309;background:#fef3c7;border-radius:7px;padding:0 5px}
.kbt-filter{width:100%;margin-bottom:9px}
/* 前台案例筛选：按词表分组呈现争议类型 */
#viewKb .kb-filter-sub{margin:10px 0 2px}
#viewKb .kb-filter-subtitle{font-size:11.5px;font-weight:600;color:#94a3b8;padding:2px 0 3px;letter-spacing:.02em}
#viewKb .kb-filter-empty{font-size:12px;color:#94a3b8;padding:4px 0}
