* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;
  font-size: 15px;
  line-height: 1.6;
  color: #232323;
  background: #f5f6f8;
  overflow-x: hidden;
  font-variant-numeric: tabular-nums;
}
a { color: inherit; text-decoration: none; }

.topbar {
  display: flex;
  align-items: center;
  gap: 10px 16px;
  flex-wrap: wrap;
  padding: 10px max(20px, calc((100vw - 1680px) / 2));
  background: #fff;
  border-bottom: 1px solid #e5e5e5;
  position: sticky;
  top: 0;
  z-index: 5;
}
.topbar h1 { font-size: 18px; font-weight: 700; margin: 0; }
.topbar .sub { font-size: 13px; color: #8a8a8a; flex: 1; }
.topbar .brand { font-size: 18px; font-weight: 700; border-color: transparent; background: transparent; padding: 0 2px; min-height: 32px; }
.topbar .brand:hover { background: #eef2ff; }
.topbar .ver { min-height: 26px; padding: 0 8px; font-size: 13px; font-weight: 600; color: #4b5563; background: #f1f1f5; border-color: #e2e2e8; border-radius: 999px; }
.topbar .ver.on { background: #eef2ff; border-color: #94a3d4; color: #1d4ed8; }
.topbar .nav { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; margin-left: auto; }
.nav-item { min-height: 34px; font-size: 15px; padding: 0 10px; border-color: transparent; border-radius: 0; background: transparent; }
.nav-item.on { font-weight: 700; background: transparent; border-color: transparent; border-bottom-color: #1d4ed8; border-bottom-width: 2px; }
.nav-soon { color: #9aa0ab; background: #f4f4f6; }
.dot { display: inline-block; min-width: 18px; padding: 0 5px; margin-left: 4px; border-radius: 999px; background: #dc2626; color: #fff; font-size: 12px; font-weight: 700; line-height: 18px; text-align: center; }
/* 有一句还在后台想着：在「找客户」上点一个小圆点，人在别的页面也知道那边还在跑 */
.dot.live { min-width: 8px; width: 8px; height: 8px; padding: 0; line-height: 8px; background: #1d4ed8; vertical-align: middle; animation: 呼吸 1.4s ease-in-out infinite; }
.guide-steps { flex: 1 0 100%; display: flex; align-items: center; justify-content: center; gap: 6px; padding-top: 7px; border-top: 1px solid #f1f1f4; }
.guide-steps .tag { border: 0; background: transparent; padding: 0 4px; }
.guide-steps .done { color: #1d4ed8; font-weight: 600; }
.guide-steps .todo, .guide-arrow { color: #a1a1aa; }
@keyframes 呼吸 { 0%, 100% { opacity: 1; } 50% { opacity: .3; } }
.page { width: 100%; max-width: 1680px; margin: 0 auto; padding: 16px 24px 56px; }

/* ── 三类元素分明：可点 / 主按钮 / 静态标签 ── */
/* 设了 hidden 的一律不显示：.act 这类带 display 的样式会盖掉浏览器默认的 hidden */
[hidden] { display: none !important; }
.act {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 36px;
  padding: 0 14px;
  border-radius: 8px;
  border: 1px solid #d4d4da;
  background: #fff;
  color: #232323;
  font-size: 15px;
  font-family: inherit;
  font-weight: 500;
  cursor: pointer;
  transition: background .12s, border-color .12s;
}
.act:hover { background: #eef2ff; border-color: #94a3d4; }
.act:focus-visible { outline: 2px solid #1d4ed8; outline-offset: 2px; }
.act:active { background: #dfe6fb; }
.act:disabled { cursor: not-allowed; opacity: .45; }
.act-primary { background: #1d4ed8; border-color: #1d4ed8; color: #fff; font-weight: 600; min-height: 36px; }
.act-primary:hover { background: #1740b4; border-color: #1740b4; }
.act-primary:active { background: #12338f; }
.act-quiet { border-color: transparent; background: #f1f1f5; color: #4b5563; font-weight: 400; min-height: 32px; padding: 0 8px; }
.act-quiet:hover { background: #eef2ff; border-color: transparent; color: #1d4ed8; }
.topbar .nav-item.act-quiet { background: transparent; }

.tag {
  display: inline-block;
  padding: 2px 9px;
  border-radius: 999px;
  background: #ececf1;
  color: #55555f;
  font-size: 13px;
  font-weight: 400;
  border: 1px solid transparent;
}
.tag.g1 { background: #e0f2fe; color: #075985; }
.tag.g2 { background: #ede9fe; color: #5b21b6; }
.tag.g3 { background: #dcfce7; color: #15803d; }
.tag.g4 { background: #ffedd5; color: #9a3412; }
.tag.g5 { background: #fee2e2; color: #9f1239; }
.tag.g6 { background: #fef9c3; color: #854d0e; }
.tag.g7 { background: #ccfbf1; color: #115e59; }
.tag.g8 { background: #f1f5f9; color: #334155; }
.tag.minus { background: #f3f4f6; color: #6b7280; }
.tag.new { background: #fee2e2; color: #9f1239; }

/* ── 卡片与区块 ── */
.block { background: #fff; border: 1px solid #e6e6ea; border-radius: 14px; padding: 20px 22px; margin-bottom: 16px; box-shadow: 0 1px 2px rgba(16,24,40,.04); }
.block h2 { font-size: 16px; font-weight: 600; margin: 0 0 16px; padding-bottom: 6px; color: #3f3f46; border-bottom: 1px solid #ececf1; }
.row-between { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.hint-line { font-size: 13px; color: #6b6b72; margin: 0 2px 10px; }

/* ── 万能框 ── */
.ask { transition: border-color .15s ease, background .15s ease, box-shadow .15s ease; }
.ask.is-dragging { border-color: #6366f1; background: #f5f5ff; box-shadow: 0 0 0 3px #e0e7ff; }
.ask textarea {
  width: 100%;
  min-height: 78px;
  font-size: 16px;
  padding: 12px;
  border: 1px solid #d4d4d4;
  border-radius: 10px;
  resize: vertical;
  font-family: inherit;
}
.ask-files { display: grid; gap: 7px; margin-top: 10px; }
.ask-files:empty { display: none; }
.ask-file { display: flex; align-items: center; gap: 10px; min-width: 0; padding: 8px 10px; border: 1px solid #e4e4e7; border-radius: 8px; background: #fafafa; font-size: 14px; }
.ask-file-name { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.ask-file-meta { color: #666670; font-size: 13px; text-align: right; }
.ask-file .act { min-height: 32px; padding: 5px 10px; }
.ask .actions { margin-top: 10px; display: flex; justify-content: flex-end; gap: 8px; }
.ask-reply { margin-top: 10px; }
.ask-reply:empty { display: none; }
.ask-reply-box { border-left: 3px solid #4f46e5; background: #f7f7fb; border-radius: 0 8px 8px 0; padding: 10px 12px; }
.ask-reply-box.bad { border-left-color: #b45309; background: #fdf6ec; }
.ask-reply-head { font-size: 14px; color: #3f3f46; font-weight: 600; }
.ask-reply-list { margin: 6px 0 0; padding-left: 20px; font-size: 14px; color: #55555f; }
.ask-reply-list li { margin-top: 3px; }
.ask-reply-body { margin-top: 6px; font-size: 14px; line-height: 1.75; color: #55555f; }

/* ── 条件包两栏 ── */
.two-col { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 14px; }
.group { border: 1px solid #ededf0; border-radius: 10px; margin-bottom: 8px; overflow: hidden; }
.group > .act { width: 100%; justify-content: space-between; border: none; border-radius: 0; min-height: 44px; background: #fafafb; }
.group-body { padding: 4px 12px 10px; }
.rule { padding: 8px 0; border-top: 1px solid #f1f1f4; font-size: 14px; }
.rule:first-child { border-top: none; }
.rule .rule-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rule .rule-text { flex: 1; min-width: 0; }
.rule .why { margin-top: 6px; font-size: 13px; color: #6b6b72; background: #fafafb; border-left: 3px solid #dcdce2; padding: 7px 10px; border-radius: 4px; }
.rule .why[hidden] { display: none; }
.hit-group { margin-top: 14px; padding-top: 4px; }
.hit-group:first-child { margin-top: 0; }
.hit-group-head { margin-bottom: 2px; }

.chat { display: flex; flex-direction: column; height: 100%; min-height: 260px; }
.chat-log { flex: 1; overflow-y: auto; max-height: 330px; padding-right: 4px; }
/* ── 会话：谁说的要一眼分清 ──
   用户靠右、蓝底、右下角收口；助手靠左、白底带框、左下角收口。
   助手那一格里三层：思考过程一行小字在最上，回答居中，改动与家数在底下那一块。 */
.bubble {
  max-width: 86%; padding: 10px 14px; border-radius: 14px; margin-bottom: 14px;
  font-size: 14px; line-height: 1.7; white-space: pre-wrap; overflow-wrap: anywhere;
}
.bubble:last-child { margin-bottom: 2px; }
.bubble.me {
  margin-left: auto; background: #1d4ed8; color: #fff;
  border-bottom-right-radius: 4px; box-shadow: 0 1px 3px rgba(29, 78, 216, .22);
}
.bubble.it {
  margin-right: auto; background: #fff; color: #232323;
  border: 1px solid #e2e2e8; border-bottom-left-radius: 4px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .05);
}
.bubble-think {
  margin: 0 0 8px; padding: 0 0 7px; border-bottom: 1px dashed #ececf1;
  font-size: 12.5px; line-height: 1.5; color: #8a8a90; white-space: normal;
}
.bubble-think::before { content: '· '; color: #94a3d4; font-weight: 700; }
.bubble-body { font-size: 14px; line-height: 1.75; }
.bubble-extra {
  margin: 10px -4px 0 0; padding: 8px 10px; white-space: normal;
  background: #f7f7fb; border-left: 3px solid #c7d2fe; border-radius: 0 8px 8px 0;
}
.bubble.waiting { color: #8a8a90; font-style: normal; }
.bubble .note { display: block; margin-top: 5px; font-size: 12px; color: #6b6b72; }
.bubble.it .note.bad { color: #b45309; }
.chat-input { display: flex; gap: 8px; margin-top: 10px; }
.chat-input input { flex: 1; min-width: 0; min-height: 44px; font-size: 16px; padding: 0 12px; border: 1px solid #d4d4d4; border-radius: 8px; font-family: inherit; }


/* ── 结果：搜索、分层、排序 ── */
.find-row { display: flex; gap: 8px; margin-bottom: 10px; }
.find-row input { flex: 1; min-width: 0; min-height: 44px; font-size: 16px; padding: 0 12px; border: 1px solid #d4d4d4; border-radius: 8px; font-family: inherit; }
.tier-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.tier-row .tiers { margin-bottom: 0; }
.sorts { display: flex; gap: 6px; flex-wrap: wrap; margin: 10px 0; }
.sorts .act { min-height: 32px; font-size: 14px; }
.tiers { display: flex; gap: 8px; margin-bottom: 10px; flex-wrap: wrap; }
.tiers .act { min-height: 40px; }
.tiers .act-primary { min-height: 40px; }
/* 一家一行：名字、分数、对得上的那几点、参保、行业、街道、电话，排得开就一行排完。
   行高压到最小，宽屏一屏能看几十家，不再是十来家。 */
.lead {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 1px 12px;
  width: 100%; text-align: left; background: #fff; border: 1px solid #e8e8ec;
  border-radius: 8px; padding: 6px 12px; margin-bottom: 5px; min-height: 0;
  justify-content: flex-start; font-size: 13px; line-height: 1.6;
}
.lead > span { color: #6b6b72; min-width: 0; overflow-wrap: anywhere; }
.lead .lead-name { font-weight: 600; font-size: 15px; color: #232323; }
.lead .lead-score { font-size: 14px; color: #1d4ed8; font-weight: 700; white-space: nowrap; }
.lead .lead-why { color: #15803d; }
.lead .lead-phone { color: #1d4ed8; }
.lead .lead-new { color: #dc2626; font-weight: 700; }
.lead.out { background: #fbfbfc; border-style: dashed; border-color: #dcdce2; }
.lead.out .lead-name { font-weight: 500; color: #6b6b72; }
.lead .lead-out { font-size: 13px; color: #8a8a90; font-weight: 400; min-width: 0; overflow-wrap: anywhere; }
.lib-foot { margin: 12px 0 0; padding-top: 10px; border-top: 1px solid #f1f1f4; font-size: 13px; }
.lib-foot:empty { display: none; }
.card-out { background: #fdf6ec; border: 1px solid #f0d9b5; border-radius: 10px; padding: 10px 13px; margin-bottom: 12px; font-size: 14px; color: #8a5a10; }
.pager { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; justify-content: center; }
.pager-gap { background: transparent; }

/* ── 企业卡 ── */
.card-page h1 { margin: 0; font-size: clamp(22px, 1.6vw, 24px); line-height: 1.3; color: #18181b; }
.card-hero { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 24px; }
.card-hero-main { min-width: 0; }
.card-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; margin-top: 10px; color: #6b6b72; font-size: 13px; }
.card-meta i { color: #c4c4cc; font-style: normal; }
.card-meta .meta-link { min-height: 28px; padding: 0 4px; background: transparent; color: #1d4ed8; }
.prob-card { min-width: 290px; padding: 14px 18px; border: 1px solid #c7d2fe; border-radius: 12px; background: #f7f9ff; text-align: right; }
.prob-card p { margin: 0; color: #334155; font-size: 15px; }
.prob-card p b { margin-left: 6px; color: #1d4ed8; font-size: 34px; line-height: 1; }
.prob-card span, .prob-card small { display: block; margin-top: 8px; color: #6b6b72; font-size: 13px; line-height: 1.5; }
.prob-card.out { max-width: 380px; border-color: #f0d9b5; background: #fdf8f0; }
.prob-card.out p { color: #8a5a10; font-weight: 600; }

.section-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; border-bottom: 1px solid #ececf1; margin-bottom: 2px; }
.section-heading h2 { margin-bottom: 0; border-bottom: 0; }
.section-heading p { margin: 0 0 8px; color: #6b6b72; font-size: 13px; }
.profile-group { padding: 16px 0; border-top: 1px solid #ececf1; }
.profile-group:first-of-type { border-top: 0; }
.profile-group h3, .card-why h3, .card-contact h3 { margin: 0 0 10px; color: #3f3f46; font-size: 15px; font-weight: 600; }
.profile-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px 20px; margin: 0; }
.profile-item { min-width: 0; padding: 2px 0; line-height: 1.5; }
.profile-item.hit-item { background: #fffbeb; border-radius: 6px; }
mark.hit { background: #fde68a; color: inherit; padding: 0 2px; border-radius: 2px; }
.profile-item dt { margin: 0 0 2px; color: #6b6b72; font-size: 13px; }
.profile-item dd { margin: 0; color: #27272a; font-size: 15px; overflow-wrap: anywhere; }
.profile-item.profile-long { grid-column: 1 / -1; }
.profile-long-value { display: -webkit-box; max-height: 9em; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 6; white-space: pre-wrap; }
.profile-long-value.expanded { display: block; max-height: none; -webkit-line-clamp: unset; }
.profile-long .act { margin-top: 4px; min-height: 28px; font-size: 13px; }
.profile-missing { padding-top: 12px; border-top: 1px solid #ececf1; }
.profile-missing > .act { justify-content: flex-start; max-width: 100%; height: auto; min-height: 32px; white-space: normal; text-align: left; }
.profile-missing p { margin: 8px 4px 0; color: #6b6b72; font-size: 13px; line-height: 1.7; }

.card-why-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; }
.why-reason, .why-prob { min-width: 0; }
.why-title { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.why-title h3 { margin-bottom: 0; }
.reason-main { margin: 14px 0 10px; color: #27272a; font-size: 17px; line-height: 1.8; }
.reason-opening { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border-left: 3px solid #1d4ed8; background: #f7f8fc; color: #3f3f46; }
.reason-opening span { min-width: 0; }
.reason-meta { margin-top: 10px; }
.summary-empty { margin-top: 14px; padding-top: 12px; border-top: 1px solid #ececf1; }
.summary-label { color: #3f3f46; font-size: 13px; font-weight: 600; }
.why-prob { padding: 16px; border-radius: 12px; background: #f7f8fa; }
.why-prob > h3 { padding-bottom: 8px; border-bottom: 1px solid #e5e7eb; }
.prob-formula { margin: 0; color: #1d4ed8; font-size: 18px; font-weight: 700; }
.prob-note { margin: 5px 0 14px; color: #6b6b72; font-size: 13px; }
.prob-group { margin-top: 13px; }
.prob-group-head { display: flex; justify-content: space-between; gap: 10px; color: #3f3f46; font-size: 13px; }
.prob-group-head b { color: #52525b; }
.prob-track { height: 7px; margin-top: 5px; overflow: hidden; border-radius: 999px; background: #e4e4e7; }
.prob-fill { display: block; height: 100%; border-radius: inherit; }
.prob-fill.g1 { background: #0ea5e9; } .prob-fill.g2 { background: #8b5cf6; } .prob-fill.g3 { background: #22c55e; }
.prob-fill.g4 { background: #f97316; } .prob-fill.g5 { background: #e11d48; }
.prob-fill.g6 { background: #eab308; } .prob-fill.g7 { background: #14b8a6; } .prob-fill.g8 { background: #64748b; }
.prob-rules { margin: 7px 0 0; padding: 0; list-style: none; color: #55555f; font-size: 13px; }
.prob-rules li { display: flex; justify-content: space-between; gap: 12px; padding: 3px 0; }
.prob-rules li span { min-width: 0; }
.prob-rules li b { flex: 0 0 auto; color: #166534; font-weight: 600; }
.prob-rules li b.score-minus { color: #b91c1c; }
.verify-list { margin-top: 16px; padding-top: 12px; border-top: 1px solid #e5e7eb; }
.verify-list h4, .contact-brief h4 { margin: 0 0 6px; color: #52525b; font-size: 13px; }
.verify-list ul { margin: 0; padding-left: 20px; color: #6b6b72; font-size: 13px; }

.card-contact-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
.contact-notes, .contact-brief { min-width: 0; }
.contact-brief { padding: 16px 18px; border-radius: 12px; background: #f5f6f8; color: #55555f; font-size: 14px; }
.contact-opening { margin-bottom: 16px; }
.contact-opening p { margin: 0; line-height: 1.7; }
.contact-opening .act { margin-top: 6px; }
.ask-list { margin: 0; padding-left: 22px; font-size: 14px; }
.ask-list li { margin-bottom: 6px; }
.status-buttons { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.status-buttons .act { min-height: 44px; padding: 0 4px; font-size: 14px; }
.note-row { display: flex; gap: 8px; margin-top: 14px; }
.note-row input { flex: 1; min-width: 0; min-height: 44px; font-size: 16px; padding: 0 12px; border: 1px solid #d4d4d4; border-radius: 8px; font-family: inherit; }
.note-list { list-style: none; margin: 10px 0 0; padding: 0; font-size: 13px; color: #6b6b72; }
.note-list li { padding: 6px 0; border-top: 1px solid #f1f1f4; }
.note-list .when { color: #a1a1aa; margin-right: 8px; }
.learned-line { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; padding: 9px 11px; border: 1px solid #bbf7d0; border-radius: 8px; background: #f0fdf4; color: #166534; font-size: 13px; }

/* ── 设置 ── */
.choice { display: flex; align-items: flex-start; gap: 10px; border: 1px solid #e5e5e5; border-radius: 10px; padding: 12px 14px; margin-bottom: 8px; cursor: pointer; background: #fff; }
.choice input { margin-top: 4px; width: 18px; height: 18px; }
.choice .name { font-weight: 600; font-size: 15px; }
.choice .desc { font-size: 13px; color: #8a8a8a; }
.field { margin-top: 10px; }
.field label { display: block; font-size: 13px; color: #55555f; margin-bottom: 4px; }
.field input, .field select { width: 100%; min-height: 44px; font-size: 16px; padding: 0 12px; border: 1px solid #d4d4d4; border-radius: 8px; font-family: inherit; background: #fff; }
.field textarea { width: 100%; font-size: 15px; line-height: 1.6; padding: 8px 12px; border: 1px solid #d4d4d4; border-radius: 8px; font-family: inherit; background: #fff; resize: vertical; }

.state-line { text-align: center; color: #8a8a8a; padding: 22px 8px; font-size: 14px; }
.bad-line { color: #b45309; font-size: 14px; margin-top: 8px; }

/* ── 登录 ── */
.login-body { display: flex; min-height: 100vh; align-items: center; justify-content: center; }
.login-wrap { width: 100%; max-width: 380px; padding: 16px; }
.login-card { margin: 0; }
.login-brand { font-size: 20px; font-weight: 700; margin-bottom: 14px; }
.login-card .actions { margin-top: 16px; display: flex; }
.login-card .actions .act { flex: 1; }

/* ── 找客户：左边潜在客户清单、右边对话，下面那一个框 ── */
body.has-composer { padding-bottom: 148px; }
/* 窄屏单列：清单排在上面，对话排在下面紧挨着输入框——说完话低头就能看见回话 */
.talk-page { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
.mine-col { order: 0; display: none; min-width: 0; }
/* 左栏和另外两栏一样放在白卡片里；只竖向滚，不横向溢出 */
.mine-card { background: #fff; border: 1px solid #e6e6ea; border-radius: 14px; padding: 18px 16px; overflow: hidden; box-sizing: border-box; }
.mine-body { display: flex; flex-direction: column; gap: 10px; }
.act.mine-new { width: 100%; }
/* 「我的找客户 ▾」只在窄屏收起左栏时用，宽屏不显示 */
.act.mine-toggle { display: none; }
.mine-body > input { width: 100%; min-height: 36px; padding: 0 10px; border: 1px solid #e0e3e8; border-radius: 8px; font: inherit; font-size: 13px; background: #f8f9fb; box-sizing: border-box; }
.mine-section { min-width: 0; }
.mine-section-title { display: flex; align-items: center; justify-content: space-between; margin: 2px 2px 6px; color: #8a8f98; font-size: 12px; font-weight: 600; letter-spacing: .02em; }
.mine-section-title b { color: #4b5563; font-weight: 600; margin-left: 2px; }
.act.mine-link { min-height: 0; padding: 0; border: 0; background: none; color: #1d4ed8; font-size: 12px; font-weight: 500; }
.act.mine-more { display: block; margin: 6px 2px 0; }
.mine-list { display: flex; flex-direction: column; gap: 2px; }
.mine-row { display: flex; align-items: center; min-width: 0; border-radius: 8px; }
.mine-row:hover { background: #f5f7fa; }
.act.mine-item { flex: 1 1 auto; min-width: 0; display: block; min-height: 0; padding: 7px 10px; border: 0; border-left: 3px solid transparent; border-radius: 8px; background: none; text-align: left; white-space: normal; font-weight: 400; }
.act.mine-item.on { background: #eef2ff; border-left-color: #1d4ed8; }
.mine-item .mine-name { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13.5px; font-weight: 600; color: #1f2937; }
.mine-item.on .mine-name { color: #1d4ed8; }
.mine-item .mine-meta { display: block; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; color: #8a8f98; }
.mine-dup { margin-right: 6px; padding: 0 5px; border-radius: 999px; background: #f1f1f5; color: #6b7280; font-size: 11px; font-weight: 500; }
.mine-new-dot { margin-left: 6px; color: #dc2626; }
.act.mine-del { flex: 0 0 auto; min-height: 0; width: 24px; height: 24px; padding: 0; margin-right: 4px; border: 0; background: none; color: #b0b4bb; font-size: 15px; visibility: hidden; }
.mine-row:hover .act.mine-del, .act.mine-del:focus { visibility: visible; }
.act.mine-del:hover { color: #dc2626; background: #fee2e2; }
.mine-del-confirm { display: inline-flex; gap: 2px; margin-right: 4px; }
.mine-del-confirm .act { min-height: 24px; padding: 0 7px; font-size: 12px; }
.mine-empty { margin: 4px 2px; color: #9aa0a8; font-size: 12.5px; }

.talk-page > .result-col { order: 1; }
.talk-page > .talk-col { order: 2; }
.talk-stream { display: flex; flex-direction: column; gap: 0; max-height: 40vh; overflow-y: auto; padding: 2px; }
.talk-stream.flat { max-height: none; overflow: visible; }
/* 没说过话的时候这一块顶上去：一行现算的摘要、几条点了就发的常用问法、一句这里能干什么 */
.talk-empty {
  margin: 0; padding: 14px 16px; border: 1px solid #e6e6ec; border-radius: 12px;
  background: #fafaff; color: #55555f; font-size: 14px;
}
.empty-now { margin: 0 0 10px; font-size: 14.5px; font-weight: 600; color: #232323; line-height: 1.6; }
.empty-asks { display: flex; flex-wrap: wrap; gap: 6px; }
.empty-asks .act { font-size: 13.5px; }
.empty-note { margin: 10px 0 0; font-size: 13px; color: #8a8a90; }
.today-block { margin-top: 14px; padding-top: 12px; border-top: 1px solid #e5e7eb; }
.today-block h3 { margin: 0 0 6px; font-size: 14px; color: #3f3f46; }
.today-row { width: 100%; min-height: 34px; justify-content: space-between; border: 0; padding: 3px 6px; background: transparent; text-align: left; }
.today-row span { color: #6b6b72; font-size: 13px; }

.result-block { margin-bottom: 0; }
.first-three { margin: 10px 0 12px; padding: 12px; border-radius: 12px; background: #f6f8ff; border: 1px solid #dbe3ff; }
.first-three h3 { margin: 0 0 9px; font-size: 15px; color: #1e3a8a; }
.first-three-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.first-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-content: start; gap: 4px 8px; min-width: 0; padding: 10px; background: #fff; text-align: left; }
.first-card > b { min-width: 0; overflow-wrap: anywhere; }
.first-card p { grid-column: 1 / -1; margin: 0; color: #55555f; font-size: 12.5px; line-height: 1.55; }
.first-card .prob-pill { padding: 1px 7px; border-radius: 999px; background: #1d4ed8; color: #fff; font-size: 12px; font-weight: 700; }
.first-card .first-phone { color: #1d4ed8; font-weight: 600; }
.result-head h2 { margin: 0; font-size: 16px; color: #232323; }
.result-head { align-items: center; }
.list-head-actions, .list-head-actions > span { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
/* 清单抬头：第一行叫什么、多少家；第二行这份名单是按什么条件筛出来的 */
.list-head { margin-bottom: 6px; padding-bottom: 8px; border-bottom: 1px solid #ececf1; }
.list-kind { margin-left: 8px; font-size: 11.5px; font-weight: 500; color: #6b6b72; background: #f1f1f5; border-color: #e4e4e8; vertical-align: middle; }
.list-why { margin-top: 4px; display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; }
.list-why-line { margin: 0; flex: 1 1 300px; min-width: 0; font-size: 13px; line-height: 1.6; color: #6b6b72; }
.list-why-line.clip { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.list-why .act { min-height: 26px; padding: 0 9px; font-size: 12.5px; }
.list-why-full { flex: 1 0 100%; margin-top: 8px; }
.list-why-full .hint-line { margin-top: 0; }
.bubble-diff { margin: 0; padding-left: 18px; font-size: 13px; color: #55555f; }
.bubble-diff li { margin-top: 3px; }
.bubble-diff li:first-child { margin-top: 0; }
.bubble-num { margin-top: 6px; font-size: 13px; font-weight: 700; color: #1d4ed8; }
.bubble-extra > .bubble-num:first-child { margin-top: 0; }
.bubble.it.bad { background: #fdf6ec; color: #8a5a10; border-color: #f0d9b5; }

.composer {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  background: #fff;
  border-top: 1px solid #e5e5e5;
  padding: 10px 16px 12px;
  z-index: 6;
}
/* 拖文件进来：整条框栏亮起来，并把那句落区提示顶出来 */
.composer.is-dragging { background: #f5f5ff; box-shadow: 0 -3px 0 #6366f1; }
.composer.is-dragging .composer-inner textarea { border-color: #6366f1; background: #fafaff; box-shadow: 0 0 0 3px #e0e7ff; }
.drop-hint { display: none; max-width: 1680px; margin: 8px auto 0; padding: 8px 12px; border: 1px dashed #6366f1; border-radius: 10px; color: #4338ca; font-size: 14px; text-align: center; }
.composer.is-dragging .drop-hint { display: block; }
.composer-files { max-width: 1680px; margin: 0 auto 8px; display: flex; flex-wrap: wrap; gap: 6px; }
.composer-files:empty { display: none; }
.composer-file { display: inline-flex; align-items: center; gap: 8px; padding: 4px 6px 4px 12px; border: 1px solid #e4e4e7; border-radius: 999px; background: #fafafa; font-size: 13px; max-width: 100%; overflow-wrap: anywhere; }
.composer-file .file-name { font-weight: 500; }
.composer-file .file-size { color: #8a8a90; }
.composer-file .act { min-height: 26px; font-size: 12px; padding: 0 8px; }
.composer-inner { max-width: 1680px; margin: 0 auto; display: flex; align-items: flex-end; gap: 10px; }
.composer-inner textarea {
  flex: 1; min-width: 0; min-height: 104px; max-height: 234px; font-size: 16px; line-height: 26px;
  padding: 12px 14px; border: 1px solid #c9c9cf; border-radius: 12px; font-family: inherit;
  background: #fff; resize: none; overflow-y: auto;
  transition: border-color .12s, background .12s, box-shadow .12s;
}
.composer-inner textarea:focus-visible { outline: none; border-color: #94a3d4; box-shadow: 0 0 0 3px #eef2ff; }
.composer-inner textarea:disabled { background: #f4f4f5; color: #8a8a90; }
.composer-inner .act-primary { min-height: 52px; padding: 0 26px; }
.composer-state { max-width: 1680px; margin: 6px auto 0; font-size: 13px; color: #6b6b72; }
.composer-state:empty { display: none; }

/* ── 首次挑能力 ── */
.onboard { max-width: 840px; margin: 5vh auto 0; padding: 12px 0 60px; }
.onboard h1, .onboard-progress h1 { margin: 0 0 6px; font-size: 28px; }
.onboard-intro { margin: 0 0 22px; color: #6b6b72; font-size: 16px; }
.onboard-caps { display: grid; gap: 10px; }
.onboard-cap { width: 100%; display: block; height: auto; min-height: 82px; padding: 14px 16px; text-align: left; }
.onboard-cap b, .onboard-cap span { display: block; }
.onboard-cap b { font-size: 18px; }
.onboard-cap span { margin-top: 4px; color: #71717a; font-size: 13px; font-weight: 400; }
.onboard-cap.selected { border-color: #1d4ed8; background: #eef2ff; box-shadow: 0 0 0 2px #c7d2fe; }
.onboard-under { margin: 8px 12px 14px; }
.onboard-edit { display: grid; gap: 5px; margin-top: 10px; }
.onboard-edit label { color: #55555f; font-size: 13px; }
.onboard-edit input, .onboard-edit textarea { width: 100%; padding: 9px 11px; border: 1px solid #d4d4da; border-radius: 8px; font: inherit; }
.onboard-files { margin-top: 10px; padding: 14px; border: 1px dashed #a5b4fc; border-radius: 10px; background: #fafaff; }
.onboard-files.over { background: #eef2ff; border-color: #1d4ed8; }
.onboard-files p { margin: 0 0 8px; color: #55555f; }
.onboard-files small { display: block; margin-top: 6px; color: #1d4ed8; }
.onboard-submit { display: flex; justify-content: flex-end; margin-top: 18px; }
.onboard-submit .act { min-width: 160px; min-height: 46px; }
.onboard-progress { max-width: 620px; margin: 16vh auto 0; padding: 30px; text-align: center; }
.onboard-progress p { color: #6b6b72; }
.progress-mark { width: 34px; height: 34px; margin: 0 auto 18px; border: 4px solid #dbe3ff; border-top-color: #1d4ed8; border-radius: 50%; animation: 转圈 .9s linear infinite; }
@keyframes 转圈 { to { transform: rotate(360deg); } }

/* ── 存成清单 / 新建能力项的小面板 ── */
/* 存成清单面板：打开后要一眼看到（用户 2026-10-12：灰底灰边容易被忽视、保存按钮不明显） */
.save-panel { border: 1.5px solid #3b6ef5; border-radius: 12px; padding: 14px 16px 12px; margin: 10px 0 14px; background: #f5f8ff; box-shadow: 0 6px 20px rgba(29, 78, 216, .12); animation: save-panel-in .22s ease-out; }
@keyframes save-panel-in { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .save-panel { animation: none; } }
.save-panel-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.save-panel-head strong { font-size: 15px; color: #1d4ed8; }
.save-panel-head span { font-size: 13px; color: #6b6b72; }
.save-panel .field input { background: #fff; }
.save-panel .chip-row .act-quiet { background: #fff; border-color: #e1e6f5; }
.save-panel .chip-row .act-primary { box-shadow: 0 0 0 2px #c7d7fe; }
.save-steps { margin: 0 0 10px; padding: 6px 10px; border-radius: 6px; background: #fff7e6; color: #b45309; font-size: 13.5px; font-weight: 600; }
.save-panel.guide .save-go { animation: 引导闪 1.1s ease-in-out 4; }
@keyframes 引导闪 { 0%, 100% { box-shadow: 0 2px 8px rgba(29, 78, 216, .28); } 50% { box-shadow: 0 0 0 6px rgba(245, 158, 11, .5); } }
@media (prefers-reduced-motion: reduce) { .save-panel.guide .save-go { animation: none; outline: 3px solid #f59e0b; } }
.save-gain { margin: 12px 0 2px; padding: 10px 14px; border-left: 4px solid #f59e0b; border-radius: 8px; background: #fff7e6; color: #5b4300; }
.save-gain b { display: block; font-size: 14px; color: #b45309; margin-bottom: 4px; }
.save-gain p { margin: 0; font-size: 13.5px; line-height: 1.7; }
.save-gain.folded { padding: 6px 12px; border-left-width: 3px; background: #fffbf2; }
.save-gain.folded summary { cursor: pointer; font-size: 13px; color: #b45309; }
.save-gain.folded p { margin-top: 6px; }
.save-panel-foot { margin-top: 14px; padding-top: 12px; border-top: 1px solid #dfe7fb; display: flex; align-items: center; justify-content: flex-end; gap: 12px; flex-wrap: wrap; }
.save-panel-foot .bad-line { margin: 0 auto 0 0; }
.save-panel-btns { display: inline-flex; gap: 10px; }
.save-panel .save-go { min-height: 40px; padding: 0 26px; font-size: 15px; border-radius: 9px; box-shadow: 0 2px 8px rgba(29, 78, 216, .28); }
.save-panel .save-cancel { min-height: 40px; padding: 0 16px; font-size: 14px; }
@media (max-width: 560px) { .save-panel-btns { width: 100%; } .save-panel-btns .act { flex: 1; } }
.chip-row { display: flex; flex-wrap: wrap; gap: 6px; }
.chip-row .act { min-height: 32px; font-size: 14px; }
.back-row { margin-bottom: 10px; }

/* ── 我方能力 ── */
.cap-group { padding: 0; overflow: hidden; }
.cap-group > .act { width: 100%; justify-content: space-between; border: none; border-radius: 0; min-height: 48px; background: #fafafb; }
.cap-groupbody { padding: 6px 12px 12px; }
.cap-item { border-top: 1px solid #f1f1f4; }
.cap-item:first-child { border-top: none; }
.cap-row { width: 100%; justify-content: space-between; border: none; background: transparent; min-height: 44px; text-align: left; }
.cap-body { padding: 2px 4px 12px; }
.cap-note { margin: 2px 0 8px; font-size: 13px; color: #6b6b72; }
.cap-body .actions { margin-top: 10px; display: flex; justify-content: flex-end; }

/* ── 消息 ── */
.msg { border: 1px solid #ededf0; border-radius: 10px; padding: 11px 13px; margin-bottom: 8px; background: #fff; }
.msg.new { border-color: #c7d2fe; background: #f7f8ff; }
.msg-top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.msg-text { font-size: 15px; font-weight: 500; min-width: 0; overflow-wrap: anywhere; }
.msg-meta { margin-top: 4px; font-size: 13px; color: #6b6b72; display: flex; gap: 4px 12px; flex-wrap: wrap; }
.msg-acts { margin-top: 8px; display: flex; gap: 6px; flex-wrap: wrap; }
.msg-acts:empty { display: none; }

/* ── 条件编辑 ── */
.rule-field { font-weight: 600; }
.rule-op { color: #6b6b72; }
.rule-input, .rule-num {
  min-height: 34px; font-size: 15px; padding: 0 10px; border: 1px solid #d4d4d4;
  border-radius: 8px; font-family: inherit; background: #fff; min-width: 0;
}
.rule-input { flex: 1; }
.rule-num { max-width: 6em; }

/* ── 更迭记录 ── */
.ver-block.now { border-color: #c7d2fe; background: #f9faff; }
.ver-no { font-size: 17px !important; color: #232323 !important; }
.ver-list { margin: 8px 0 0; padding-left: 22px; font-size: 14px; color: #44444c; }
.ver-list li { margin-top: 5px; }

/* ── 宽屏：对话四成、名单六成，两栏各自滚动，页面本身不出滚动条 ── */
@media (min-width: 900px) {
  body.has-composer {
    height: 100vh; overflow: hidden; padding-bottom: 0;
    display: flex; flex-direction: column;
  }
  body.has-composer .topbar { position: static; flex: 0 0 auto; }
  .talk-page {
    flex: 1 1 auto; min-height: 0; overflow: hidden;
    max-width: 1680px; width: 100%; padding: 14px 24px 10px;
    /* 清单在左、对话在右（用户 2026-09-23 指定）。清单是主角，仍占六成。
       用 order 换位而不是调 HTML 顺序：窄屏堆叠时还要让清单排在上面、对话贴着输入框。 */
    grid-template-columns: 240px minmax(0, 6fr) minmax(0, 4fr);
    align-items: stretch;
  }
  /* 左栏和名单、对话两栏一样撑满高度、顶部对齐（用户 2026-09-29：没对齐、偏窄）；列表在卡片里自己滚 */
  .mine-col { display: flex; flex-direction: column; min-height: 0; height: 100%; overflow: hidden; align-self: stretch; }
  .mine-col .mine-card { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; }
  .result-col { order: 1; }
  .talk-col { order: 2; }
  /* 对话贴着底部堆：内容少的时候紧挨着输入框往上排，空白留在上面，不再是一整片白 */
  .talk-col { display: flex; flex-direction: column; }
  .talk-col, .result-col { min-height: 0; height: 100%; padding-right: 2px; }
  .talk-col { overflow-y: auto; }
  .talk-stream { max-height: none; overflow: visible; margin-top: auto; }
  .bubble { max-width: 94%; }
  body.has-composer .composer { position: static; flex: 0 0 auto; }

  /* 清单这一栏要整栏撑满，卡片边框包住整片区域——否则内容一少，
     就成了"上面浮着一小块、下面一大片白"（2026-09-23 用户截图里的样子）。
     抬头与档位固定在上，名单自己滚，空的时候提示落在中间而不是塌在顶上。 */
  .result-col { display: flex; flex-direction: column; overflow: hidden; }
  .result-col > .result-block {
    flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column;
    margin-bottom: 0; overflow: hidden;
  }
  .result-block > .list-head, .result-block > #存面板, .result-block > #前三家, .result-block > .lead-head, .result-block > .tiers { flex: 0 0 auto; }
  .result-block > #名单 { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
  .result-block > #分页, .result-block > .lib-foot { flex: 0 0 auto; }
  .result-block > #名单 > .state-line:only-child {
    display: flex; align-items: center; justify-content: center; height: 100%; margin: 0;
  }
  .profile-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .card-contact-grid { grid-template-columns: minmax(0, 1fr) minmax(0, .88fr); }
}
@media (min-width: 1100px) {
  .talk-page { grid-template-columns: 300px minmax(0, 6fr) minmax(0, 4fr); }
}
@media (max-width: 899px) {
  .mine-col { display: block; order: 0; }
  .act.mine-toggle { display: flex; width: 100%; justify-content: space-between; }
  .mine-col .mine-body { display: none; }
  .mine-col.mine-open .mine-body { display: flex; margin-top: 10px; }
}

@media (min-width: 1100px) {
  .card-why-grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
}

@media (min-width: 1200px) {
  .profile-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* 再宽一点：名单那一栏一行放得下更多信息，行距再收一点 */
@media (min-width: 1400px) {
  .lead { font-size: 13.5px; padding: 5px 12px; margin-bottom: 4px; gap: 0 14px; }
  .tiers .act, .tiers .act-primary { min-height: 36px; }
}

@media (max-width: 420px) {
  .guide-steps { justify-content: flex-start; overflow-x: auto; font-size: 12px; }
  .guide-steps .tag { white-space: nowrap; font-size: 12px; }
  .first-three-grid { grid-template-columns: 1fr; }
  .onboard { margin-top: 1vh; padding: 8px 0 40px; }
  .onboard h1, .onboard-progress h1 { font-size: 23px; }
  .learned-line { align-items: flex-start; flex-direction: column; }
  body { font-size: 15px; }
  .page { padding: 12px 12px 48px; }
  .two-col { grid-template-columns: minmax(0, 1fr); }
  .status-buttons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .chat-log { max-height: 240px; }
  .topbar { gap: 2px 8px; padding: 8px 12px; }
  .topbar .sub { flex: 1 0 100%; }
  .topbar .brand { flex: 1 0 100%; }
  .topbar .nav { margin-left: 0; width: 100%; gap: 2px; }
  .nav-item { font-size: 14px; padding: 0 7px; }
  .nav-soon { font-size: 12px; }
  .ask-file { align-items: flex-start; flex-wrap: wrap; }
  .ask-file-meta { width: 100%; text-align: left; }
  .composer { padding: 8px 12px 10px; }
  .composer-inner textarea { min-height: 86px; font-size: 16px; line-height: 24px; padding: 10px 12px; }
  .composer-inner .act-primary { min-height: 44px; padding: 0 14px; }
  .talk-stream { max-height: 34vh; }
  body.has-composer { padding-bottom: 136px; }
  .lead { padding: 7px 10px; }
}
.choice .desc.bad { color: #b45309; display: block; margin-top: 3px; }

/* 我方能力：清单卡片下面那一行改名操作 */
.list-slot { margin-bottom: 8px; }
.rename-row { display: flex; gap: 8px; align-items: center; margin: 4px 0 0 2px; }
.rename-row input { flex: 1 1 auto; min-width: 0; }

/* 卡片第二行那几段（共多少家、强烈多少家、更新于哪天）原来是裸 span 挨着排，
   读起来像「共 1100 家强烈 143 家更新于 2026-09-22」。给它们排距与分隔。 */
.lead .lead-top { display: flex; align-items: baseline; gap: 8px; flex: 1 1 100%; min-width: 0; }
.lead .lead-meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 14px; flex: 1 1 100%; min-width: 0; color: #6b6b72; }
.lead .lead-meta > span { position: relative; }
.lead .lead-meta > span + span::before {
  content: ''; position: absolute; left: -8px; top: 50%; width: 1px; height: 11px;
  margin-top: -5px; background: #dcdce2;
}

/* 某一档 0 家时，整块提示落在名单区正中，并把还有货的档摆出来让人一点就走 */
.empty-tier { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; height: 100%; min-height: 160px; text-align: center; }
.empty-tier .state-line { margin: 0; }
.empty-tier-go { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; }

/* 名字跟条件对不上时，改名框下面那一行说明 */
.rename-note { margin: 4px 2px 8px; font-size: 12.5px; line-height: 1.5; color: #8a8a90; }

/* 我方能力页：AI 从档案推断出来的每一条 */
.sugg { padding: 10px 12px; border: 1px solid #e8e8ec; border-radius: 8px; margin-bottom: 8px; background: #fff; }
.sugg-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 15px; }
.sugg-why { color: #6b6b72; font-size: 13px; }
.sugg .actions { margin-top: 8px; display: flex; gap: 8px; flex-wrap: wrap; }
.sugg .actions .act-primary { min-height: 36px; }
#档案区 .me-name { font-size: 17px; font-weight: 700; }
#档案区 .me-line { font-size: 13px; color: #6b6b72; margin-top: 2px; }
#档案区 .me-sec { margin-top: 8px; }
/* 档案分组：原来只写在 me.html 页内，「我方能力」页顶部的我方档案用同样的类却拿不到，展开后名称和值一行一个往下堆（2026-09-28 查明，一直如此） */
.me-sec { border: 1px solid #e3e7ec; border-radius: 8px; margin-bottom: 10px; background: #fff; }
.me-sec > .act { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 10px; text-align: left; border: 0; background: transparent; padding: 11px 13px; }
.me-body { padding: 2px 13px 13px; border-top: 1px solid #eef1f4; }
.me-note { color: #5b6672; font-size: 13px; margin: 9px 0 2px; }
.me-kv { display: grid; grid-template-columns: minmax(6em, 10em) 1fr; gap: 4px 12px; margin: 8px 0 0; }
.me-kv dt { color: #5b6672; font-size: 13px; }
.me-kv dd { margin: 0; font-size: 14px; word-break: break-all; }
.me-list { margin: 6px 0 0; padding-left: 1.1em; }
.me-list li { margin: 3px 0; font-size: 14px; }
.me-card { border: 1px solid #eef1f4; border-radius: 6px; padding: 9px 11px; margin-top: 8px; }
.me-card .me-card-top { font-weight: 600; margin-bottom: 4px; }
.me-null { color: #9aa4ae; }

/* 投资布局：分类优先、表格密度适中，长内容用原生展开保留上下文 */
.inv-page h1 { margin: 0; font-size: clamp(22px, 1.8vw, 28px); color: #18181b; }
.inv-head .hint-line { margin: 5px 0 0; }
.inv-overview { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 8px; margin-top: 18px; }
.inv-stat { min-height: 66px; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 4px; text-align: left; }
.inv-stat b { font-size: 14px; }
.inv-stat span, .inv-nav-item span { color: #6b6b72; font-size: 12px; }
.inv-layout { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 16px; align-items: start; }
.inv-nav { position: sticky; top: 12px; padding: 14px; }
.inv-nav h2 { margin: 0 0 10px; font-size: 15px; }
.inv-nav-list { display: grid; gap: 5px; }
.inv-nav-item { width: 100%; min-height: 40px; display: flex; justify-content: space-between; align-items: center; text-align: left; }
.inv-content { min-width: 0; }
.inv-section-title { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.inv-section-title h2 { margin: 0; font-size: 18px; }
.inv-table-wrap { overflow-x: auto; max-width: 100%; }
.inv-table { width: 100%; min-width: 680px; border-collapse: collapse; font-size: 13.5px; }
.inv-table th, .inv-table td { padding: 10px 9px; border-bottom: 1px solid #ececf1; vertical-align: top; text-align: left; line-height: 1.5; }
.inv-table th { background: #f8f9fc; color: #52525b; font-weight: 600; white-space: nowrap; }
.inv-table tr:hover td { background: #fbfcff; }
.inv-company-link { padding: 2px 0; font-weight: 600; }
.inv-library-note { margin: 8px 0 0; color: #71717a; font-size: 12px; }
.inv-unmatched { display: block; margin-top: 4px; color: #9a5b11; font-size: 12px; font-weight: 400; white-space: nowrap; }
.inv-detail { min-width: 180px; }
.inv-detail summary { cursor: pointer; color: #3f3f46; }
.inv-detail-body { margin-top: 7px; padding: 8px 10px; background: #f8f9fc; border-radius: 6px; white-space: pre-wrap; }
.inv-source { margin: 4px 0 12px; font-size: 12px; color: #71717a; }
.inv-source a, .inv-table a { color: #1d4ed8; }
.inv-directions { margin: 0; padding-left: 26px; }
.inv-directions li { padding: 8px 0; line-height: 1.6; }
.inv-directions li .inv-source { display: inline; margin-left: 8px; }
.inv-tools { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin: 0 0 8px; }
.inv-chip { min-height: 32px; }
.inv-filter-row { display: flex; gap: 10px; align-items: baseline; flex: 1 1 100%; }
.inv-filter-name { flex: 0 0 auto; font-size: 13px; color: var(--muted, #6b7280); min-width: 2.5em; }
.inv-chip small { opacity: .7; margin-left: 2px; }
.inv-search-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.inv-tools input { min-width: min(280px, 100%); flex: 1 1 220px; min-height: 40px; padding: 8px 11px; border: 1px solid #d7d9e0; border-radius: 8px; font: inherit; }
.inv-empty { padding: 24px !important; text-align: center !important; color: #71717a; }
.inv-empty-state { min-height: 280px; display: grid; place-items: center; color: #71717a; }
.inv-platform + .inv-platform { margin-top: 24px; padding-top: 18px; border-top: 1px solid #ececf1; }
.inv-platform h3 { margin: 14px 0 6px; font-size: 14px; }
.inv-platform-note { line-height: 1.7; margin: 0 0 6px; white-space: pre-wrap; }
/* 投资布局重做：用信息层级替代颜色堆叠，企业行保持可扫读、可回退。 */
.inv-head { padding: 22px; }
.inv-head .inv-library-note { margin: 7px 0 0; }
.inv-overview { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.inv-stat { min-height: 76px; padding: 12px 14px; border: 1px solid #e5eaf1; border-radius: 9px; background: #fbfcfe; }
.inv-stat span { font-size: 13px; }
.inv-stat b { font-size: 22px; color: #172554; font-variant-numeric: tabular-nums; }
.inv-nav { top: 14px; }
.inv-table-wrap { border: 1px solid #e8ebf0; border-radius: 9px; background: #fff; }
.inv-invest-table { min-width: 920px; table-layout: fixed; }
.inv-invest-table th:nth-child(1) { width: 23%; }
.inv-invest-table th:nth-child(2) { width: 15%; }
.inv-invest-table th:nth-child(3) { width: 15%; }
.inv-invest-table th:nth-child(4) { width: 11%; }
.inv-invest-table th:nth-child(5) { width: 18%; }
.inv-invest-table th:nth-child(6) { width: 18%; }
.inv-table thead th { position: sticky; top: 0; z-index: 1; box-shadow: 0 1px 0 #e5e7eb; }
.inv-table tbody tr:nth-child(even) td { background: #fcfdff; }
.inv-table td { overflow: hidden; text-overflow: ellipsis; }
.inv-table td small, .inv-enterprise small { display: block; margin-top: 3px; color: #71717a; font-size: 12px; line-height: 1.45; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.inv-company-link, .inv-company-name { display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; vertical-align: bottom; white-space: nowrap; }
.inv-company-link:focus-visible, .inv-nav-item:focus-visible, .inv-chip:focus-visible, .inv-tools input:focus-visible { outline: 3px solid #93c5fd; outline-offset: 2px; }
.inv-status { display: inline-block; margin-left: 5px; padding: 1px 5px; border: 1px solid #d8dee8; border-radius: 99px; color: #475569; background: #f8fafc; }
.inv-missing-tag { display: inline-block; margin-left: 6px; padding: 1px 5px; border-radius: 99px; color: #9a5b11; background: #fff7ed; font-size: 12px; white-space: nowrap; }
.inv-sub-row td:first-child { position: relative; padding-left: 24px; }
.inv-sub-row td:first-child::before { position: absolute; top: 0; bottom: 0; left: 12px; width: 2px; background: #dbe7f5; content: ''; }
.inv-number { text-align: right !important; font-variant-numeric: tabular-nums; }
.inv-detail { min-width: 0; }
.inv-detail summary { min-height: 32px; display: inline-flex; align-items: center; color: #1d4ed8; }
.inv-detail-body dl { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 6px 10px; margin: 0; }
.inv-detail-body dt { color: #64748b; }
.inv-detail-body dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.inv-filter-row { align-items: flex-start; }
.inv-chip { min-height: 36px; }
.inv-tools input { min-height: 44px; }
.inv-directions li small { display: block; margin-top: 3px; color: #64748b; }
@media (max-width: 640px) {
  .inv-head { padding: 18px 16px; }
  .inv-overview { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .inv-stat { min-height: 68px; }
  .inv-nav { border-radius: 9px; }
  .inv-filter-row { display: block; }
  .inv-filter-name { display: block; margin: 2px 0 6px; }
  .inv-table-wrap { overflow: visible; border: 0; background: transparent; }
  .inv-invest-table, .inv-invest-table tbody, .inv-invest-table tr, .inv-invest-table td { display: block; min-width: 0; width: 100%; }
  .inv-invest-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .inv-invest-table tr { margin: 10px 0; padding: 12px; border: 1px solid #e3e8ef; border-radius: 9px; background: #fff; }
  .inv-invest-table tbody tr:nth-child(even) td { background: transparent; }
  .inv-invest-table td { display: grid; grid-template-columns: 108px minmax(0, 1fr); gap: 8px; padding: 7px 0; border: 0; text-align: left !important; }
  .inv-invest-table td::before { color: #64748b; font-size: 12px; content: attr(data-label); }
  .inv-invest-table td:first-child { display: block; padding-left: 0; }
  .inv-invest-table td:first-child::before { display: none; }
  .inv-sub-row { margin-top: -11px !important; border-top: 0 !important; border-radius: 0 0 9px 9px !important; }
  .inv-sub-row td:first-child { padding-left: 16px; }
  .inv-sub-row td:first-child::before { left: 4px; }
  .inv-detail-body { grid-column: 2; }
}
@media (max-width: 720px) {
  .inv-layout { display: block; }
  .inv-nav { position: static; padding: 12px; overflow-x: auto; }
  .inv-nav h2 { margin-bottom: 8px; }
  .inv-nav-list { display: flex; gap: 6px; min-width: max-content; }
  .inv-nav-item { width: auto; min-height: 40px; gap: 8px; white-space: nowrap; }
  .inv-content { margin-top: 12px; }
  .inv-table { min-width: 620px; }
}
@media (max-width: 420px) {
  .me-kv { grid-template-columns: 1fr; gap: 1px 0; }
  .me-kv dd { margin-bottom: 6px; }
}

/* 已存清单的线上聊出来的改动还没覆盖：标题下这一行 */
.pending-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0 0 8px; padding: 8px 10px; background: #fff7ed; border: 1px solid #fed7aa; border-radius: 8px; }
.pending-note { flex: 1 1 240px; min-width: 0; font-size: 13px; color: #9a3412; }
.pending-row .act-primary { min-height: 36px; }

/* 卡片页：和 AI 讨论这家的判断 */
.card-composer { display: flex; gap: 8px; align-items: flex-end; margin-top: 10px; }
.card-composer textarea { flex: 1; min-width: 0; font-size: 15px; padding: 10px 12px; border: 1px solid #d4d4d4; border-radius: 10px; resize: vertical; font-family: inherit; }
.card-composer .act-primary { min-height: 44px; }
.talk-stream.flat { max-height: 420px; overflow-y: auto; padding: 4px 2px; }
.bubble-score { margin-top: 6px; font-size: 13.5px; color: #1d4ed8; }
.bubble-exp { margin-top: 6px; font-size: 13px; color: #15803d; }
/* 设置页：经验库 */
.exp-item { padding: 10px 12px; border: 1px solid #e8e8ec; border-radius: 8px; margin-bottom: 8px; background: #fff; }
.exp-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; font-size: 15px; }
.exp-meta { margin: 4px 0 0; font-size: 13px; color: #6b6b72; }

/* 设置页：四个页签，一次只看一块 */
.set-nav { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 14px; }
.set-nav .act b { margin-left: 4px; }
.set-pane[hidden] { display: none; }
/* 经验库 */
.filter-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 6px; }
.filter-label { font-size: 13px; color: #6b6b72; min-width: 2.5em; }
.filter-row .act { min-height: 30px; padding: 0 10px; font-size: 13.5px; }
.exp-group { margin-top: 14px; }
.exp-group-head { margin-bottom: 6px; font-size: 14px; color: #3f3f46; }
.exp-acts { display: inline-flex; gap: 4px; flex: 0 0 auto; }
.exp-acts .act { min-height: 30px; padding: 0 10px; font-size: 13.5px; }
.exp-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; }
/* 卡片页：这家哪里对得上，先一段综述 */
.summary-box { margin: 14px 0 0; padding: 12px 14px; background: #f7f7fb; border-left: 3px solid #4f46e5; border-radius: 0 8px 8px 0; }
.summary-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.summary-top .act { min-height: 30px; padding: 0 10px; font-size: 13.5px; }
.summary-text { margin: 0; font-size: 15px; line-height: 1.8; color: #232323; }

/* 每一格对话底下的「存为经验」；助手格里记了什么、参考了几条 */
.bubble-tools { margin-top: 6px; text-align: right; }
.bubble-tools .act { min-height: 26px; padding: 0 8px; font-size: 12.5px; color: #6b6b72; }
.bubble.me .bubble-tools .act { color: #fff; background: rgba(255,255,255,.16); border-color: rgba(255,255,255,.45); }
.bubble.me .bubble-tools .act:hover { background: rgba(255,255,255,.3); border-color: #fff; color: #fff; }
.bubble-used { margin-top: 6px; font-size: 12.5px; color: #8a8a90; }
/* 存为经验的就地编辑框 */
.exp-inline { margin: 6px 0 12px; padding: 10px 12px; background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 8px; }
.exp-inline textarea, .exp-inline input, .exp-inline select { width: 100%; font-size: 14px; padding: 8px 10px; border: 1px solid #d4d4d4; border-radius: 8px; font-family: inherit; margin-top: 4px; }
.exp-inline label { font-size: 13px; color: #3f3f46; display: block; margin-top: 6px; }
.exp-inline .actions { margin-top: 8px; display: flex; gap: 8px; }
/* 卡片页对话区放大 */
.talk-stream.flat.big { max-height: none; }
.talk-head-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.talk-head-row .act { min-height: 30px; padding: 0 10px; font-size: 13.5px; }
.exp-ok { color: #15803d; margin: -4px 0 12px 2px; }

/* 经验库 v2：环境行、相近候选、编辑面板的三栏与勾选片、待确认/停用状态 */
.three-col { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
@media (max-width: 720px) { .three-col { grid-template-columns: 1fr; } }
.check-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border: 1px solid #e2e2e8; border-radius: 999px; font-size: 13.5px; background: #fff; cursor: pointer; margin: 2px 4px 2px 0; }
.check-chip input { margin: 0; }
.check-note { font-size: 12px; color: #8a8a90; margin-left: 4px; }
.exp-route { margin: 6px 0 0; font-size: 13px; color: #55555f; line-height: 1.7; }
.exp-route-label { display: inline-block; padding: 0 6px; margin-right: 6px; border-radius: 4px; background: #eef2ff; color: #1d4ed8; font-size: 12px; }
.exp-dot { color: #c4c4cc; margin: 0 6px; }
.exp-near { margin-top: 8px; padding: 8px 10px; background: #fffbeb; border: 1px solid #fde68a; border-radius: 8px; font-size: 13px; color: #92400e; }
.exp-near-label { font-weight: 600; margin-right: 6px; }
.exp-near-item { display: inline-flex; align-items: center; gap: 6px; margin: 2px 8px 2px 0; }
.exp-near .act { min-height: 26px; padding: 0 8px; font-size: 12.5px; }
.exp-group-note { font-size: 12.5px; color: #8a8a90; font-weight: 400; }
.exp-item.pending { border-color: #fed7aa; background: #fffaf5; }
.exp-item.off { opacity: .6; }
.exp-item .exp-tags .tag { margin-bottom: 2px; }

/* 找客户页名单 v2：去掉每行的框，改成表格式的行与细分隔线；名字与原因各最多两行；概率做成小胶囊 */
.lead-row {
  display: grid; grid-template-columns: minmax(150px, 1.3fr) 64px minmax(0, 3.2fr) 80px 88px;
  gap: 0 14px; align-items: start; width: 100%; text-align: left;
  background: transparent; border: none; border-bottom: 1px solid #eeeef1; border-radius: 0;
  min-height: 40px; padding: 7px 8px; margin: 0; font-size: 13.5px; line-height: 1.5; align-items: center;
}
.lead-row:hover { background: #f7f8fc; }
.lead-row > span { min-width: 0; overflow-wrap: anywhere; }
/* 企业名一行、太长省略号，每行一样高（用户 2026-09-29：两份清单一份名字折两行、一份一行） */
.lead-row .lead-name { font-weight: 600; font-size: 14px; color: #232323; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lead-row .lead-prob { display: inline-block; justify-self: end; min-width: 52px; text-align: center; padding: 1px 8px; border-radius: 999px; font-weight: 700; font-size: 13px; background: #eef2ff; color: #1d4ed8; }
.lead-row .lead-prob.hi { background: #1d4ed8; color: #fff; }
.lead-row .lead-prob.lo { background: #f1f1f5; color: #6b6b72; }
.lead-row .lead-prob.risk-hi { background: #fee2e2; color: #b91c1c; } .lead-row .lead-prob.risk-mid { background: #ffedd5; color: #c2410c; } .lead-row .lead-prob.risk-lo { background: #ecfdf5; color: #047857; } .lead-row .lead-prob.risk-none { background: #f1f1f5; color: #6b6b72; }
.lead-row .lead-reason { color: #3f3f46; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.lead-row .lead-reason.ai::before { content: ''; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: #15803d; margin-right: 6px; vertical-align: 2px; }
.lead-row .lead-ind, .lead-row .lead-st { justify-self: end; color: #8a8a90; font-size: 13px; text-align: right; }
.lead-row.out { opacity: .6; }
.lead-head { position: sticky; top: 0; z-index: 2; margin: 6px 0 0; background: #fff; }
.lead-head-row { border-bottom: 1px solid #e2e2e8; padding: 2px 8px 6px; color: #8a8a90; font-size: 12.5px; }
.lead-head-row:hover { background: transparent; }
.lead-head-row .act { min-height: 24px; padding: 0 6px; font-size: 12.5px; border-color: transparent; background: transparent; color: #8a8a90; font-weight: 500; }
.lead-head-row .act.act-primary { color: #1d4ed8; background: #eef2ff; }
.lead-head-row .c-prob { justify-self: end; }
.insight-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0; font-size: 12.5px; color: #6b6b72; }
.insight-row .act { min-height: 26px; padding: 0 10px; font-size: 12.5px; }
.result-block > .lead-head { flex: 0 0 auto; }
@media (max-width: 720px) {
  .lead-row { grid-template-columns: 1fr 60px; }
  .lead-row .lead-reason, .lead-row .lead-ind, .lead-row .lead-st { grid-column: 1 / -1; }
  .lead-row .lead-ind { display: inline; } .lead-row .lead-st { display: inline; }
  .lead-head-row { display: none; }
  .card-hero, .card-why-grid, .card-contact-grid { grid-template-columns: minmax(0, 1fr); }
  .prob-card { min-width: 0; width: 100%; text-align: left; }
  .card-meta { gap: 4px 6px; }
  .card-meta i { display: none; }
  .card-meta > span, .card-meta > .act { flex: 1 1 100%; justify-content: flex-start; }
  .card-page .block { padding: 16px; }
  .status-buttons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .note-row { flex-wrap: wrap; }
  .note-row #noteBtn, .note-row #noteBtn .act { width: 100%; }
}
/* 1400 以上企业名一列给足一行（14 个字），行业、街道也放宽；写在文件末尾，别被上面的基础规则盖掉 */
@media (min-width: 1400px) { .lead-row { grid-template-columns: minmax(230px, 1.3fr) 64px minmax(0, 3.6fr) 92px 96px; } }
/* 900–1399：清单栏只有五六百像素宽，五列摆不开。改成三列（企业 / 概率 / 原因），行业和街道缩成小字排在企业名下面一左一右 */
@media (min-width: 721px) and (max-width: 1399px) {
  .lead-row { grid-template-columns: minmax(170px, 1.2fr) 60px minmax(0, 3fr); row-gap: 2px; }
  .lead-row .lead-name { grid-column: 1; grid-row: 1; }
  .lead-row .lead-prob, .lead-row .prob-cell { grid-column: 2; grid-row: 1; }
  .lead-row .lead-reason { grid-column: 3; grid-row: 1 / span 2; }
  .lead-row .lead-ind, .lead-row .lead-st { grid-row: 2; grid-column: 1; font-size: 12px; text-align: left; }
  .lead-row .lead-ind { justify-self: start; }
  .lead-row .lead-st { justify-self: end; }
  .lead-head-row .c-ind, .lead-head-row .c-st { display: none; }
}
/* 企业卡·全部资料：默认收着，展开后每组一个可收起的组头（和我方能力页的档案一个做法） */
.card-profile .section-heading { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.card-profile .section-heading h2 { margin: 0; }
.card-profile .section-heading p { margin: 0; flex: 1; text-align: right; }
.profile-group-head { width: 100%; justify-content: space-between; min-height: 38px; padding: 0 10px; margin: 0 0 8px; border-color: transparent; background: #f6f6f9; font-weight: 600; color: #3f3f46; border-radius: 8px; }
.profile-group-head:hover { background: #eef2ff; }
.profile-group-head .tag { margin-left: 6px; font-weight: 500; }
.profile-group-head > span:last-child { font-weight: 400; font-size: 13px; color: #8a8a90; }
/* 对话里补上来的资料：抬头里和库里的并排，浅黄底标明是人补的 */
.card-meta .meta-extra, .card-meta .meta-link.extra { background: #fff7e6; border-radius: 6px; padding: 0 6px; }
.extra-list { list-style: none; margin: 0; padding: 0; font-size: 13.5px; }
.extra-list li { padding: 4px 0; border-top: 1px solid #f1f1f4; }
.extra-list li b { font-weight: 600; margin-right: 6px; }
.extra-list .when { float: right; color: #a1a1aa; font-size: 12px; }
/* 企业卡「为什么可能成为客户」：左栏顶端对齐、把电话里要问的和待核实项排进去，别留一大片白 */
.card-why-grid { align-items: start; }
.why-extra { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 24px; margin-top: 16px; padding-top: 14px; border-top: 1px solid #ececf1; }
.why-extra .verify-list { margin-top: 0; padding-top: 0; border-top: none; }
.why-extra .ask-block h4 { margin: 0 0 6px; color: #52525b; font-size: 13px; }
.why-extra .ask-list { font-size: 13.5px; color: #3f3f46; padding-left: 20px; }
.why-extra .ask-list li { margin-bottom: 4px; }
.card-contact-grid.single { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 720px) { .why-extra { grid-template-columns: minmax(0, 1fr); } }
/* 企业卡两栏：左边这家企业，右边整栏对话（要长不要宽）。1200 以下退回上下堆 */
.card-main { min-width: 0; }
.card-side { min-width: 0; }
@media (min-width: 1200px) {
  .card-page { display: grid; grid-template-columns: minmax(0, 1fr) minmax(400px, 31%); gap: 16px; align-items: start; }
  .card-side { position: sticky; top: 64px; height: calc(100vh - 80px); display: flex; flex-direction: column; margin-bottom: 0; }
  .card-side .talk-head-row, .card-side .hint-line, .card-side .card-composer, .card-side > .actions { flex: 0 0 auto; }
  .card-side .talk-stream.flat { flex: 1 1 auto; min-height: 0; max-height: none; overflow-y: auto; }
  .card-side [data-act="放大对话"] { display: none; }
  .card-side .bubble { max-width: 96%; }
}
/* 打完记一下并进「为什么可能成为客户」底部：一行排开 */
.why-contact { margin-top: 16px; padding-top: 14px; border-top: 1px solid #ececf1; }
.why-contact .contact-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.why-contact .contact-row h3 { margin: 0; color: #3f3f46; font-size: 15px; font-weight: 600; }
.why-contact .status-buttons { display: flex; gap: 6px; }
.why-contact .status-buttons .act { min-height: 34px; padding: 0 14px; font-size: 13.5px; }
.why-contact .note-row { flex: 1 1 320px; min-width: 240px; }
.why-contact .note-row input { min-height: 34px; font-size: 14px; }
.why-contact .note-row .act { min-height: 34px; }
.why-contact .note-list:empty { display: none; }
.why-contact .contact-extra { margin-top: 10px; }
.why-contact .contact-extra h4 { margin: 0 0 4px; color: #52525b; font-size: 13px; }

/* ══ 企业卡视觉整理（2026-09-24）：一套字号、一种次要动作样式、两行抬头、概率当数字看 ══ */
/* 次要动作统一成文字链：不再满页灰胶囊 */
.act.act-link { min-height: 28px; padding: 0 6px; border-color: transparent; background: transparent; color: #1d4ed8; font-size: 13.5px; font-weight: 500; white-space: nowrap; }
.act.act-link:hover { background: #eef2ff; border-color: transparent; }
/* 抬头：名字 → 一行事实 → 一行联系方式；右边概率只是一个大数字 */
.card-hero { gap: 28px; padding: 22px 24px; }
.card-facts { display: flex; flex-wrap: wrap; gap: 4px 0; margin-top: 8px; color: #6b6b72; font-size: 13.5px; }
.card-facts span + span::before { content: '·'; margin: 0 8px; color: #c4c4cc; }
.card-meta { gap: 6px 8px; margin-top: 12px; }
.card-meta .meta-link { min-height: 28px; padding: 0 10px; border-radius: 999px; background: #f3f4f7; color: #1d4ed8; font-size: 13px; font-weight: 500; }
.card-meta .meta-link:hover { background: #e4e9ff; }
.card-meta .meta-link.extra, .card-meta .meta-extra { background: #fff4de; color: #7c4a03; }
.card-meta .meta-extra { display: inline-flex; align-items: center; min-height: 28px; padding: 0 10px; border-radius: 999px; font-size: 13px; }
.prob-card { min-width: 0; padding: 4px 0 4px 24px; border: 0; border-left: 1px solid #ececf1; border-radius: 0; background: transparent; text-align: left; }
.prob-card p { margin: 0; color: #6b6b72; font-size: 13px; }
.prob-card b { display: block; margin: 2px 0 4px; color: #1d4ed8; font-size: 40px; line-height: 1; font-weight: 700; font-variant-numeric: tabular-nums; }
.prob-card span, .prob-card small { display: block; margin: 0; color: #8a8a90; font-size: 12.5px; line-height: 1.5; white-space: nowrap; }
.prob-card.out { max-width: 320px; padding: 4px 0 4px 24px; border-color: #ececf1; background: transparent; }
.prob-card.out p { color: #8a5a10; font-weight: 600; font-size: 15px; }
/* 全部资料收着时就是一行 */
.card-profile .section-heading { border-bottom: 0; }
.card-profile .section-heading p { margin: 0; }
/* 理由：标题行右边一句灰字 + 两个文字链 */
.why-title { min-height: 30px; }
.why-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 2px 4px; }
.why-meta { color: #8a8a90; font-size: 12.5px; margin-right: 6px; }
.reason-main { margin: 12px 0 12px; font-size: 16.5px; line-height: 1.8; }
.reason-opening { border-radius: 0 8px 8px 0; font-size: 14.5px; line-height: 1.7; }
.reason-opening b { display: block; margin-bottom: 2px; color: #1d4ed8; font-size: 12.5px; font-weight: 600; }
.reason-opening .act { flex: 0 0 auto; }
.summary-box { margin-top: 14px; }
.why-extra h4, .why-extra .verify-list h4 { margin: 0 0 6px; color: #3f3f46; font-size: 13px; font-weight: 600; }
.why-extra .ask-list, .why-extra .verify-list ul { font-size: 13.5px; line-height: 1.6; color: #52525b; }
/* 概率框：与左栏同一套字号 */
.why-prob > h3 { font-size: 14px; }
.prob-formula { font-size: 17px; }
/* 右栏对话：空着的时候常用问法贴着输入框 */
.card-side .talk-head-row h2 { margin: 0; }
.card-side .hint-line { margin: 4px 0 10px; }
.card-side .talk-stream.flat { padding: 4px 6px 4px 2px; }
.talk-empty { margin-top: auto; padding: 8px 2px 10px; }
.talk-empty-line { margin: 0 0 8px; color: #8a8a90; font-size: 13px; }
.empty-asks .act { min-height: 30px; padding: 0 10px; font-size: 13px; }
.card-side .card-composer textarea { font-size: 14.5px; }
@media (max-width: 720px) {
  .prob-card { padding: 12px 0 0; border-left: 0; border-top: 1px solid #ececf1; }
  .prob-card span { white-space: normal; }
}
/* 右栏对话盒子：高度 = 左栏高度（两栏底边对齐）；左栏超过一屏时盒子最多一屏高并粘住，输入框不会跑到视野外 */
@media (min-width: 1200px) {
  .card-page { align-items: stretch; }
  .card-side { position: static; height: auto; display: block; min-height: 0; }
  .card-main .block:last-child { margin-bottom: 0; }
  .card-side-box { position: sticky; top: 64px; height: calc(100vh - 80px); max-height: 100%; min-height: 360px; display: flex; flex-direction: column; margin-bottom: 0; }
  .card-side-box .talk-head-row, .card-side-box .hint-line, .card-side-box .card-composer, .card-side-box > .actions { flex: 0 0 auto; }
  .card-side-box .talk-stream.flat { flex: 1 1 auto; min-height: 0; max-height: none; overflow-y: auto; }
  .card-side-box [data-act="放大对话"] { display: none; }
  .card-side-box .bubble { max-width: 96%; }
}
/* 企业库：沿用清单页的一行一家，但只保留企业资料字段 */
.lib-page { max-width: 1680px; }
.lib-block { min-width: 0; }
.lib-title-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.lib-title-row h1 { display: inline; margin: 0; font-size: clamp(22px, 2vw, 28px); line-height: 1.3; color: #18181b; }
.lib-updated { margin-left: 8px; color: #8a8a90; font-size: 13px; }
.lib-stats { margin: 7px 0 18px; color: #8a8a90; font-size: 13px; line-height: 1.5; }
.lib-stats span { cursor: help; }
.lib-search-row { display: flex; gap: 8px; margin-bottom: 16px; }
.lib-search-row input { flex: 1 1 auto; min-width: 0; height: 42px; padding: 0 12px; border: 1px solid #d4d4d9; border-radius: 8px; font: inherit; background: #fff; }
.lib-search-row input:focus { outline: 2px solid #bfdbfe; outline-offset: 1px; border-color: #1d4ed8; }
.lib-search-row .act { min-width: 56px; }
.lib-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.lib-filters { display: grid; gap: 8px; margin-bottom: 16px; }
.lib-filter-row { display: flex; align-items: flex-start; gap: 12px; min-width: 0; }
.lib-filter-label { flex: 0 0 36px; padding-top: 7px; color: #8a8a90; font-size: 13px; }
.lib-filter-options { display: flex; flex: 1 1 auto; flex-wrap: wrap; gap: 6px; min-width: 0; }
.lib-filter-options .act { min-height: 30px; padding: 3px 9px; font-size: 13px; }
.lib-filter-options small { color: #8a8a90; font-size: 12px; }
.tier-tag { margin-right: 4px; font-weight: 600; }
.tag.tier-tag { font-weight: 400; margin-left: 5px; margin-right: 0; padding: 2px 9px; font-size: 10px; vertical-align: 1px; }
.lib-sub-num { display: block; margin-top: 1px; color: #8a8a90; font-size: 11px; white-space: nowrap; }
.lib-metrics { color: #6b6b72; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lib-metrics small { color: #8a8a90; font-size: 11px; }
.lib-metrics i { margin: 0 5px; color: #c4c4cc; font-style: normal; }
/* 名单企业：只出现在地方后备库名单上、还没有工商资料的占位行（只有管理员看得到） */
.tag.ind-guess-tag { margin-left: 4px; border-color: #d4d4d8; background: #f4f4f5; color: #71717a; font-size: 10px; vertical-align: 1px; }
.tag.list-only-tag { margin-left: 5px; border-color: #fcd34d; background: #fef3c7; color: #92400e; font-size: 10px; vertical-align: 1px; }
.list-source { margin: 6px 0 0; color: #5b6472; font-size: 13px; }
.list-source p { margin: 2px 0; }
.list-source a { color: #1d4ed8; }
.list-source small { display: block; margin-top: 4px; color: #8a8a90; font-size: 12px; }
.ipo-reserve { margin: 16px 0; }
.ipo-reserve h2 { margin: 0 0 8px; font-size: 15px; }
.ipo-reserve-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid #eceff3; font-size: 14px; }
.ipo-reserve-item span { min-width: 0; }
.tier-tag.tier-后备 { background: #f1f5f9; color: #475569; }
.tier-tag.tier-挂牌 { background: #ccfbf1; color: #115e59; }
.tier-tag.tier-辅导 { background: #cffafe; color: #0e7490; }
.tier-tag.tier-在审 { background: #dbeafe; color: #1d4ed8; }
.tier-tag.tier-已上市 { background: #dcfce7; color: #15803d; }
.tier-tag.tier-曾申报 { background: #f3f4f6; color: #71717a; }
.tier-tag.tier-已退市 { background: #e4e4e7; color: #3f3f46; }
.tier-line { margin: 4px 0 0; color: #3f3f46; font-size: 14px; }
.tier-line strong { font-weight: 600; }
.lib-head { position: sticky; top: 0; z-index: 2; background: #fff; }
.lib-row { --lib-cols: minmax(360px, 460px) minmax(150px, 1.2fr) minmax(100px, 0.8fr) minmax(80px, 1fr) minmax(110px, 1.2fr); display: grid; grid-template-columns: var(--lib-cols); gap: 0 8px; align-items: center; width: 100%; min-width: 0; box-sizing: border-box; }
.lib-head-row { position: relative; padding: 3px 8px 7px; border-bottom: 1px solid #e2e2e8; color: #8a8a90; font-size: 12.5px; }
.lib-head-row .act { min-height: 24px; justify-self: start; padding: 0 6px; border-color: transparent; background: transparent; color: #8a8a90; font-size: 12.5px; font-weight: 500; white-space: nowrap; }
.lib-head-row .act-primary { color: #1d4ed8; background: #eef2ff; }
.lib-head-co { display: flex; align-items: center; gap: 8px; }
.lib-founded-sort { position: static; }
.lib-company-row { padding: 8px; border: 0; border-bottom: 1px solid #eeeef1; border-radius: 0; text-decoration: none; color: inherit; text-align: left; font-size: 13.5px; line-height: 1.45; }
.lib-company-row:hover { background: #f7f8fc; }
.lib-company-row:focus-visible { position: relative; z-index: 1; outline: 2px solid #93c5fd; outline-offset: -2px; }
.lib-company-row > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lib-co { display: flex; flex-direction: column; }
.lib-name { color: #232323; font-size: 14px; font-weight: 600; }
.lib-name, .lib-sub, .lib-reason { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lib-sub, .lib-reason { color: #8a8a90; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lib-reason { color: #15803d; }
.lib-reason i { display: inline-block; width: 6px; height: 6px; margin: 0 6px 1px 0; border-radius: 50%; background: #15803d; }
.lib-phone { color: #3f3f46; }
.lib-no-phone { color: #a1a1aa; }
.lib-material { display: flex; align-items: center; gap: 6px; overflow: visible !important; }
.lib-pill, .lib-detail { display: inline-block; padding: 2px 7px; border-radius: 999px; background: #eef2ff; color: #1d4ed8; font-size: 12px; line-height: 1.3; white-space: nowrap; }
.lib-pill.full { background: #1d4ed8; color: #fff; }
.lib-pill.low { background: #f1f1f5; color: #6b6b72; }
.lib-detail { padding: 2px 6px; background: #eff6ff; color: #1d4ed8; }
.lib-upgrade { color: #1d4ed8; text-decoration: none; }
.lib-upgrade:hover { text-decoration: underline; }
.lib-block > .lib-foot { margin-top: 12px; }
/* 管理员删除：每行末尾多一列放小「删除」；下面是已删除名单 */
.lib-row.lib-role-admin { --lib-cols: minmax(360px, 460px) repeat(5, minmax(110px, 150px)) minmax(80px, 1fr) minmax(110px, 1.5fr); }
.lib-row.lib-has-op { grid-template-columns: var(--lib-cols) 44px; }
.lib-op { text-align: right; overflow: visible !important; }
.lib-company-row.lib-removing { opacity: .45; pointer-events: none; }
.lib-del { padding: 2px 6px; border-radius: 4px; color: #a1a1aa; font-size: 12px; font-weight: 400; cursor: pointer; }
.lib-row:hover .lib-del, .lib-del:focus-visible { color: #b91c1c; background: #fef2f2; }
.lib-del:hover { color: #b91c1c; background: #fee2e2; }
.lib-deleted { margin-top: 12px; padding: 14px 16px; border: 1px solid #e5e7eb; border-radius: 8px; background: #fafafa; }
.lib-deleted h3 { margin: 0 0 4px; font-size: 15px; }
.lib-deleted-hint { margin: 0 0 10px; color: #6b7280; font-size: 13px; }
.lib-deleted-row { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 14px; padding: 8px 0; border-top: 1px solid #ececf0; }
.lib-deleted-name { flex: 1 1 260px; min-width: 0; font-weight: 600; }
.lib-deleted-name small { margin-left: 8px; color: #8a8a90; font-weight: 400; }
.lib-deleted-meta { color: #6b7280; font-size: 12.5px; }
@media (max-width: 899px) {
  .lib-page { padding-left: 16px; padding-right: 16px; }
  /* 窄屏：表头只留排序按钮；一家一块，企业名占一整行，其余几项跟在下面折行 */
  .lib-head-row { display: flex; justify-content: flex-end; gap: 6px; }
  .lib-head-row > span:not(.lib-head-co) { display: none; }
  .lib-head-row { justify-content: space-between; }
  .lib-company-row { display: flex; flex-wrap: wrap; gap: 3px 12px; }
  .lib-company-row > .lib-co { flex: 0 0 100%; }
  .lib-company-row > span:not(.lib-co) { font-size: 12.5px; color: #6b6b72; }
}
@media (max-width: 560px) {
  .lib-title-row { align-items: flex-start; }
  .lib-title-row h1 { display: block; }
  .lib-updated { display: block; margin: 2px 0 0; }
  .lib-filter-row { gap: 8px; }
  .lib-filter-label { flex-basis: 30px; }
  .lib-company-row { gap: 0 8px; }
}

/* 右栏高度只跟着左栏走：aside 自己不撑行高（height:0 + min-height:100%），盒子取「左栏高」和「一屏高」里小的那个。
   左栏短 → 两栏底边齐；左栏长 → 盒子一屏高、粘着滚，到底时又和左栏底边齐（2026-09-24 实测 1034/1034、1444/1444） */
@media (min-width: 1200px) {
  .card-side { height: 0; min-height: 100%; }
  .card-side-box { height: min(100%, calc(100vh - 80px)); }
}
/* 存为经验框里：这一轮 AI 已经记下的几条先列出来，一键确认 */
.exp-lines { margin: 0 0 10px; padding: 0 0 10px; border-bottom: 1px dashed #bbf7d0; }
.exp-lines p { margin: 0 0 4px; font-size: 13px; color: #166534; font-weight: 600; }
.exp-lines ol { margin: 0; padding-left: 20px; font-size: 13.5px; color: #27272a; line-height: 1.6; }
.exp-lines li { margin-bottom: 2px; }
.exp-lines .actions { margin-top: 8px; }
/* 我方能力页里的清单行：名字和数字一块可点，「改名」排在同一行右边 */
.list-slot { display: flex; align-items: center; gap: 8px; }
.list-slot > .lead { flex: 1 1 auto; min-width: 0; margin-bottom: 0; }
.list-slot > .act-link { flex: 0 0 auto; }
.list-slot.editing .rename-row { flex: 1 1 auto; }

/* ── 会员页 ── */
.plan-head h1 { margin: 0 0 4px; font-size: 22px; }
.plan-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-bottom: 16px; }
.plan-card { position: relative; display: flex; flex-direction: column; margin-bottom: 0; }
.plan-card.now { border-color: #94a3d4; background: #f7f9ff; }
.plan-card.marked { border-color: #1d4ed8; box-shadow: 0 4px 16px rgba(29, 78, 216, .12); }
.plan-card h2 { margin: 0 0 6px; font-size: 17px; }
.plan-mark { position: absolute; top: 14px; right: 14px; padding: 2px 8px; border-radius: 999px; background: #1d4ed8; color: #fff; font-size: 12px; font-weight: 600; }
.plan-price { margin: 0; color: #1d4ed8; font-size: 20px; font-weight: 700; line-height: 1.4; }
.plan-line { margin: 6px 0 10px; color: #52525b; font-size: 14px; }
.plan-points { flex: 1; margin: 0 0 14px; padding-left: 18px; color: #3f3f46; font-size: 14px; line-height: 1.8; }
.plan-act .act { width: 100%; }
.plan-notes { margin: 0; padding-left: 18px; color: #6b6b72; font-size: 13px; line-height: 1.8; }
.topbar .plan-tag { margin-left: 2px; background: #eef2ff; color: #1d4ed8; }
@media (max-width: 1100px) { .plan-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 720px) { .plan-grid { grid-template-columns: minmax(0, 1fr); } }

/* ── 帮助页 ── */
.help-doc { max-width: 980px; line-height: 1.8; font-size: 15px; }
.help-doc h2 { margin: 20px 0 8px; font-size: 20px; }
.help-doc h3 { margin: 20px 0 8px; padding-bottom: 6px; border-bottom: 1px solid #ececf1; font-size: 17px; }
.help-doc h4 { margin: 14px 0 6px; font-size: 15px; }
.help-doc p { margin: 6px 0; color: #3f3f46; }
.help-table { overflow-x: auto; margin: 10px 0; }
.help-doc table { border-collapse: collapse; width: 100%; font-size: 13.5px; }
.help-doc th, .help-doc td { padding: 6px 10px; border: 1px solid #e6e6ea; text-align: left; white-space: nowrap; }
.help-doc th { background: #f6f6f9; font-weight: 600; }

/* ── 数据同步页 ── */
.sync-stats { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin: 10px 0; }
.sync-stat { padding: 12px 14px; border-radius: 10px; background: #f6f6f9; }
.sync-stat b { display: block; color: #1d4ed8; font-size: 22px; font-variant-numeric: tabular-nums; }
.sync-stat span { color: #6b6b72; font-size: 13px; }
.sync-state { margin: 6px 0 0; font-size: 14px; color: #3f3f46; }
.ipo-delist-info { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 6px; font-size: 13px; color: #7f1d1d; }
.ipo-delist-track { margin-top: 4px; font-size: 12px; color: #6b6b72; }
.sync-table { width: 100%; border-collapse: collapse; font-size: 13px; margin: 6px 0 12px; }
.sync-table th, .sync-table td { text-align: left; padding: 6px 8px; border-bottom: 1px solid #ececf1; vertical-align: top; }
.sync-table th { color: #6b6b72; font-weight: 500; }
.sync-table tr.sync-warn td { color: #b91c1c; background: #fef2f2; }
.sync-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.sync-list { margin: 0; padding: 0; list-style: none; font-size: 14px; }
.sync-list li { padding: 6px 0; border-top: 1px solid #f1f1f4; color: #3f3f46; }
.sync-list li:first-child { border-top: 0; }
.sync-list b { margin-right: 8px; font-weight: 600; }
.sync-list .when { margin-right: 8px; color: #a1a1aa; font-size: 12.5px; }
@media (max-width: 900px) { .sync-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } .sync-grid { grid-template-columns: minmax(0, 1fr); } }
.sync-upload { display: grid; grid-template-columns: 1.4fr 1fr 1.6fr 1.6fr auto; gap: 12px; align-items: end; padding: 12px; border: 1px dashed #c7d2fe; border-radius: 10px; background: #fafbff; }
.sync-upload.drag { border-color: #1d4ed8; background: #eef2ff; }
.sync-upload .field { margin-top: 0; }
.sync-upload .field input[type=file] { padding: 8px; min-height: 44px; }
.sync-result { margin: 8px 0 0; color: #3f3f46; font-size: 14px; }
.sync-result:empty { display: none; }
@media (max-width: 1100px) { .sync-upload { grid-template-columns: minmax(0, 1fr); } }

/* 「今天先打这 3 家」：三张卡并排在窄屏上挤成一字一行（2026-09-25 460 宽实测），760 以下改竖排 */
@media (max-width: 760px) { .first-three-grid { grid-template-columns: 1fr; } }
.first-three-note { margin: -4px 0 9px; font-size: 12.5px; color: #6b7280; }
/* 名单前三行：只换浅蓝底色表示先打这几家，别的都跟普通行一样（用户 2026-09-25：标签和话术不用摆在外面） */
.lead-row.first { background: #f3f6ff; box-shadow: inset 3px 0 0 #1d4ed8; }
.lead-row.first:hover { background: #eaf0ff; }
/* 号码评级小字：好打绿、要转接灰、可能不对橙（进库时体检得出，鼠标放上去看原因） */
.phone-grade { margin-left: 6px; padding: 0 5px; border-radius: 999px; font-size: 11px; background: #f1f1f5; color: #6b6b72; }
.phone-grade.g-好打 { background: #dcfce7; color: #166534; }
.phone-grade.g-可能不对 { background: #ffedd5; color: #9a3412; }
/* 企业卡顶部回清单：主色按钮，一眼看得见 */
.back-row .back-to-list { font-size: 14px; }

/* ── 打电话页（2026-09-25）：号码最显眼，操作智商 60 ── */
.call-page { max-width: 1240px; }
.call-head h1 { margin: 0 0 4px; font-size: 24px; }
.call-sum { margin: 0 0 8px; color: #52525b; font-size: 14px; }
.call-sum b { color: #1d4ed8; }
.call-bar { height: 6px; border-radius: 999px; background: #eef0f5; overflow: hidden; margin-bottom: 14px; }
.call-bar span { display: block; height: 100%; background: #1d4ed8; border-radius: 999px; transition: width .3s; }
.call-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.call-row { border-bottom: 1px solid #eeeef1; padding: 10px 8px; }
.call-row.open { background: #f6f8ff; border-radius: 10px; border-bottom-color: transparent; box-shadow: inset 3px 0 0 #1d4ed8; }
.call-row.done .call-name { color: #71717a; }
.call-main { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto; gap: 8px 16px; align-items: center; }
.call-co { min-width: 0; }
.call-co small { display: block; color: #8a8a90; font-size: 12px; margin-top: 2px; }
.call-name { font-weight: 600; font-size: 15px; color: #232323; text-decoration: none; border: 0; background: none; padding: 0; min-height: 0; }
.call-name:hover { text-decoration: underline; }
.call-back { margin-right: 6px; background: #fef3c7; color: #92400e; }
.call-phone { font-size: 20px; font-weight: 700; letter-spacing: .5px; color: #1d4ed8; font-variant-numeric: tabular-nums; }
.call-ptype, .call-more { margin-left: 8px; font-size: 12px; color: #6b7280; }
.call-nophone { color: #a1a1aa; }
.call-act { display: flex; align-items: center; gap: 8px; justify-content: flex-end; }
.call-done { color: #15803d; font-weight: 600; font-size: 13px; }
.call-done.muted { color: #8a8a90; font-weight: 500; }
.call-due { font-size: 13px; color: #52525b; }
.call-due.late { color: #b91c1c; font-weight: 600; }
.call-panel { margin-top: 10px; padding-top: 10px; border-top: 1px dashed #c7d2fe; display: grid; gap: 8px; }
.call-say { font-size: 13px; color: #475569; display: grid; gap: 4px; }
.call-say b { color: #1e3a8a; margin-right: 6px; }
.call-say p { margin: 0; }
.call-line { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.call-lab { flex: 0 0 64px; color: #6b7280; font-size: 13px; }
.call-sub { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-left: 6px; font-size: 13px; color: #6b7280; }
.call-line input { height: 34px; padding: 0 10px; border: 1px solid #d4d4d9; border-radius: 8px; font: inherit; }
.call-note { flex: 1 1 260px; min-width: 0; }
.call-flash { margin-top: 8px; padding: 8px 10px; border-radius: 8px; background: #ecfdf5; color: #166534; font-size: 13px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.call-flash .learned { color: #14532d; }
.call-flash .act { margin-left: auto; font-size: 15px; }
@media (max-width: 760px) {
  .call-main { grid-template-columns: minmax(0, 1fr); }
  .call-act { justify-content: flex-start; }
  .call-lab { flex-basis: 100%; }
}
/* 找客户名单上的打过没打过：跟踪蓝、该打了红、放弃灰；没打过不标 */
.call-mark { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 999px; font-size: 11.5px; font-weight: 500; vertical-align: 1px; }
.call-mark.following { background: #eef2ff; color: #1d4ed8; }
.call-mark.late { background: #fee2e2; color: #b91c1c; }
.call-mark.paused { background: #f1f1f5; color: #6b6b72; }

/* 各家经验（admin）：左边各家用户，右边这家的经验 */
.admin-page { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 16px; align-items: start; max-width: 1400px; }
/* 右边内容往下滚时，左边的栏目菜单跟着停在视线里（顶栏吸顶约 47px，所以留出 64px）；菜单自己太长就在里面滚 */
.admin-side { position: sticky; top: 64px; max-height: calc(100vh - 80px); overflow-y: auto; overscroll-behavior: contain; }
.admin-side h2, .admin-main h2 { margin-top: 0; }
/* 侧栏分块：标题小一号、块与块之间留出空隙，一眼分得清「管理员专属」「各家用户」 */
.admin-side h2 { margin: 22px 0 10px; padding-bottom: 6px; font-size: 14px; letter-spacing: .02em; color: #4b5563; border-bottom: 1px solid #ececf1; }
.admin-side h2:first-child { margin-top: 0; }
.admin-tenant { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 3px; width: 100%; min-height: 56px; margin-bottom: 8px; padding: 9px 14px; text-align: left; line-height: 1.35; border-left: 3px solid transparent; }
.admin-tenant b { font-size: 15px; font-weight: 600; }
.admin-tenant small { font-size: 12px; font-weight: 400; opacity: .85; white-space: normal; }
/* 选中：浅蓝底 + 左侧蓝条，不用整块实心蓝（实心蓝同时出现两块会像选了两个） */
.admin-tenant.act-primary { background: #eef2ff; border-color: #c7d2fe; border-left-color: #1d4ed8; color: #1d4ed8; }
.admin-tenant.act-primary:hover { background: #e3e9ff; border-color: #c7d2fe; border-left-color: #1d4ed8; }
.admin-tenant.act-quiet { background: #f6f6f9; }
.admin-tenant.act-quiet:hover { background: #eef2ff; }
/* 管理员专属那一项：虚线框 + 琥珀色左条，和各家用户区分开 */
.admin-tenant.admin-only { background: #fffbeb; border: 1px dashed #f3d28a; border-left: 3px solid #d97706; color: #7c4a03; }
.admin-tenant.admin-only:hover { background: #fef3c7; }
.admin-tenant.admin-only.act-primary { background: #fef3c7; border: 1px solid #f3c36b; border-left: 3px solid #d97706; color: #7c4a03; }
.admin-filters { display: grid; gap: 6px; margin: 8px 0 12px; }
.admin-exp { padding: 10px 4px; border-bottom: 1px solid #eeeef1; }
.admin-exp[draggable="true"] { cursor: grab; }
.admin-exp.dragging { opacity: .45; }
/* 「新建栏目」：和上面的栏目卡片同宽的虚线「添加」卡片，平时淡，悬停时染上栏目卡片的琥珀色 */
.act.cat-add { width: 100%; min-height: 46px; margin: 0 0 8px; padding: 0 14px; background: transparent; border: 1.5px dashed #cfcfd8; border-radius: 8px; color: #6b7280; font-size: 14px; font-weight: 500; gap: 8px; }
.act.cat-add:hover { background: #fffbeb; border-color: #d9a23a; color: #7c4a03; }
.act.cat-add .cat-add-plus { font-size: 20px; line-height: 1; font-weight: 400; margin-top: -2px; }
.admin-tenant.drop-ok, .drop-ok .admin-tenant { outline: 2px dashed #0f6b56; outline-offset: 2px; background: #eef5f2; }
/* 「移到…」下拉：长得和旁边的轻按钮一样（同高、同底色、同圆角），只多一个小箭头 */
.move-select { width: 104px; appearance: none; -webkit-appearance: none; min-height: 32px; padding: 0 30px 0 12px; border: 1px solid transparent; border-radius: 8px; background: #f1f1f5 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%234b5563' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 11px center / 10px 6px; color: #4b5563; font-family: inherit; font-size: 15px; font-weight: 400; cursor: pointer; transition: background-color .12s, color .12s; }
.move-select:hover { background-color: #eef2ff; color: #1d4ed8; }
.move-select:focus-visible { outline: 2px solid #1d4ed8; outline-offset: 2px; }
/* 页面内确认窗口与固定提示条（经验管理）：取代浏览器自带的 confirm，结果提示不再藏在长列表的最上面 */
.ask-mask { position: fixed; inset: 0; z-index: 2000; display: flex; align-items: center; justify-content: center; padding: 20px; background: rgba(24,24,27,.38); }
.ask-box { width: min(440px, 100%); padding: 20px 22px 16px; background: #fff; border-radius: 12px; box-shadow: 0 12px 40px rgba(0,0,0,.22); }
.ask-box h3 { margin: 0 0 8px; font-size: 16px; line-height: 1.5; color: #18181b; }
.ask-box p { margin: 0 0 14px; font-size: 14px; line-height: 1.7; color: #52525b; }
.ask-btns { display: flex; justify-content: flex-end; gap: 10px; margin-top: 6px; }
.toast { position: fixed; z-index: 2100; top: 64px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 12px; max-width: min(640px, calc(100vw - 32px)); padding: 10px 16px; border-radius: 10px; font-size: 14px; line-height: 1.6; box-shadow: 0 6px 24px rgba(0,0,0,.2); transition: opacity .2s; }
.toast-ok { background: #14532d; color: #fff; }
.toast-bad { background: #7f1d1d; color: #fff; }
.toast-off { opacity: 0; pointer-events: none; }
.toast .act { flex: none; min-height: 28px; background: rgba(255,255,255,.18); color: #fff; }
.toast .act:hover { background: rgba(255,255,255,.3); color: #fff; }
.admin-cat-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 0 0 14px; }
.admin-cat-head .cat-behavior { padding: 4px 10px; border-radius: 999px; background: #fff7e0; border: 1px solid #f3d28a; color: #7c4a03; font-size: 13px; cursor: help; }
.admin-cat-head .cat-desc { color: #6b7280; font-size: 13px; flex: 1 1 200px; }
.admin-cat-head .cat-ops { margin-left: auto; display: inline-flex; gap: 8px; }
.admin-cat-form label.cat-choice { display: block; font-weight: 400; margin: 4px 0; line-height: 1.6; }
.good-line { margin: 6px 0; padding: 8px 12px; background: #eef5f2; color: #0f6b56; border-radius: 8px; font-size: 13px; line-height: 1.6; }
.admin-exp-text { margin: 0 0 6px; font-size: 14px; color: #232323; line-height: 1.6; }
.admin-exp-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 12px; color: #8a8a90; }
.admin-exp-meta .tag.good { background: #dcfce7; color: #166534; }
.admin-exp-said { margin: 6px 0 0; font-size: 12.5px; color: #6b7280; }
@media (max-width: 900px) { .admin-page { grid-template-columns: 1fr; } .admin-side { position: static; max-height: none; overflow: visible; } }

/* ── 新建一套：像大模型网页版的新对话（用户 2026-09-26「参考大模型网页版普遍的对话框方式，新用户刚进来就知道怎么用」）──
   中间一句问候、一个大框、下面几个能直接点的例子；说完第一句才展开成左清单、右对话 */
.talk-top { flex: 0 0 auto; margin-bottom: 10px; }
.result-block > .talk-top { flex: 0 0 auto; }
.talk-top:empty { display: none; }
.talk-top .act { font-weight: 600; color: #1d4ed8; border-color: #c7d2fe; background: #eef2ff; }
.blank-chips { display: none; }
body.blank-mode .result-col { display: none; }
/* 新建一套的白纸页只要问候和大输入框：左栏「我的找客户」不摆（用户 2026-09-29：上面那一坨不需要） */
body.blank-mode .mine-col { display: none !important; }
body.blank-mode .talk-page { grid-template-columns: minmax(0, 1fr); }
body.blank-mode.has-composer { padding-bottom: 0; }
body.blank-mode .composer { position: static; border-top: 0; background: transparent; padding-top: 4px; }
body.blank-mode .composer-inner, body.blank-mode .composer-files, body.blank-mode .composer-state, body.blank-mode .drop-hint { max-width: 760px; }
body.blank-mode .composer-inner textarea { border-radius: 18px; box-shadow: 0 2px 12px rgba(30, 41, 59, .08); }
body.blank-mode .blank-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; max-width: 760px; margin: 14px auto 0; }
body.blank-mode .blank-chips .act { border-radius: 999px; font-size: 13.5px; }
.blank-hero { text-align: center; padding: 12vh 0 14px; }
.blank-hero h1 { margin: 0 0 8px; font-size: 28px; color: #1f2937; }
.blank-hero p { margin: 0; color: #6b6b72; font-size: 15px; line-height: 1.6; }
@media (min-width: 900px) {
  body.blank-mode .talk-col { overflow: visible; }
  body.blank-mode .blank-hero { padding-top: 0; }
}

/* ── 说话的框收进对话栏右下角（用户 2026-09-26：不要这么长，和会话框融为一体，跟企业卡页一致）── */
body.has-composer { padding-bottom: 16px; }
.talk-col .composer {
  position: static; left: auto; right: auto; bottom: auto;
  margin-top: 10px; padding: 8px 10px 10px; border: 1px solid #e2e2e8; border-radius: 14px; background: #fff;
}
.talk-col .composer-inner, .talk-col .composer-files, .talk-col .composer-state, .talk-col .drop-hint { max-width: none; }
.talk-col .composer-inner { gap: 8px; }
.talk-col .composer-inner textarea { min-height: 64px; max-height: 208px; font-size: 15px; line-height: 24px; padding: 8px 10px; border-radius: 10px; }
.talk-col .composer-inner .act-primary { min-height: 44px; padding: 0 18px; }
.composer-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
.composer-chips:empty { display: none; }
.composer-chips .act { min-height: 28px; padding: 0 11px; font-size: 13px; border-radius: 999px; }
/* 每句话底下一行北京时间 */
.bubble-time { display: block; margin-top: 4px; font-size: 11.5px; color: #9ca3af; font-weight: 400; }
.bubble.me .bubble-time { text-align: right; color: #c7d2fe; }
/* 研判那一格的进度：一根条、一行字，原地往上涨 */
.bubble-progress { margin-top: 8px; font-size: 13px; color: #55555f; }
.bubble-progress .bar { height: 6px; border-radius: 3px; background: #e5e7eb; overflow: hidden; margin-bottom: 5px; }
.bubble-progress .bar i { display: block; height: 100%; background: #2563eb; border-radius: 3px; transition: width .4s; }
@media (min-width: 900px) {
  .talk-col { overflow: hidden; }
  .talk-col .talk-stream { flex: 1 1 auto; min-height: 0; overflow-y: auto; margin-top: 0; }
  .talk-col .talk-stream > :first-child { margin-top: auto; }
  .talk-col .composer { flex: 0 0 auto; }
}
/* 新建一套的白纸：框回到屏幕中间，没有边框，只留大框和阴影 */
body.blank-mode .talk-col { justify-content: center; }
body.blank-mode .talk-col .talk-stream { flex: 0 0 auto; }
body.blank-mode .talk-col .composer { width: 100%; max-width: 760px; margin: 0 auto 12vh; border: 0; background: transparent; padding: 4px 0; }
body.blank-mode .talk-col .composer-inner textarea { min-height: 104px; font-size: 16px; border-radius: 18px; padding: 12px 14px; }

/* 平台名「知遇」+ 副标题；用户自己公司名另起一个小入口 */
.brand-sub { margin-left: 8px; font-size: 12.5px; font-weight: 500; color: #6b6b72; letter-spacing: .5px; }
.login-brand .brand-sub { font-size: 13px; }
.topbar .me-name { font-size: 13.5px; color: #3f3f46; min-height: 28px; padding: 0 10px; }

/* ── 找企业 / 找伙伴：名单顶上「我是这样找的」、细类、回话底下的按钮 ── */
.understand { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin: 2px 0 8px; padding: 8px 10px; border-radius: 10px; background: #f8fafc; border: 1px solid #e5e7eb; font-size: 13px; }
.u-lead { color: #374151; font-weight: 600; }
.u-group { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.u-name { color: #6b7280; margin-right: 2px; }
.u-none { color: #9ca3af; }
.understand .u-chip { min-height: 24px; padding: 0 8px; font-size: 12.5px; border-radius: 999px; background: #fff; }
.understand .u-chip b { margin-left: 4px; color: #9ca3af; font-weight: 500; }
.understand .u-chip:hover b { color: #dc2626; }
.sub-kinds { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 8px; }
.sub-kinds .act, .sub-kinds .act-primary { min-height: 26px; padding: 0 10px; font-size: 12.5px; border-radius: 999px; }
.bubble-acts { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.bubble-acts .act { min-height: 30px; padding: 0 12px; font-size: 13px; border-radius: 999px; color: #1d4ed8; border-color: #c7d2fe; background: #eef2ff; }
.lead-prob.size { background: transparent; color: #374151; font-weight: 500; }
.c-ind.phone-好打 { color: #15803d; }
.c-ind.phone-要转接 { color: #b45309; }
.c-ind.phone-可能不对, .c-ind.phone-没号码 { color: #b91c1c; }
.lead-row.locked { opacity: .72; }
.lead-row.locked .c-name::after { content: '🔒'; margin-left: 4px; font-size: 11px; }
.c-ind.locked { color: #6b7280; font-size: 12px; }
.list-why-line.quota { flex: 1 0 100%; color: #92400e; }
.bubble-acts .fill-chip { color: #374151; border-color: #d1d5db; background: #fff; }
/* 选中只变颜色和边框，不加字——加个 ✓ 按钮会变宽，把后面的选项挤走，点着点着就点空了 */
.bubble-acts .fill-chip.picked { color: #fff; border-color: #2563eb; background: #2563eb; }
.bubble-acts .acts-label { flex: 1 0 100%; margin: 6px 0 0; font-size: 12.5px; color: #6b7280; }
.bubble-acts .acts-label:first-child { margin-top: 0; }
.update-bar { position: sticky; top: 0; z-index: 50; display: flex; align-items: center; justify-content: center; gap: 12px; padding: 8px 16px; background: #fef3c7; color: #92400e; font-size: 14px; border-bottom: 1px solid #fde68a; }
.update-bar .act { min-height: 30px; padding: 0 14px; }

/* 打电话：今天按哪项能力、哪份清单打 */
.call-which { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 2px 0 6px; font-size: 14px; color: #374151; }
.call-which .act { min-height: 26px; padding: 0 10px; font-size: 12.5px; }
.call-which-opts { flex: 1 0 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.call-which-opts small { color: #6b7280; }

/* 一行摆几个短输入框（能力项的单价、周期） */
.field-row { display: flex; gap: 12px; flex-wrap: wrap; }
.field-row .field { flex: 1 1 140px; min-width: 0; }

/* 企业卡上的「打完记一下」：和打电话页同一个面板，上面一行写现在在哪一组，下面列打过的几通 */
.call-card-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; }
.call-card-head h3 { margin: 0; font-size: 15px; }
.call-card-now { color: #3f3f46; font-size: 14px; }
.call-card-head .act-link { margin-left: auto; }
.call-card .call-panel { border-top: none; padding-top: 4px; }
.call-history { margin-top: 12px; }
.call-history h4 { margin: 0 0 6px; font-size: 13px; color: #71717a; font-weight: 500; }

/* 要确认的删除：红色，和普通主按钮分开 */
.act.danger { background: #dc2626; border-color: #dc2626; color: #fff; }
.act.danger:hover { background: #b91c1c; border-color: #b91c1c; }

/* 名单上的概率：胶囊只放百分数、每行一样大；「资料不足」放胶囊下面一行小字，没有也留着这一行，行高才齐（用户 2026-09-27） */
.lead-row .prob-cell { display: inline-flex; flex-direction: column; align-items: center; justify-self: end; gap: 2px; }
.lead-row .prob-cell .lead-prob { min-width: 56px; line-height: 20px; padding: 1px 8px; }
.lead-row .prob-cell .thin-data { display: block; min-height: 13px; font-size: 11px; line-height: 13px; font-weight: 400; color: #8a8f98; }

/* 名单：没逐家研判过的理由前面标「未研判」，字色浅一档 */
.lead-reason.templ { color: #71717a; }
.lead-reason .not-judged { display: inline-block; margin-right: 6px; padding: 0 5px; border-radius: 4px; background: #f4f4f5; color: #71717a; font-size: 11px; line-height: 18px; vertical-align: 1px; }
.tag.saved-tag { background: #ecfdf5; color: #166534; }

/* 数据需求栏目 */
.need .need-name { margin: 0; font-size: 17px; }
.need .need-facts p { margin: 4px 0; font-size: 14px; color: #3f3f46; }
.need .need-facts b { color: #18181b; font-weight: 600; margin-right: 4px; }
.need-src { margin-top: 8px; font-size: 13px; }
.need-src summary { cursor: pointer; color: #1d4ed8; }

/* 企业卡：不对口时说清为什么不研判 */
.not-target { background: #fffbeb; color: #92400e; border-radius: 8px; padding: 8px 10px; }

/* 顶栏积分余额：和档位标签一样大小，能点（2026-09-28） */
.topbar .credit-tag { display: inline-flex; align-items: center; padding: 2px 10px; margin-left: 6px; border-radius: 999px; font-size: 12px; font-weight: 600; background: #fff7e6; color: #b45309; border: 1px solid #fde7c2; text-decoration: none; white-space: nowrap; }
.topbar .credit-tag:hover, .topbar .credit-tag.on { background: #fdecc8; }

/* 换一份清单里的草稿（2026-09-28）：一行一条，名字在左，删掉在右 */
.draft-head { margin: 12px 0 4px; }
.draft-list { display: flex; flex-direction: column; gap: 6px; }
.draft-row { display: flex; align-items: center; gap: 8px; flex-wrap: nowrap; }
/* 草稿一条：第一句一行、条件和时间一行小字，不套按钮的横排居中（原来挤成一团，删掉掉到下一行） */
.draft-row > a.act { flex: 1 1 auto; min-width: 0; display: block; min-height: 0; text-align: left; white-space: normal; padding: 8px 11px; font-size: 14px; font-weight: 500; line-height: 1.45; }
.draft-row > a.act small { display: block; margin-top: 2px; font-size: 12px; font-weight: 400; color: #6b7280; }
.draft-row > .act:not(a) { flex: 0 0 auto; }
.draft-row > a.act.act-primary small { color: #dbe4ff; }

/* 名单栏第二层：子 AI 写的一句话理解「为什么是这些企业」（2026-09-29）；下面一行小字是找到几家、什么时候 */
.list-understand { margin: 6px 2px 4px; font-size: 14.5px; line-height: 1.7; color: #1f2937; }
.list-why-line .act-link { font-size: 13px; }

/* 「我是这样找的」后面的「＋ 加一项」（2026-09-29）：选一组、写个值，按一句话交给 AI 加 */
.understand .act.u-add { min-height: 26px; padding: 0 10px; font-size: 12.5px; border-style: dashed; color: #1d4ed8; }
.u-add-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 8px 0 4px; }
.u-add-row .act { min-height: 30px; padding: 0 10px; font-size: 13px; }
.u-add-row input { flex: 1 1 180px; min-height: 30px; padding: 0 10px; border: 1px solid #d4d4da; border-radius: 8px; font: inherit; font-size: 13px; }

/* 我方能力：分清「能力」和「清单」，清单能拖到别的能力下（2026-09-29） */
.tag.cap-kind { background: #1d4ed8; color: #fff; border-color: #1d4ed8; margin-right: 8px; }
.tag.list-kind { background: #eef2ff; color: #1d4ed8; border-color: #c7d2fe; margin-right: 6px; flex: 0 0 auto; }
.cap-legend .tag { margin: 0 4px 0 0; }
.cap-legend .tag.list-kind { margin-left: 2px; }
.cap-row .cap-name { font-size: 15px; color: #232323; }
.cap-row .cap-count { margin-left: 12px; color: #6b6b72; font-size: 13px; }
.cap-lists { padding: 6px 12px 8px 12px; }
.list-slot { border-radius: 8px; }
.list-slot .drag-grip { flex: 0 0 auto; cursor: grab; color: #a1a1aa; font-size: 14px; letter-spacing: -2px; padding: 0 2px; user-select: none; }
.list-slot.dragging { opacity: .45; }
.drag-on [data-drop-cap] { outline: 2px dashed #c7d2fe; outline-offset: -2px; }
.drag-on [data-drop-cap].drop-over { outline: 2px solid #1d4ed8; background: #f5f7ff; }
.move-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: -2px 0 10px 22px; }
@media (pointer: coarse) { .list-slot .drag-grip { display: none; } }

/* 企业卡：判断只摆一段；打电话按 1234 往下走（2026-09-29） */
.reason-long { margin: 12px 0 8px; color: #27272a; font-size: 15px; line-height: 1.85; }
.why-prob .prob-formula { margin-top: 12px; }
.why-prob .prob-note { font-size: 12.5px; color: #8a8a90; }
.call-script .script-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; margin-bottom: 14px; }
.call-script .script-head h2 { margin: 0; }
.script-steps { list-style: none; margin: 0; padding: 0; counter-reset: 步; }
.script-step { position: relative; counter-increment: 步; padding: 0 0 20px 40px; }
.script-step::before {
  content: counter(步); position: absolute; left: 0; top: 0; width: 26px; height: 26px; border-radius: 50%;
  background: #1d4ed8; color: #fff; font-size: 14px; font-weight: 700; line-height: 26px; text-align: center;
}
.script-step:not(:last-child)::after { content: ''; position: absolute; left: 12px; top: 30px; bottom: 4px; width: 2px; background: #e0e7ff; }
.step-title { display: flex; align-items: center; gap: 8px; min-height: 26px; color: #232323; font-size: 15px; font-weight: 600; }
.tag.script-tag { background: #fff7ed; color: #c2410c; border-color: #fed7aa; font-weight: 600; }
.say-line { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-top: 8px; padding: 12px 14px; background: #f5f7ff; border: 1px solid #e0e7ff; border-radius: 10px; }
.say-line p { margin: 0; min-width: 0; color: #1e293b; font-size: 16px; line-height: 1.75; }
.say-line .act { flex: 0 0 auto; }
.ask-items { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 6px; }
.ask-items li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; padding: 8px 12px; background: #fafafb; border: 1px solid #ececf1; border-radius: 8px; }
.ask-items .ask-q { color: #232323; font-size: 15px; }
.ask-items .ask-plus { color: #15803d; font-size: 12.5px; font-weight: 600; white-space: nowrap; }
.ask-items .ask-why { flex: 1 1 100%; color: #8a8a90; font-size: 12.5px; }
.step-log .why-contact { margin-top: 8px; }
.step-log .call-card { padding-top: 0; }
@media (max-width: 720px) { .script-step { padding-left: 34px; } .say-line p { font-size: 15px; } }
.step-log .contact-row { display: block; }
.step-log .call-card-head { margin-bottom: 6px; }
/* 管理员视图：没采到的字段也占一格，灰掉 */
.profile-item.is-empty dt { color: #a1a1aa; }
.profile-item.is-empty dd { color: #c4c4cc; font-style: italic; }
/* 管理员看企业卡：只看资料，不要右边的对话栏 */
.card-page.admin-view { grid-template-columns: minmax(0, 1fr); }
.card-page.admin-view .card-side { display: none; }

/* 实时动态 */
.card-realtime .section-heading { align-items: center; }
.card-realtime .section-heading h2 { margin: 0; }
.card-realtime .hint-line.bad { color: #b3261e; }
.rt-chips { display: flex; gap: 6px; flex-wrap: wrap; margin: 10px 0 4px; }
.rt-chip { padding: 3px 10px; border-radius: 999px; border: 1px solid #dcdce4; background: #fff; font-size: 13px; }
.rt-chip.on { background: #eef1ff; border-color: #8a97f0; color: #2f3fbf; }
.rt-list { list-style: none; margin: 6px 0 0; padding: 0; }
.rt-item { padding: 10px 0; border-top: 1px solid #f0f0f4; }
.rt-item:first-child { border-top: 0; }
.rt-head { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #6b6b72; }
.rt-title { margin: 4px 0 2px; font-weight: 600; }
.rt-sum { color: #4a4a52; font-size: 13px; line-height: 1.55; }
.rt-src { display: inline-block; margin-top: 4px; font-size: 12px; color: #4a5be0; text-decoration: none; }
.rt-src:hover { text-decoration: underline; }

/* 管理员页的「全局经验」 */
.admin-suggest-body { white-space: pre-wrap; line-height: 1.6; }
.admin-suggest-form { display: grid; gap: 6px; }
.admin-suggest-form input, .admin-suggest-form textarea { width: 100%; box-sizing: border-box; font: inherit; padding: 6px 8px; border: 1px solid #dcdce4; border-radius: 6px; }

/* 外部线索（企业卡） */
.rt-summary { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 4px; }
.rt-block { margin-top: 14px; padding-top: 10px; border-top: 1px solid #f0f0f4; }
.rt-block h3 { margin: 0 0 8px; font-size: 14px; color: #4b5563; }
.rt-accounts { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin-bottom: 8px; }
.rt-label { font-size: 12px; color: #6b6b72; }
.rt-account { display: inline-flex; flex-direction: column; padding: 4px 10px; border-radius: 8px; background: #ecfdf5; color: #166534; font-size: 13px; font-weight: 600; line-height: 1.3; }
.rt-account small { font-weight: 400; font-size: 11.5px; opacity: .85; }
.rt-links { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-bottom: 6px; }
.rt-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 4px; flex-wrap: wrap; }
.rt-votes { display: inline-flex; gap: 6px; }
.rt-vote.act { min-height: 26px; padding: 0 10px; font-size: 12.5px; border-radius: 999px; background: #f6f6f9; color: #6b6b72; }
.rt-vote.on-yes { background: #dcfce7; color: #166534; font-weight: 600; }
.rt-vote.on-no { background: #fee2e2; color: #b91c1c; font-weight: 600; }

/* 外部线索 v2：画像、官方渠道行、主题块、折叠 */
.rt-profile { margin: 8px 0 4px; padding: 8px 12px; list-style: none; background: #f6f8ff; border-radius: 8px; font-size: 13.5px; line-height: 1.7; color: #2b3a67; }
.rt-profile li + li { margin-top: 2px; }
.rt-official { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 8px 0 4px; }
.rt-theme { margin-top: 16px; padding-top: 10px; border-top: 1px solid #f0f0f4; }
.rt-theme h3 { margin: 0 0 6px; font-size: 15px; color: #232323; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.rt-theme h3 small { font-size: 12px; font-weight: 400; color: #8a8a90; }
.rt-fold.act { margin: 6px 0 2px; min-height: 28px; font-size: 12.5px; color: #4a5be0; }
.rt-old { opacity: .82; }
.tag.bad { background: #fee2e2; color: #b91c1c; }

/* 企业卡改版（2026-10-01） */
.dossier-card { color: #27272a; }
.dossier-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.dossier-head h2 { margin-bottom: 4px; }
.dossier-head p { margin: 0; color: #6b6b72; font-size: 13px; }
.dossier-tabs { position: relative; display: flex; flex-wrap: wrap; gap: 8px; overflow: visible; padding: 14px 0 12px; margin-top: 4px; border-bottom: 1px solid #ececf1; }
.dossier-source-note { flex: 1 0 100%; color: #64748b; font-size: 12px; }
.dossier-source-divider { flex: 1 0 100%; margin-top: 6px; padding-top: 12px; border-top: 1px dashed #cbd5e1; color: #475569; font-size: 12px; font-weight: 600; }
.dossier-company-missing { margin: 0 0 16px; padding: 9px 11px; border: 1px solid #fde68a; border-radius: 8px; background: #fffbeb; color: #92400e; font-size: 13px; }
.dossier-tab { flex: 0 0 auto; min-height: 34px; padding: 5px 11px; border: 1px solid transparent; border-radius: 999px; background: #f3f4f6; color: #52525b; font-size: 13px; line-height: 1.2; }
.dossier-tab:hover { background: #e9eefc; color: #1d4ed8; }
.dossier-tab.act-primary { background: #1d4ed8; color: #fff; border-color: #1d4ed8; }
.dossier-tab small { margin-left: 3px; font-size: 11px; opacity: .82; font-variant-numeric: tabular-nums; }
.dossier-tab i { display: inline-block; width: 6px; height: 6px; margin-left: 5px; border-radius: 50%; vertical-align: 2px; }
.dossier-hit-dot { background: #f59e0b; }
.dossier-ipo-dot { background: #60a5fa; }
.dossier-content { padding-top: 18px; }
.dossier-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; margin-bottom: 20px; }
.dossier-stat { min-width: 0; padding: 13px 12px 11px; border: 1px solid #e5e7eb; border-radius: 10px; background: #fafbfc; }
.dossier-stat-click { display: block; text-align: left; font: inherit; color: inherit; cursor: pointer; }
.dossier-stat-click:hover, .dossier-stat-click:focus-visible { border-color: #93b4f5; background: #f3f7ff; outline: none; }
.dossier-stat-click::after { content: "点开看明细 ›"; display: block; margin-top: 4px; color: #2f6bd8; font-size: 12px; }
.dossier-stat-value { display: flex; align-items: baseline; gap: 5px; min-width: 0; white-space: nowrap; }
.dossier-stat-value strong { color: #1d4ed8; font-size: 20px; line-height: 1.25; white-space: nowrap; font-variant-numeric: tabular-nums; }
.dossier-stat-value.is-long strong { font-size: clamp(15px, 2vw, 18px); letter-spacing: -.02em; }
.dossier-stat-unit { color: #71717a; font-size: 13px; white-space: nowrap; }
.dossier-stat span { display: block; margin-top: 4px; color: #6b6b72; font-size: 12px; }
.dossier-stat .dossier-stat-unit { display: inline; margin-top: 0; }
.dossier-overview-row { display: flex; align-items: flex-start; gap: 12px; padding: 12px 0; border-top: 1px solid #f0f0f3; }
.dossier-overview-label { flex: 0 0 78px; padding-top: 3px; color: #6b6b72; font-size: 13px; }
.dossier-bools { display: flex; flex-wrap: wrap; gap: 7px; }
.dossier-bool { display: inline-flex; align-items: center; min-height: 25px; padding: 3px 9px; border-radius: 999px; font-size: 12px; line-height: 1.35; }
.dossier-bool-yes { background: #ecfdf3; color: #15803d; }
.dossier-bool-identity { background: #eef2f7; color: #526274; }
.dossier-bool-risk { background: #fef2f2; color: #b91c1c; }
.dossier-muted { margin: 0; color: #8a8a90; font-size: 13px; }
.dossier-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px 28px; margin: 0; }
.dossier-item { min-width: 0; padding: 2px 0; line-height: 1.5; }
.dossier-click { display: block; width: 100%; text-align: left; background: transparent; border: 1px solid transparent; border-radius: 8px; padding: 6px 9px; margin: -4px -9px; cursor: pointer; font: inherit; color: inherit; }
.dossier-click:hover, .dossier-click:focus-visible { background: #f3f4f8; border-color: #d9dbe5; outline: none; }
.dossier-count-name { display: block; color: #6b6b72; font-size: 13px; margin-bottom: 3px; }
.dossier-count-value { font-weight: 600; }
.dossier-count-hint { margin-left: 8px; color: #9a9aa3; font-size: 12px; }
.dossier-count-hint.has { color: #2f6bd8; }
.detail-modal { position: fixed; inset: 0; z-index: 80; display: flex; align-items: center; justify-content: center; }
.detail-mask { position: absolute; inset: 0; background: rgba(20, 22, 30, 0.35); }
.detail-box { position: relative; width: min(920px, calc(100vw - 32px)); max-height: calc(100vh - 64px); overflow: auto; background: #fff; border-radius: 12px; padding: 20px 22px 18px; box-shadow: 0 18px 50px rgba(0, 0, 0, 0.25); }
.detail-box h3 { margin: 0 0 4px; font-size: 17px; }
.detail-sub { margin: 0 0 12px; color: #6b6b72; font-size: 13px; }
.detail-close { position: absolute; top: 14px; right: 16px; }
.detail-scroll { overflow: auto; max-height: 56vh; border: 1px solid #ececf1; border-radius: 8px; }
.detail-foot { margin-top: 12px; color: #4a4a52; font-size: 13px; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.detail-msg { color: #2f6bd8; }

.dossier-item.hit-item { padding: 7px 9px; margin: -5px -9px; background: #fffbeb; border-radius: 8px; }
.dossier-item dt { margin: 0 0 3px; color: #6b6b72; font-size: 13px; }
.dossier-item dd { margin: 0; color: #27272a; font-size: 15px; overflow-wrap: anywhere; }
.dossier-sub { display: block; margin-top: 3px; color: #8a8a90; font-size: 12px; line-height: 1.6; }
.dossier-long { grid-column: 1 / -1; }
.dossier-long .profile-long-value { max-height: 6em; -webkit-line-clamp: 4; }
.dossier-long .profile-long-value.expanded { max-height: none; -webkit-line-clamp: unset; }
.dossier-long .act { min-height: 28px; margin-top: 4px; font-size: 13px; }
.dossier-bools-top { margin-bottom: 16px; }
.dossier-false { margin: 16px 0 0; padding-top: 12px; border-top: 1px solid #f0f0f3; color: #8a8a90; font-size: 12px; line-height: 1.7; }
.dossier-missing { margin-top: 18px; padding-top: 11px; border-top: 1px solid #ececf1; }
.dossier-missing > .act { min-height: 30px; padding: 3px 0; color: #6b6b72; font-size: 12px; }
.dossier-missing p { margin: 6px 0 0; color: #8a8a90; font-size: 12px; line-height: 1.7; }
.dossier-empty-wrap { position: relative; flex: 0 0 auto; }
.dossier-empty-toggle { min-height: 30px; padding: 4px 9px; color: #6b6b72; font-size: 12px; }
.dossier-empty-list { position: absolute; z-index: 3; right: 0; top: calc(100% + 5px); display: flex; flex-direction: column; gap: 3px; min-width: 132px; padding: 6px; border: 1px solid #e5e7eb; border-radius: 10px; background: #fff; box-shadow: 0 8px 24px rgba(16,24,40,.12); }
.dossier-empty-list .act { justify-content: flex-start; min-height: 30px; padding: 4px 8px; text-align: left; font-size: 12px; }
.dossier-ipo-banner { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; padding: 14px 16px; border: 1px solid #bfdbfe; border-radius: 12px; background: #eff6ff; }
.dossier-ipo-banner strong { display: block; margin-top: 3px; color: #1e40af; font-size: 16px; }
.dossier-ipo-kicker { color: #6b6b72; font-size: 12px; }
.dossier-ipo-status { min-height: 25px; margin-left: 8px; padding: 3px 10px; border: 0; border-radius: 999px; font-size: 12px; font-weight: 600; vertical-align: 1px; }
.dossier-ipo-status.review { background: #dbeafe; color: #1d4ed8; }
.dossier-ipo-status.coach { background: #cffafe; color: #0e7490; }
.dossier-ipo-status.listed { background: #dcfce7; color: #15803d; }
.dossier-ipo-status.ended { background: #f3f4f6; color: #71717a; }

.ipo-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding-bottom: 18px; border-bottom: 1px solid #ececf1; }
.ipo-status { font-size: 28px; font-weight: 700; line-height: 1.2; }
.ipo-status.review { color: #1d4ed8; }
.ipo-status.coach { color: #0891b2; }
.ipo-status.listed { color: #15803d; }
.ipo-status.ended { color: #71717a; }
.ipo-head p { margin: 7px 0 0; color: #6b6b72; font-size: 14px; }
.ipo-institutions { display: grid; grid-template-columns: repeat(2, minmax(120px, 1fr)); gap: 8px 18px; min-width: min(360px, 100%); }
.ipo-institutions div { display: grid; grid-template-columns: 5em minmax(0, 1fr); gap: 8px; min-width: 0; align-items: start; }
.ipo-institutions span, .ipo-institutions strong { display: block; }
.ipo-institutions span { color: #6b6b72; font-size: 12px; white-space: nowrap; }
.ipo-institutions strong { color: #27272a; font-size: 13px; overflow-wrap: anywhere; }
.ipo-projects { display: grid; gap: 14px; margin-top: 18px; }
.ipo-project { padding: 16px; border: 1px solid #e5e7eb; border-radius: 12px; background: #fff; box-shadow: 0 1px 2px rgba(16,24,40,.04); }
.ipo-project-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.ipo-project-title { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; min-width: 0; }
.ipo-source { padding: 3px 8px; border-radius: 999px; background: #f3f4f6; color: #52525b; font-size: 12px; }
.ipo-project-title strong { color: #27272a; font-size: 15px; }
.ipo-stage { padding: 3px 8px; border-radius: 999px; font-size: 12px; }
.ipo-stage.active { background: #dbeafe; color: #1d4ed8; }
.ipo-stage.registered { background: #dcfce7; color: #15803d; }
.ipo-stage.paused { background: #fef3c7; color: #a16207; }
.ipo-stage.ended { background: #f3f4f6; color: #71717a; text-decoration: line-through; }
.ipo-official, .ipo-file-link { flex: 0 0 auto; min-height: 28px; font-size: 12px; }
.ipo-steps { display: flex; align-items: flex-start; min-width: 540px; margin: 22px 0 8px; padding: 0 5px; }
.ipo-step { position: relative; display: flex; flex: 1 1 0; flex-direction: column; align-items: center; min-width: 90px; color: #a1a1aa; text-align: center; }
.ipo-step:not(:last-child)::after { position: absolute; z-index: 0; top: 7px; left: calc(50% + 8px); width: calc(100% - 16px); height: 2px; background: #e5e7eb; content: ''; }
.ipo-step.done, .ipo-step.current { color: #1d4ed8; }
.ipo-step.done:not(:last-child)::after { background: #93c5fd; }
.ipo-step.terminal { color: #a1a1aa; }
.ipo-step-dot { position: relative; z-index: 1; width: 14px; height: 14px; margin-bottom: 7px; border: 2px solid currentColor; border-radius: 50%; background: #fff; }
.ipo-step.done .ipo-step-dot { background: currentColor; }
.ipo-step.terminal-done { color: #15803d; }
.ipo-step.terminal-done .ipo-step-dot { display: inline-flex; align-items: center; justify-content: center; border-color: #15803d; background: #15803d; color: #fff; font-size: 10px; font-weight: 700; line-height: 1; }
.ipo-step.done:not(:last-child)::after { background: #93c5fd; }
.ipo-step.terminal-done::before { position: absolute; z-index: 0; top: 7px; right: calc(50% + 8px); width: calc(100% - 16px); height: 2px; background: #86efac; content: ''; }
.ipo-step.current .ipo-step-dot { box-shadow: 0 0 0 5px #dbeafe; }
.ipo-step strong { font-size: 12px; font-weight: 500; }
.ipo-step.current strong { font-weight: 700; }
.ipo-step small { margin-top: 4px; color: #8a8a90; font-size: 11px; font-variant-numeric: tabular-nums; }
.ipo-stop { margin: 0; color: #a16207; font-size: 12px; }
.ipo-project-foot { display: flex; flex-wrap: wrap; gap: 5px 16px; margin-top: 15px; color: #8a8a90; font-size: 12px; line-height: 1.6; }
.ipo-files-wrap { margin-top: 26px; }
.ipo-files-wrap > h2 { margin-bottom: 14px; }
.ipo-files-group + .ipo-files-group { margin-top: 18px; }
.ipo-files-group h3 { margin: 0 0 7px; color: #3f3f46; font-size: 14px; }
.ipo-files { border-top: 1px solid #f0f0f3; }
.ipo-file { display: grid; grid-template-columns: 72px 92px minmax(0, 1fr) auto; align-items: center; gap: 9px; min-width: 0; padding: 9px 0; border-bottom: 1px solid #f0f0f3; }
.ipo-file-version { display: inline-flex; align-items: center; justify-content: center; min-height: 21px; padding: 0 6px; border-radius: 999px; background: #eff6ff; color: #1d4ed8; font-size: 11px; white-space: nowrap; }
.ipo-file-version:empty { min-height: 0; padding: 0; background: transparent; }
.ipo-file time { color: #8a8a90; font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ipo-file-title { min-width: 0; overflow-wrap: anywhere; color: #27272a; font-size: 13px; }
.ipo-file-link-empty { display: block; min-width: 58px; min-height: 28px; }
.ipo-prospectus-points { margin-top: 24px; padding-top: 18px; border-top: 1px solid #ececf1; }
.ipo-prospectus-points h2 { margin-bottom: 8px; }
.ipo-files-group > .act { min-height: 30px; margin-top: 6px; padding-left: 0; color: #1d4ed8; font-size: 12px; }

@media (min-width: 720px) {
  .dossier-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 719px) {
  .dossier-head, .dossier-ipo-banner, .ipo-head, .ipo-project-head { align-items: flex-start; flex-direction: column; }
  .dossier-empty-wrap { align-self: flex-end; margin-top: -36px; }
  .dossier-tabs { flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; padding-right: 34px; white-space: nowrap; scrollbar-width: none; }
  .dossier-tabs::-webkit-scrollbar { display: none; }
  .dossier-tabs::after { position: absolute; z-index: 2; top: 0; right: 0; bottom: 1px; width: 34px; pointer-events: none; background: linear-gradient(90deg, rgba(255,255,255,0), #fff); content: ''; }
  .dossier-overview-row { flex-direction: column; gap: 6px; }
  .dossier-overview-label { flex-basis: auto; }
  .ipo-institutions { width: 100%; min-width: 0; }
  .ipo-steps { overflow-x: auto; width: 100%; padding-bottom: 8px; }
  .ipo-file { grid-template-columns: 72px 92px minmax(0, 1fr) auto; align-items: center; }
}

/* 终止原因与招股书要点：用灰蓝层级承载证据，长内容仍可在小屏横向查看。 */
.lib-termination-reason { display: block; max-width: 34em; overflow: hidden; color: #71717a; font-size: 11px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.profile-value-link { color: #1d4ed8; text-decoration: none; }
.profile-value-link:hover, .profile-value-link:focus-visible { text-decoration: underline; }
.ipo-termination { margin-top: 12px; padding: 12px 14px; border: 1px solid #e4e4e7; border-radius: 10px; background: #fafafa; }
.ipo-termination-main { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.ipo-termination-main strong { color: #3f3f46; font-size: 14px; }
.ipo-termination-type { padding: 3px 8px; border-radius: 999px; background: #e5e7eb; color: #52525b; font-size: 12px; font-weight: 600; }
.ipo-termination-audit { margin: 8px 0 0; color: #71717a; font-size: 12px; line-height: 1.5; }
.ipo-termination-focus, .ipo-termination-evidence { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.ipo-termination-focus span { padding: 3px 7px; border-radius: 999px; background: #eff6ff; color: #1d4ed8; font-size: 11px; }
.ipo-termination-evidence .act { min-height: 26px; padding: 3px 7px; color: #1d4ed8; font-size: 12px; }
.ipo-prospectus-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ipo-prospectus-head h2 { margin: 0; }
.ipo-point-block { margin-top: 16px; padding-top: 13px; border-top: 1px solid #f0f0f3; }
.ipo-point-block h3 { margin: 0 0 8px; color: #52525b; font-size: 14px; }
.ipo-point-block p { margin: 0; color: #3f3f46; font-size: 13px; line-height: 1.65; }
.ipo-finance-scroll { overflow-x: auto; }
.ipo-finance { width: 100%; min-width: 520px; border-collapse: collapse; font-size: 12px; }
.ipo-finance th, .ipo-finance td { padding: 7px 9px; border-bottom: 1px solid #f0f0f3; text-align: right; white-space: nowrap; }
.ipo-finance th:first-child, .ipo-finance td:first-child { text-align: left; }
.ipo-finance th { color: #71717a; font-weight: 500; }
.ipo-block-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ipo-year-switch { display: flex; flex-wrap: wrap; gap: 4px; }
.ipo-year-switch .act { min-height: 26px; padding: 2px 7px; font-size: 11px; }
.ipo-ranking ol { display: grid; gap: 7px; margin: 0; padding-left: 20px; }
.ipo-ranking li { display: grid; grid-template-columns: minmax(90px, 1fr) auto minmax(80px, 1fr) 42px; align-items: center; gap: 8px; min-width: 0; color: #3f3f46; font-size: 12px; }
.ipo-ranking-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ipo-ranking-value, .ipo-ranking small { color: #71717a; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ipo-ranking-bar { display: block; height: 6px; overflow: hidden; border-radius: 999px; background: #eef2f7; }
.ipo-ranking-bar i { display: block; height: 100%; border-radius: inherit; background: #93c5fd; }
.ipo-project-list, .ipo-technology ul, .ipo-pending ul { display: grid; gap: 8px; margin: 0; padding-left: 18px; color: #3f3f46; font-size: 13px; line-height: 1.5; }
.ipo-project-list li { display: flex; flex-wrap: wrap; gap: 5px 14px; }
.ipo-project-list strong { flex-basis: 100%; }
.ipo-project-list span { color: #71717a; font-size: 12px; }
.ipo-product-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.ipo-product-tags span { padding: 4px 8px; border-radius: 999px; background: #f4f4f5; color: #52525b; font-size: 12px; }
.ipo-technology summary { cursor: pointer; color: #52525b; font-size: 14px; font-weight: 600; }
.ipo-technology ul { margin-top: 10px; }
.ipo-pending-toggle { min-height: 30px; padding: 3px 0; color: #a16207; font-size: 12px; }
.ipo-pending ul { margin-top: 7px; color: #71717a; font-size: 12px; }

@media (max-width: 719px) {
  .ipo-ranking li { grid-template-columns: minmax(80px, 1fr) auto 70px 38px; gap: 5px; }
  .ipo-prospectus-head { align-items: flex-start; flex-direction: column; }
}

.ipo-head-summary, .dossier-ipo-summary { white-space: nowrap; }
.ipo-listed-card { border-color: #dbe4ee; background: #fbfdff; }
.ipo-listed-main { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px 18px; padding: 16px 0 4px; }
.ipo-listed-main strong { color: #172033; font-size: 23px; letter-spacing: .02em; }
.ipo-listed-main span { color: #71717a; font-size: 12px; }
.ipo-listed-card.delisted { filter: grayscale(1); opacity: .65; }
.ipo-listed-card.delisted .ipo-listed-main strong { text-decoration: line-through; }
.ipo-name-note { color: #a1a1aa; font-size: 11px; font-weight: 400; }
.ipo-step.terminal-end { color: #dc2626; }
.ipo-step.terminal-end .ipo-step-dot { display: inline-flex; align-items: center; justify-content: center; border-color: #dc2626; background: #dc2626; color: #fff; font-size: 10px; font-weight: 700; line-height: 1; }
.ipo-step.terminal-end::before { position: absolute; z-index: 0; top: 7px; right: calc(50% + 8px); width: calc(100% - 16px); height: 2px; background: #93c5fd; content: ''; }

/* 企业卡官网动态：信息按发布、渠道、公众号和招聘分组，手机上保持单列。 */
.ownsite-card { color: #27272a; }
.ownsite-heading { align-items: flex-start; }
.ownsite-heading h2 { margin-bottom: 4px; }
.ownsite-heading p { margin: 0; color: #6b7280; font-size: 13px; line-height: 1.5; }
.ownsite-loading, .ownsite-empty { margin: 0; color: #6b7280; font-size: 14px; line-height: 1.6; }
.ownsite-empty { padding: 12px 14px; border-radius: 8px; background: #f6f7f9; }
.ownsite-activity { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 14px 0 2px; }
.ownsite-activity > div { padding: 11px 12px; border: 1px solid #e5e7eb; border-radius: 10px; background: #fafbfc; }
.ownsite-activity dt { color: #6b7280; font-size: 12px; }
.ownsite-activity dd { margin: 3px 0 0; color: #172033; font-size: 17px; font-weight: 700; font-variant-numeric: tabular-nums; }
.ownsite-activity small { display: block; margin-top: 2px; color: #6b7280; font-size: 11px; font-weight: 400; }
.ownsite-part { margin-top: 16px; padding-top: 12px; border-top: 1px solid #ececf1; }
.ownsite-part h3 { margin: 0 0 9px; color: #3f3f46; font-size: 14px; }
.ownsite-news { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.ownsite-news li { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 12px; padding: 9px 0; border-top: 1px solid #f2f2f5; }
.ownsite-news li:first-child { border-top: 0; }
.ownsite-news time { padding-top: 2px; color: #71717a; font-size: 12px; font-variant-numeric: tabular-nums; }
.ownsite-link { color: #3448c5; text-decoration: none; overflow-wrap: anywhere; }
.ownsite-link:hover { text-decoration: underline; }
.ownsite-link:focus-visible, .ownsite-more:focus-visible { outline: 3px solid #93c5fd; outline-offset: 2px; }
.ownsite-news-link { font-size: 14px; font-weight: 600; line-height: 1.55; }
.ownsite-more.act { min-height: 44px; margin-top: 4px; padding: 7px 4px; color: #3448c5; }
.ownsite-social { display: flex; flex-wrap: wrap; gap: 8px; }
.ownsite-social-link { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; padding: 8px 11px; border: 1px solid #dfe3ea; border-radius: 9px; background: #fff; font-size: 13px; }
.ownsite-social-link:hover { border-color: #93a2ef; background: #f7f8ff; text-decoration: none; }
.ownsite-social-link svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }
.ownsite-wechat { display: flex; flex-wrap: wrap; gap: 8px; }
.ownsite-wechat > span { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 7px; min-height: 34px; padding: 5px 10px; border-radius: 8px; background: #ecfdf5; color: #166534; font-size: 13px; }
.ownsite-wechat strong { font-weight: 600; }
.ownsite-qr { font-size: 12px; }
.ownsite-recruit { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 14px; }
.ownsite-recruit h3 { margin: 0; }

@media (max-width: 560px) {
  .ownsite-activity { grid-template-columns: minmax(0, 1fr); }
  .ownsite-news li { grid-template-columns: minmax(0, 1fr); gap: 3px; }
  .ownsite-social-link { flex: 1 1 calc(50% - 8px); }
}

/* 企业资料有变化时先摆到用户眼前；颜色只提示新鲜度，不和风险红色混用。 */
.talk-page > .update-priority { grid-column: 1 / -1; order: -1; }
.update-priority { padding: 15px 18px; border: 1px solid #bfdbfe; border-radius: 14px; background: #f8fbff; box-shadow: 0 1px 2px rgba(30,64,175,.06); }
.update-priority[hidden] { display: none; }
.update-priority-head { display: flex; align-items: center; justify-content: space-between; gap: 10px 18px; margin-bottom: 9px; }
.update-priority-head h2 { margin: 0; color: #1e3a8a; font-size: 16px; }
.update-priority-head > div { display: flex; gap: 6px; }
.update-company-list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
.update-company { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 8px; min-width: 0; padding: 8px 10px; border: 1px solid #dbeafe; border-radius: 9px; background: #fff; }
.update-company:hover, .update-company:focus-visible { border-color: #93c5fd; background: #eff6ff; }
.update-company-name { overflow: hidden; color: #1f2937; font-size: 13px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.update-company time { color: #8a8a90; font-size: 11px; white-space: nowrap; }
.update-types { display: flex; grid-column: 1 / -1; flex-wrap: wrap; gap: 4px; }
.update-type { padding: 1px 6px; border-radius: 999px; background: #e0ecff; color: #1d4ed8; font-size: 11px; }
.tag.company-new { margin-left: 5px; border-color: #bfdbfe; background: #dbeafe; color: #1d4ed8; font-size: 10px; vertical-align: 1px; }
.tag.company-new.company-updated { border-color: #fde68a; background: #fef3c7; color: #92400e; }

@media (max-width: 1100px) { .update-company-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) {
  .update-priority-head { align-items: flex-start; flex-direction: column; }
  .update-company-list { grid-template-columns: minmax(0, 1fr); }
}

/* 会话管理：最近的会话里标「清单 / 临时」（2026-10-02） */
.ses-name .tag { margin-right: 6px; font-size: 11px; padding: 0 6px; }
.ses-tag-list { background: #e8f1ff; color: #1d4ed8; }
.ses-tag-draft { background: #f3f4f6; color: #6b7280; }

/* 企业库：点终止原因弹出详情（2026-10-02） */
.lib-termination-reason { cursor: pointer; text-decoration: underline dotted; text-underline-offset: 3px; }
.lib-termination-reason:hover { color: #b91c1c; }
.termination-pop { position: fixed; z-index: 60; background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; box-shadow: 0 12px 32px rgba(15, 23, 42, .16); padding: 14px 16px; font-size: 13px; line-height: 1.6; }
.termination-pop-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; margin-bottom: 6px; }
.termination-pop-head strong { font-size: 14px; }
.termination-pop-close { border: 0; background: none; font-size: 18px; line-height: 1; cursor: pointer; color: #6b7280; }
.termination-pop-type { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; color: #6b7280; }
.termination-pop-line { margin: 0 0 6px; font-weight: 600; color: #111827; }
.termination-pop-meta { margin: 0 0 8px; color: #4b5563; }
.termination-pop-focus { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 8px; }
.termination-pop-focus > span { color: #6b7280; margin-right: 2px; }
.termination-pop-links { display: flex; flex-wrap: wrap; gap: 6px 12px; margin-bottom: 8px; }
.termination-pop-links a, .termination-pop-card { color: #1d4ed8; text-decoration: none; }
.termination-pop-card { display: inline-block; margin-top: 2px; font-weight: 600; }

/* 企业卡：终止决定原文点开读（2026-10-02） */
.ipo-termination-text { margin-top: 8px; }
.ipo-termination-text summary { cursor: pointer; color: #1d4ed8; font-size: 13px; }
.ipo-termination-text p { white-space: pre-line; margin: 8px 0 0; padding: 10px 12px; background: #f9fafb; border-radius: 8px; font-size: 13px; line-height: 1.8; color: #374151; }

/* 上市监测：只看最近动态，下面一块是监测规则（看得到、管理员改得了）。 */
.ipo-watch-page { display: grid; gap: 16px; max-width: 1120px; }
.ipo-watch-block, .ipo-timeline-block, .ipo-rules-block { padding: 22px; }
.ipo-watch-title, .ipo-timeline-head, .ipo-timeline-company, .ipo-rules-head { display: flex; align-items: center; gap: 10px; }
.ipo-watch-title, .ipo-timeline-head, .ipo-rules-head { justify-content: space-between; }
.ipo-watch-title h1, .ipo-timeline-head h2, .ipo-rules-head h2 { margin: 0; }
.ipo-watch-title p, .ipo-rules-head p { margin: 6px 0 0; color: #6b7280; font-size: 14px; }
.ipo-rules-head { align-items: center; }
.ipo-rules-btns { display: flex; flex-wrap: wrap; gap: 8px; }
#ipo-rules:not([hidden]) { margin-top: 14px; }
.ipo-rules { display: grid; gap: 0; margin: 0; }
.ipo-rule-row { display: grid; grid-template-columns: 110px 1fr; gap: 16px; padding: 13px 0; border-top: 1px solid #e5e7eb; }
.ipo-rule-row dt { color: #6b7280; font-size: 13px; padding-top: 2px; }
.ipo-rule-row dd { margin: 0; color: #334155; }
.ipo-rule-row dd p { margin: 0 0 6px; }
.ipo-rule-items { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.ipo-rule-items li { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; }
.ipo-rule-items li.off { color: #94a3b8; }
.ipo-rule-items small { color: #64748b; font-size: 12px; }
.ipo-rule-items li.off small { color: #a1a8b3; }
.ipo-rule-hint { color: #64748b; font-size: 13px; }
.ipo-rule-fixed { margin: 0; padding-left: 18px; color: #475569; font-size: 13px; line-height: 1.7; }
.ipo-rule-edit label { display: flex; align-items: flex-start; gap: 8px; padding: 4px 0; cursor: pointer; }
.ipo-rule-edit input[type="checkbox"] { width: auto; min-height: 0; height: auto; margin: 4px 0 0; }
.ipo-rule-edit label span small { display: block; color: #64748b; font-size: 12px; }
.ipo-time-list { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.ipo-time-list > span { display: inline-flex; align-items: center; gap: 4px; }
.ipo-time-list input[type="time"] { width: auto; min-height: 0; }
.ipo-rule-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 16px; }
.ipo-rule-error { color: #b91c1c; font-size: 13px; }
.ipo-timeline-head { margin-bottom: 18px; }
.ipo-timeline-head > span { display: flex; flex-wrap: wrap; gap: 6px; }
.ipo-timeline { display: grid; gap: 0; }
.ipo-timeline-item { display: grid; grid-template-columns: 140px 1fr; gap: 16px; padding: 15px 0 15px 18px; border-left: 2px solid #c7d2fe; }
.ipo-timeline-item time { color: #64748b; font-size: 13px; }
.ipo-timeline-item p { margin: 7px 0 0; color: #334155; }
.ipo-timeline-company .act { padding: 0; font-weight: 700; text-decoration: none; }
.ipo-timeline-source { font-size: 12px; }
.ipo-empty { margin: 0; padding: 26px 0; color: #64748b; text-align: center; }
.ipo-head-actions { display: flex; align-items: flex-start; gap: 14px; }
.ipo-follow { white-space: nowrap; }
.ipo-industry-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 10px 0 4px; font-size: 13px; color: #5b6472; }
.ipo-industry-row small { color: #5b6472; }

/* 更新卡先说变化和关联，再把类型留作辅助线索。 */
.update-summary, .update-reason { grid-column: 1 / -1; font-size: 12px; line-height: 1.5; }
.update-summary { color: #374151; }
.update-reason { color: #1d4ed8; }

@media (max-width: 720px) {
  .ipo-watch-block, .ipo-timeline-block, .ipo-rules-block { padding: 16px; }
  .ipo-rule-row { grid-template-columns: 1fr; gap: 6px; }
  .ipo-timeline-item { grid-template-columns: 1fr; gap: 5px; }
  .ipo-head { align-items: flex-start; }
  .ipo-head-actions { flex-direction: column; align-items: stretch; }
}

/* 首页更新提醒压成一行，展开时浮出（2026-10-02：原来摊开占 220 像素，把名单挤没了） */
.update-priority { position: relative; padding: 8px 14px; border-radius: 12px; }
.update-priority-head { margin-bottom: 0; flex-wrap: nowrap; }
.update-priority-head h2 { font-size: 14px; white-space: nowrap; }
.update-priority-names { flex: 1; min-width: 0; overflow: hidden; color: #374151; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.update-priority .update-company-list { display: none; position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 40; padding: 10px; border: 1px solid #bfdbfe; border-radius: 12px; background: #f8fbff; box-shadow: 0 12px 28px rgba(15, 23, 42, .14); }
.update-priority.open .update-company-list { display: grid; }
/* 名单至少留出屏幕的六成高；上面的条件、提醒太多时整栏往下滚，名单不再被挤成一条缝（2026-10-02） */
.talk-page .result-block { overflow-y: auto; }
.talk-page #名单 { min-height: min(520px, 60vh); }

/* 企业库筛选分层（2026-10-03）：批次页签 → 地区/行业下拉 + 更多条件 → 已选条件 */
.lib-tabs { display: flex; flex-wrap: wrap; gap: 6px; padding-bottom: 10px; border-bottom: 1px solid #ececf1; }
.lib-tabs .act { min-height: 34px; padding: 4px 14px; font-size: 14px; font-weight: 600; }
.lib-tabs small { margin-left: 4px; font-size: 12px; font-weight: 500; opacity: .75; }
.lib-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.lib-filter-bar .lib-filter-label { flex: 0 0 auto; padding-top: 0; }
.lib-filter-bar .act { min-height: 32px; padding: 3px 10px; font-size: 13px; margin-left: auto; }
.lib-select { min-height: 32px; max-width: 220px; padding: 3px 28px 3px 10px; border: 1px solid #dcdce3; border-radius: 8px; background: #fff; color: #1f1f24; font-size: 13px; }
.lib-select:disabled { color: #a0a0a8; background: #f6f6f9; }
.lib-more { display: grid; gap: 8px; padding: 10px 12px; border-radius: 10px; background: #f8f8fb; }
.lib-chosen { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; min-height: 30px; }
.lib-chosen .lib-filter-label { flex: 0 0 auto; padding-top: 0; }
.lib-chosen .act { min-height: 28px; padding: 2px 9px; font-size: 12.5px; }
.lib-chosen-chip { background: #eef2ff; color: #1d4ed8; border-color: #dbe3ff; }
.lib-chosen-total { margin-left: auto; color: #6b6b72; font-size: 13px; }
.lib-chosen-total strong { color: #1f1f24; }
@media (max-width: 560px) {
  .lib-select { max-width: 100%; flex: 1 1 40%; }
  .lib-filter-bar .act { margin-left: 0; }
}

/* 企业卡：注册地迁移、注销无代码（issue #4） */
.dossier-migration { padding: 1px 8px; border-radius: 999px; background: #fff4e5; color: #9a5b00; }

/* 上市监测配置页：监测项一览 + 数据源目录 + 展示与更新。先看全局，再一条条看数据源；详情默认收起。 */
.src-page { display: grid; gap: 16px; max-width: 1180px; }
.src-page .block { padding: 22px; }
.src-head.editing { position: sticky; top: 0; z-index: 5; box-shadow: 0 2px 10px rgba(15, 23, 42, .12); }
.src-head-row, .src-sec-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.src-head h1, .src-sec-head h2 { margin: 0; }
.src-head p, .src-sec-head p { margin: 6px 0 0; color: #6b7280; font-size: 14px; }
.src-sec-head { margin-bottom: 12px; flex-direction: column; gap: 0; }
.src-head-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.src-error { margin: 12px 0 0; padding: 8px 12px; border-radius: 6px; background: #fef2f2; color: #b91c1c; font-size: 13px; }
.src-matrix { display: grid; gap: 0; }
.src-mrow { display: grid; grid-template-columns: minmax(150px, 1.3fr) minmax(160px, 2fr) minmax(130px, 1.5fr) 110px 120px; gap: 10px 14px; align-items: center; padding: 10px 0; border-top: 1px solid #eef0f4; }
.src-mrow:first-child { border-top: 0; }
.src-mname { display: grid; gap: 2px; }
.src-mname small { color: #8a8a90; font-size: 12px; line-height: 1.35; }
.src-mchips { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-width: 0; }
.src-mchips em { color: #b0b4bd; font-style: normal; }
.src-mlabel { color: #8a8a90; font-size: 12px; width: 28px; flex: none; }
.src-mpol select { width: 100%; min-height: 30px; }
.src-mstate { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #475569; }
.src-chip { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 12.5px; background: #eef2ff; color: #3730a3; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.src-chip.s-ok { background: #dcfce7; color: #166534; }
.src-chip.s-bad { background: #fee2e2; color: #991b1b; }
.src-chip.s-wait { background: #fef9c3; color: #854d0e; }
.src-chip.s-off, .src-chip.s-none { background: #f3f4f6; color: #6b7280; border: 1px dashed #cbd5e1; }
.src-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #9ca3af; flex: none; }
.src-dot.s-ok { background: #16a34a; }
.src-dot.s-bad { background: #dc2626; }
.src-dot.s-wait { background: #eab308; }
.src-dot.s-off { background: #cbd5e1; }
.src-toolbar { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center; margin-bottom: 12px; }
.src-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.src-toolbar input[type="search"] { flex: 1 1 200px; max-width: 320px; min-height: 34px; }
.src-list { display: grid; gap: 8px; }
.src-card { border: 1px solid #e5e7eb; border-radius: 10px; background: #fff; }
.src-card.r-off { background: #fafafa; }
.src-card.open { border-color: #c7d2fe; box-shadow: 0 1px 6px rgba(79, 70, 229, .08); }
.src-row { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 12px; align-items: center; padding: 12px 14px; }
.src-main { min-width: 0; display: grid; gap: 5px; }
.src-title { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; }
.src-title strong { font-size: 15px; }
.src-title small { color: #8a8a90; font-size: 12.5px; }
.src-sub { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; color: #64748b; font-size: 12.5px; }
.src-sub .tag { font-size: 12px; }
.src-st.s-ok { color: #15803d; }
.src-st.s-bad { color: #b91c1c; }
.src-st.s-off, .src-st.s-none { color: #94a3b8; }
.src-st.s-wait { color: #a16207; }
.src-free { background: #dcfce7; color: #166534; }
.src-paid { background: #fef3c7; color: #92400e; }
.src-edited { background: #e0e7ff; color: #3730a3; }
.src-warn { background: #fee2e2; color: #991b1b; }
.src-advice { background: #f1f5f9; color: #475569; }
.src-role .tag { font-weight: 600; }
.src-seg { display: inline-flex; border: 1px solid #d1d5db; border-radius: 8px; overflow: hidden; }
.src-seg label { display: block; padding: 5px 12px; font-size: 13px; cursor: pointer; background: #fff; color: #475569; border-left: 1px solid #d1d5db; }
.src-seg label:first-child { border-left: 0; }
.src-seg label.on { background: #1d4ed8; color: #fff; }
.src-seg input { position: absolute; opacity: 0; pointer-events: none; }
.src-seg label:focus-within { outline: 2px solid #93c5fd; outline-offset: -2px; }
.src-detail { margin: 0; padding: 4px 14px 14px; border-top: 1px dashed #e5e7eb; }
.src-d-row, .ipo-rules .src-d-row { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 4px 16px; padding: 10px 0; border-top: 1px solid #f1f3f6; }
.src-d-row:first-child { border-top: 0; }
.src-d-row dt { color: #6b7280; font-size: 13px; padding-top: 2px; }
.src-d-row dd { margin: 0; color: #334155; font-size: 13.5px; line-height: 1.6; min-width: 0; overflow-wrap: anywhere; }
.src-d-row dd p { margin: 0 0 6px; }
.src-d-row em { color: #b0b4bd; font-style: normal; }
.src-urls { display: grid; gap: 4px; margin: 0 0 8px; padding: 0; list-style: none; }
.src-urls li { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; }
.src-ulabel { display: inline-block; min-width: 34px; color: #8a8a90; font-size: 12px; }
.src-urls .src-url-link { padding: 0; min-height: 0; border: 0; background: transparent; color: #1d4ed8; text-decoration: none; word-break: break-all; text-align: left; font-weight: 400; }
.src-urls .src-url-link:hover { text-decoration: underline; }
.src-check { font-size: 12px; padding: 1px 7px; border-radius: 999px; white-space: nowrap; }
.src-check.ok { background: #dcfce7; color: #166534; }
.src-check.warn { background: #fef9c3; color: #854d0e; }
.src-check.bad { background: #fee2e2; color: #991b1b; }
.src-check.none { background: #f3f4f6; color: #94a3b8; }
.src-hint { display: block; color: #8a8a90; font-size: 12px; }
/* 数据源下的「相关经验」：标题可点开看正文；按名称匹配的带一行小字 */
.src-exp { margin: 0 0 6px; padding: 6px 10px; border: 1px solid #eef0f3; border-radius: 8px; background: #fafbfc; }
.src-exp summary { cursor: pointer; font-weight: 600; color: #1f2937; }
.src-exp summary .src-hint { font-weight: 400; margin-top: 2px; }
.src-exp-body { margin: 8px 0 6px; white-space: pre-wrap; color: #374151; font-size: 13px; line-height: 1.65; }
.src-detail-edit input[type="text"], .src-detail-edit select, .src-detail-edit textarea { width: 100%; box-sizing: border-box; min-height: 32px; }
.src-detail-edit textarea { resize: vertical; }
.src-urls-edit { display: grid; gap: 6px; }
.src-urow { display: grid; grid-template-columns: 92px minmax(0, 1fr) auto; gap: 6px; align-items: center; }
.src-fee { display: grid; grid-template-columns: 130px minmax(0, 1fr); gap: 6px; }
.src-fee input[data-f$="购买入口"] { grid-column: 1 / -1; }
.src-short { max-width: 220px; }
.src-sub-edit { margin-top: 8px; font-size: 13px; color: #64748b; }
.src-inline { display: inline-flex; align-items: center; gap: 6px; margin: 0 14px 6px 0; font-size: 13.5px; cursor: pointer; }
.src-inline input { width: auto; min-height: 0; margin: 0; }
.src-block-label { display: flex; align-items: flex-start; margin-right: 0; }
.src-block-label span small { display: block; color: #64748b; font-size: 12px; }
.src-cover { display: flex; flex-wrap: wrap; }
@media (max-width: 899px) {
  .src-page .block { padding: 16px; }
  .src-mrow { grid-template-columns: 1fr; gap: 6px; }
  .src-row { grid-template-columns: 1fr; }
  .src-d-row { grid-template-columns: 1fr; }
  .src-urow, .src-fee { grid-template-columns: 1fr; }
}

/* 数组 / 对象型字段的结构化展示（企业卡档案页） */
.dossier-item.dossier-struct { grid-column: 1 / -1; }
.st-scroll { overflow-x: auto; max-width: 100%; }
.st-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.st-table th, .st-table td { padding: 6px 9px; border-bottom: 1px solid #f0f0f3; text-align: left; vertical-align: top; }
.st-table thead th { color: #71717a; font-weight: 500; white-space: nowrap; }
.st-table small { display: block; color: #a1a1aa; font-size: 11px; font-weight: 400; }
.st-num td, .st-num thead th:not(:first-child) { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.st-num tbody th { white-space: nowrap; font-weight: 500; }
.st-num tbody th small { display: inline; margin-left: 4px; }
.st-kv th { width: 38%; color: #71717a; font-weight: 400; }
.st-cell { display: inline-block; max-width: 280px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }
button.st-cell-long { appearance: none; border: 0; background: none; padding: 0; margin: 0; font: inherit; color: inherit; text-align: left; cursor: pointer; border-bottom: 1px dashed #c9c9d1; min-height: 0; }
button.st-cell-long:hover { color: #1d4ed8; }
.st-cell.st-open { white-space: normal; max-width: none; overflow: visible; text-overflow: clip; }
.st-nil { color: #c4c4cc; }
.st-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.st-chip { padding: 2px 9px; border-radius: 999px; background: #f4f4f5; font-size: 13px; overflow-wrap: anywhere; }
.st-note { margin: 6px 0 0; color: #8a8a93; font-size: 12px; }
.st-more { margin-top: 6px; }
.st-more > summary { cursor: pointer; color: #52525b; font-size: 12px; padding: 4px 0; }
.st-num { width: auto; min-width: 260px; max-width: 100%; }

.lib-name { display: flex; align-items: baseline; min-width: 0; white-space: nowrap; }
.lib-name-text { flex: 0 0.001 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.lib-name > .tag { flex: none; }
.lib-ind { flex: 0 100 auto; min-width: 0; margin-left: 8px; overflow: hidden; text-overflow: ellipsis; color: #8a8a90; font-size: 12px; font-weight: 400; }
.lib-sub2 { display: flex; gap: 5px; align-items: baseline; min-width: 0; overflow: hidden; white-space: nowrap; }
.lib-sub2 > .lib-sub { flex: none; }
.lib-sub2 > .lib-reason { flex: 1 1 0; min-width: 0; }
.lib-neg { color: #b91c1c; }

@media (min-width: 900px) {
  /* 营收 利润 纳税 员工 研发 五个数值列靠右对齐，表头同 */
  .lib-company-row.lib-role-admin > span:nth-child(n+2):nth-child(-n+6) { text-align: right; }
  .lib-head-row > [data-sort="营收"], .lib-head-row > [data-sort="利润"], .lib-head-row > [data-sort="纳税"], .lib-head-row > [data-sort="参保"], .lib-head-row > [data-sort="研发"] { justify-self: end; }
}
.lib-sub2 .lib-termination-reason { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.lib-sub2 > i { flex: none; color: #c4c4cc; font-style: normal; font-size: 12px; }
.lib-sub2 .lib-termination-reason { font-size: 12px; }
.lib-sub2 .lib-reason { flex: 1 1 0; min-width: 0; }
@media (min-width: 900px) { .lib-row.lib-role-admin > :nth-child(7) { padding-left: 14px; } }

/* ── 区域分析（市→区县→街镇的头部企业晴雨表，2026-10-04 试点） ── */
.region-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.region-head h1 { margin: 0; }
.region-head p { margin: 6px 0 0; color: #6b7280; font-size: 14px; max-width: 720px; }
.region-picker { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.region-picker label { font-size: 13px; color: #6b7280; display: flex; gap: 6px; align-items: center; }
.region-picker select { min-width: 140px; padding: 6px 8px; border: 1px solid #d9d9e0; border-radius: 8px; font-size: 14px; background: #fff; }
.region-page .block h2 small, .region-page .block h3 small { font-weight: 400; color: #8a8a93; font-size: 12px; margin-left: 8px; }
.region-page .block h3 { font-size: 14px; margin: 14px 0 8px; color: #52525b; }
.region-base-line { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 14px; margin: -4px 0 14px; padding: 10px 12px; border: 1px solid #cfe7dd; border-radius: 10px; background: #f2faf6; color: #145c4a; font-size: 14px; line-height: 1.5; }
.region-base-line b { font-size: 20px; font-variant-numeric: tabular-nums; }
.region-base-line strong { color: #0f6b56; }
.region-base-extra { color: #53736a; font-size: 12px; }
.region-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; }
.region-stat { border: 1px solid #ececf1; border-radius: 10px; padding: 12px 14px; background: #fafafb; }
.region-stat b { display: block; font-size: 22px; font-weight: 600; color: #18181b; line-height: 1.2; }
.region-stat span { display: block; margin-top: 4px; font-size: 12px; color: #6b7280; line-height: 1.4; }
.region-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.region-table th { text-align: left; font-weight: 500; color: #6b7280; padding: 6px 8px; border-bottom: 1px solid #ececf1; }
.region-table td { padding: 8px; border-bottom: 1px solid #f1f1f4; vertical-align: top; }
.region-table small, .region-list small { color: #8a8a93; font-size: 12px; }
.region-bar { position: relative; height: 22px; background: #f1f1f4; border-radius: 4px; overflow: hidden; min-width: 160px; }
.region-bar-fill { position: absolute; left: 0; top: 0; bottom: 0; background: #7fb3e6; border-radius: 0 4px 4px 0; }
.region-bar-text { position: relative; line-height: 22px; padding-left: 8px; font-size: 12px; color: #18181b; }
.region-list { list-style: none; margin: 0; padding: 0; }
.region-list li { padding: 5px 0; border-bottom: 1px solid #f4f4f6; font-size: 14px; line-height: 1.5; }
.region-list time { color: #8a8a93; font-size: 12px; margin-right: 6px; }
.region-note { color: #8a8a93; font-size: 13px; margin: 6px 0; }
@media (max-width: 720px) { .region-table { display: block; overflow-x: auto; } }

/* 区域研判卡：结论在上，论证链、建议、涉及企业依次往下 */
.region-summary .region-keys { list-style: none; margin: 0 0 8px; padding: 0; }
.region-summary .region-keys li { padding: 6px 0; font-size: 15px; line-height: 1.55; display: flex; gap: 10px; align-items: baseline; }
.region-badge { display: inline-block; flex: none; padding: 1px 8px; border-radius: 999px; font-size: 12px; font-weight: 500; background: #eef0f4; color: #52525b; }
.region-badge.good, .region-insight.good .region-badge { background: #e3f4ea; color: #1b6b3a; }
.region-badge.opp, .region-insight.opp .region-badge { background: #e4eefc; color: #1f5fa8; }
.region-badge.risk, .region-insight.risk .region-badge { background: #fde8e6; color: #a8261c; }
.region-badge.warn, .region-insight.warn .region-badge { background: #fdf1d8; color: #8a5a00; }
.region-insight { background: #fff; border: 1px solid #e6e6ea; border-left: 4px solid #cfd2da; border-radius: 12px; padding: 16px 20px; margin-bottom: 14px; box-shadow: 0 1px 2px rgba(16,24,40,.04); }
.region-insight.good { border-left-color: #3d9a63; } .region-insight.opp { border-left-color: #4a86c8; }
.region-insight.risk { border-left-color: #d1493d; } .region-insight.warn { border-left-color: #d9a23a; }
.region-insight header { display: flex; gap: 10px; align-items: baseline; margin-bottom: 10px; }
.region-insight h3 { margin: 0; font-size: 17px; line-height: 1.45; color: #18181b; }
.region-chain { list-style: none; margin: 0; padding: 0; }
.region-step { display: flex; gap: 10px; padding: 6px 0; font-size: 14px; line-height: 1.65; }
.region-step-tag { flex: none; width: 42px; text-align: center; font-size: 12px; color: #6b7280; background: #f1f1f4; border-radius: 6px; height: 22px; line-height: 22px; margin-top: 2px; }
.region-step.t-推断 .region-step-tag { background: transparent; border: 1px dashed #9aa0ad; line-height: 20px; }
.region-step.t-推断 .region-step-text { color: #52525b; font-style: italic; }
.region-step.t-所以 .region-step-tag { background: #18181b; color: #fff; }
.region-step.t-所以 .region-step-text { font-weight: 600; color: #18181b; }
.region-advice { margin-top: 10px; padding: 10px 14px; background: #f7f8fa; border-radius: 8px; font-size: 14px; }
.region-advice ol { margin: 6px 0 0; padding-left: 20px; line-height: 1.7; }
.region-who { margin-top: 10px; font-size: 14px; } .region-who summary { cursor: pointer; color: #1f5fa8; }
.region-limit { margin: 10px 0 0; font-size: 12px; color: #8a8a93; }
.region-evidence > summary { cursor: pointer; list-style: none; } .region-evidence > summary h2 { display: inline-block; margin: 0; border: 0; padding: 0; }
.region-evidence[open] > summary { margin-bottom: 14px; }
.region-evidence .block { box-shadow: none; background: #fafafb; }

/* 区县画像与市总览（2026-10-04）：建议卡、定位对照表、横向比较表、产业×区县热力 */
.rp-back { margin: 0 0 10px; font-size: 14px; } .rp-back a { color: #0f6b56; text-decoration: none; }
.rp-title { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; }
.rp-title h2 { margin: 0; border: 0; padding: 0; font-size: 24px; }
.rp-chips { display: flex; gap: 8px; flex-wrap: wrap; font-size: 13px; }
#rp-contrast { scroll-margin-top: 72px; }
.rp-intro { margin: 0 0 10px; font-size: 14px; line-height: 1.7; color: #3f3f46; background: #f6f7f9; padding: 8px 12px; border-radius: 8px; }
.rp-compare a.tip { color: inherit; text-decoration: none; cursor: pointer; }
.tip { cursor: help; border-bottom: 1px dotted #8a8a93; }
.rp-chips .tip, .region-badge.tip { border-bottom: 0; }
.tip-box { white-space: pre-line; position: fixed; z-index: 1000; max-width: 320px; padding: 8px 12px; background: #18181b; color: #fff; font-size: 13px; line-height: 1.6; border-radius: 8px; box-shadow: 0 4px 16px rgba(0,0,0,.2); pointer-events: none; }
.rp-chips span { background: #eef5f2; color: #0f6b56; padding: 2px 10px; border-radius: 999px; }
.rp-sum { margin: 10px 0 4px; font-size: 15px; line-height: 1.7; color: #18181b; }
.region-warn { margin: 8px 0 0; padding: 8px 12px; background: #fdf1d8; color: #6b4a00; border-radius: 8px; font-size: 13px; line-height: 1.6; }
.rp-advice { display: flex; gap: 14px; padding: 14px 0; border-top: 1px solid #ececf1; }
.rp-advice:first-of-type { border-top: 0; }
.rp-no { flex: none; width: 34px; height: 34px; border-radius: 50%; background: #0f6b56; color: #fff; display: grid; place-items: center; font-weight: 600; font-size: 14px; }
.rp-sub .rp-no { background: #6b7280; font-size: 12px; }
.rp-body h3 { margin: 2px 0 8px; font-size: 16px; line-height: 1.5; color: #18181b; }
.rp-body p { margin: 4px 0; font-size: 14px; line-height: 1.7; color: #3f3f46; }
.rp-body p b { display: inline-block; min-width: 4.5em; margin-right: 6px; color: #0f6b56; font-weight: 600; }
.rp-cross { color: #52525b; }
.rp-table td, .rp-table th { vertical-align: top; }
.rp-hidden { background: #f3faf6; }
.rp-scroll { overflow-x: auto; }
.rp-compare td, .rp-compare th { font-size: 13px; line-height: 1.5; }
.rp-compare td a { color: #0f6b56; text-decoration: none; }
.rp-heat { text-align: center; font-size: 13px; } .rp-heat th { font-weight: 500; white-space: nowrap; } .rp-heat th a { color: #0f6b56; text-decoration: none; }
.rp-heat tbody th { text-align: left; } .rp-heat td { min-width: 34px; border: 1px solid #dfe3e8; }
.rp-heat th, .rp-heat tbody th { border: 1px solid #dfe3e8; } .rp-heat tbody tr:hover td, .rp-heat tbody tr:hover th { outline: 1px solid #b8c7d1; outline-offset: -1px; } .rp-heat td:last-child, .rp-heat thead th:last-child { font-weight: 600; background: #f8fafc; }
.region-insight.fold { padding: 0; } .region-insight.fold > summary { list-style: none; cursor: pointer; display: flex; gap: 10px; align-items: baseline; padding: 14px 20px; }
.region-insight.fold > summary::-webkit-details-marker { display: none; }
.region-insight.fold > summary h3 { font-size: 15px; font-weight: 600; }
.region-insight.fold[open] > summary { border-bottom: 1px solid #f1f1f4; }
.region-insight.fold > :not(summary) { margin-left: 20px; margin-right: 20px; } .region-insight.fold > :last-child { margin-bottom: 16px; } .region-insight.fold > .region-chain { margin-top: 10px; }
.rp-table .act, .region-list .act { padding: 0 6px; min-height: 22px; font-size: 13px; }
.decision-timeline { border-top: 3px solid #0f6b56; }
.decision-head, .decision-current { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; flex-wrap: wrap; }
.decision-head h2 { margin: 0; }
.decision-current { margin: 12px 0; padding: 12px 14px; border: 1px solid #dcece5; border-radius: 10px; background: #f7fbf9; color: #3f3f46; }
.decision-current > div { display: flex; gap: 10px; flex-wrap: wrap; }
.decision-current time, .decision-history time { color: #0f6b56; font-variant-numeric: tabular-nums; }
.decision-history { border-top: 1px solid #eceff2; padding: 0; }
.decision-history summary { display: grid; grid-template-columns: 110px 120px minmax(0, 1fr); gap: 10px; align-items: baseline; padding: 12px 0; cursor: pointer; list-style: none; }
.decision-history summary::-webkit-details-marker { display: none; }
.decision-history summary small { color: #64748b; overflow-wrap: anywhere; }
.decision-history-body { padding: 0 0 14px 120px; color: #3f3f46; }
.decision-history-body p { margin: 0 0 10px; }
.decision-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.decision-columns ul { margin: 5px 0 0; padding-left: 18px; line-height: 1.7; }
.district-street-bars { display: grid; gap: 10px; }
.district-street-row { display: grid; grid-template-columns: minmax(180px, .7fr) minmax(220px, 1.3fr); gap: 12px; align-items: center; }
.district-street-row > div { display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; }
.district-street-row small { color: #64748b; }
.region-industry-card { min-width: 0; }
.region-tiers { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.region-tiers > div { padding: 8px; border-radius: 8px; background: #fafbfc; }
.region-tiers > div:nth-child(1) { border-top: 3px solid #3d9a63; }.region-tiers > div:nth-child(2) { border-top: 3px solid #4a86c8; }.region-tiers > div:nth-child(3) { border-top: 3px solid #a1a1aa; }
.region-tiers p { margin: 6px 0 0; font-size: 13px; line-height: 1.6; overflow-wrap: anywhere; }
.ipo-column > summary { cursor: pointer; list-style: none; }.ipo-column > summary::-webkit-details-marker { display: none; }.ipo-column[open] > summary { border-bottom: 1px solid #eef0f2; margin-bottom: 14px; }.ipo-column > summary .street-section-title { padding: 0; }.ipo-column-body > .block { box-shadow: none; padding: 0; background: transparent; }
.heat-switch { display: flex; gap: 8px; margin-bottom: 10px; flex-wrap: wrap; }

/* 一街一页：先给判断，再给可展开的证据层；避免把企业名录堆成一张长清单 */
.street-hero { background: linear-gradient(135deg, #f5faf8 0%, #fff 68%); border-color: #dcece5; }
.street-hero-top, .street-section-title, .street-table-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.street-kicker { margin: 0 0 4px; color: #0f6b56; font-size: 12px; letter-spacing: .04em; }
.street-hero h2, .street-section-title h2, .street-table-head h2 { margin: 0; border: 0; padding: 0; }
.street-metrics { display: flex; flex-wrap: wrap; gap: 8px 20px; margin: 20px 0 12px; padding: 12px 0; border-top: 1px solid #e4eee9; border-bottom: 1px solid #e4eee9; color: #52525b; font-size: 13px; }
.street-metrics b { color: #18181b; font-size: 20px; margin-left: 3px; font-variant-numeric: tabular-nums; }
.street-metrics small { color: #0f6b56; margin-left: 4px; }
.street-summary { display: grid; grid-template-columns: 64px 1fr; gap: 8px; margin: 8px 0; font-size: 14px; line-height: 1.7; }
.street-summary > span { color: #0f6b56; font-weight: 600; }
.street-source-line { border-top: 1px solid #eef2f0; padding-top: 8px; margin-top: 12px; }
.street-conclusions h2 { margin-bottom: 10px; }
.street-conclusion { display: flex; align-items: baseline; gap: 10px; padding: 11px 0; border-top: 1px solid #edf0f2; font-size: 15px; line-height: 1.6; }
.street-conclusion:first-of-type { border-top: 0; }
.street-conclusion > b { color: #18181b; }
.street-analysis { border-top: 3px solid #0f6b56; }
.street-section-title { align-items: center; margin-bottom: 14px; }
.street-industry-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.street-industry-card { border: 1px solid #e4e7eb; border-radius: 12px; background: #fff; overflow: hidden; }
.street-industry-card > summary { display: grid; grid-template-columns: minmax(120px, 1fr) auto auto; gap: 10px; align-items: center; min-height: 52px; padding: 12px 14px; cursor: pointer; list-style: none; }
.street-industry-card > summary::-webkit-details-marker { display: none; }
.street-industry-card > summary::after { content: '＋'; color: #8a8a93; font-size: 16px; }
.street-industry-card[open] > summary::after { content: '−'; }
.street-industry-title { font-weight: 600; color: #18181b; }
.street-counts { display: flex; gap: 5px; flex-wrap: wrap; }
.street-counts i { padding: 2px 6px; border-radius: 5px; font-style: normal; font-size: 11px; white-space: nowrap; }
.street-counts .good { color: #1b6b3a; background: #e3f4ea; }.street-counts .opp { color: #1f5fa8; background: #e4eefc; }.street-counts .muted { color: #71717a; background: #f1f1f4; }
.street-industry-body { padding: 0 14px 14px; border-top: 1px solid #eef0f2; }
.street-local-position { margin: 12px 0; line-height: 1.6; color: #3f3f46; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.muted-text, .street-zero { color: #a1a1aa; }
.street-tiers { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.street-tier { min-width: 0; padding: 8px; background: #fafbfc; border-radius: 8px; }
.street-tier-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 6px; color: #52525b; font-size: 12px; }
.street-tier-head span { color: #8a8a93; font-variant-numeric: tabular-nums; }
.street-company { padding: 5px 0; border-top: 1px solid #eceff2; font-size: 13px; line-height: 1.45; }
.street-company:first-of-type { border-top: 0; }.street-company-meta { display: block; margin-top: 3px; }.street-company-meta small { margin-left: 4px; }
.street-ipo-mark { margin-left: 4px; color: #a05a00; font-size: 12px; }.street-more { margin-top: 5px; }.street-more summary { color: #1f5fa8; cursor: pointer; font-size: 12px; }
.street-card-foot { display: flex; justify-content: space-between; gap: 12px; align-items: center; margin-top: 12px; padding-top: 8px; border-top: 1px solid #eef0f2; }
.street-clusters { margin-top: 22px; padding-top: 14px; border-top: 1px solid #eef0f2; }.street-clusters h3 { margin-top: 0; }
.street-cluster-cloud { display: flex; flex-wrap: wrap; gap: 8px; }.street-cluster { padding: 6px 10px; border-radius: 999px; background: #eaf4ef; color: #17664e; font-size: 13px; }.street-cluster b { margin-left: 3px; }.street-cluster small { margin-left: 5px; color: #8a8a93; }.street-cluster.is-umbrella { opacity: .62; background: #f1f1f4; color: #52525b; }
.ipo-column { border-top: 3px solid #4a86c8; }.street-ipo-stats { display: grid; grid-template-columns: repeat(6, minmax(70px, 1fr)); gap: 8px; margin: 14px 0; }.street-ipo-stats div { padding: 9px; text-align: center; background: #f6f8fb; border-radius: 8px; }.street-ipo-stats b, .street-ipo-stats span { display: block; }.street-ipo-stats b { font-size: 20px; }.street-ipo-stats span { color: #6b7280; font-size: 12px; margin-top: 3px; }.street-ipo-row { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; padding: 9px 0; border-top: 1px solid #eef0f2; font-size: 14px; }.street-ipo-row > span:last-child { color: #6b7280; font-size: 12px; }.street-ipo-conclusions { margin-top: 8px; }
.street-review > summary { display: flex; align-items: baseline; gap: 10px; cursor: pointer; list-style: none; }.street-review > summary::-webkit-details-marker { display: none; }.street-review > summary h2 { display: inline; }.street-review[open] > summary { margin-bottom: 14px; }.street-review-item { padding: 8px 0 12px; border-bottom: 1px solid #eef0f2; }.street-review-item h4 { margin: 0 0 6px; font-size: 13px; color: #52525b; }.street-review-list { display: flex; flex-wrap: wrap; gap: 6px 12px; font-size: 13px; }.street-rules { margin-top: 14px; }.street-rule { border-top: 1px solid #eef0f2; padding: 8px 0; }.street-rule summary { cursor: pointer; color: #3f3f46; font-size: 13px; }.street-rule p { margin: 5px 0 0; color: #6b7280; font-size: 12px; line-height: 1.6; }.street-rule p b { color: #52525b; margin-right: 5px; }
.street-table-head { align-items: baseline; }.region-sort-note { color: #8a8a93; font-size: 12px; }.rp-under { opacity: .58; }.region-table th .act { padding: 2px 4px; min-height: 28px; white-space: nowrap; font-weight: 500; }.region-badge.muted { background: #f1f1f4; color: #71717a; }
@media (max-width: 720px) { .street-industry-grid { grid-template-columns: 1fr; }.street-tiers { grid-template-columns: 1fr; }.street-ipo-stats { grid-template-columns: repeat(3, 1fr); }.street-industry-card > summary { grid-template-columns: 1fr auto; }.street-counts { grid-column: 1 / -1; grid-row: 2; }.street-card-foot { align-items: flex-start; flex-direction: column; }.street-summary { grid-template-columns: 1fr; gap: 0; }.street-summary > span { margin-top: 6px; } }
@media (max-width: 720px) { .district-street-row { grid-template-columns: 1fr; gap: 5px; }.region-tiers, .decision-columns { grid-template-columns: 1fr; }.decision-history summary { grid-template-columns: 1fr; gap: 3px; }.decision-history-body { padding-left: 0; }.region-base-line { margin-top: 0; } }

/* 系统消息富文本与告警（2026-10-05）：标题、段落、列表、站内链接和操作按钮 */
.msg-rich { flex: 1; min-width: 0; }
.msg-rich-title { margin: 0 0 6px; font-weight: 600; font-size: 15px; line-height: 1.5; }
.msg-rich-p { margin: 6px 0; font-size: 14px; line-height: 1.7; }
.msg-rich-list { margin: 4px 0 6px; padding-left: 20px; font-size: 14px; line-height: 1.8; }
.msg-rich-acts { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.msg-rich .msg-link, .msg-rich-list .act { padding: 0 6px; min-height: 22px; font-size: 13px; }
.msg-alert { border-left: 4px solid #d1493d; }
.lv-bad { background: #fde8e6; color: #a8261c; } .lv-warn { background: #fdf1d8; color: #8a5a00; } .lv-info { background: #e4eefc; color: #1f5fa8; } .lv-src { background: #eef0f4; color: #52525b; }
.ipo-structure { margin: 12px 0 16px; padding: 10px 12px; border: 1px solid #e2e8f0; border-radius: 10px; background: #f8fafc; }
.ipo-structure h2 { margin: 0 0 6px; font-size: 15px; }
.ipo-structure-item { display: grid; grid-template-columns: 110px 1fr; gap: 8px; padding: 6px 0; border-top: 1px solid #eceff3; font-size: 14px; }
.ipo-structure-item > span { color: #64748b; }
.ipo-structure-item p { margin: 3px 0 0; font-size: 12px; }

/* 聊需求确认前「还要改一下」：直接改那段需求的框 */
.need-edit-box { display: block; width: 100%; box-sizing: border-box; margin-top: 8px; padding: 8px 10px; border: 1px solid #c9d3ea; border-radius: 8px; font: inherit; line-height: 1.7; resize: vertical; background: #fff; }

/* 数据需求页「提一条数据需求」：表单收在一个不太宽的框里，输入框占满宽，按钮和结果提示一行 */
.need-form { max-width: 680px; }
.need-form h2 { margin: 0 0 4px; font-size: 16px; }
.need-form .field { margin-top: 12px; }
.need-form .field label { font-weight: 600; color: #3a3a44; }
.need-form .field input { min-height: 40px; font-size: 15px; }
.need-form .field input:focus-visible, .need-form .field textarea:focus-visible { outline: none; border-color: #94a3d4; box-shadow: 0 0 0 3px #eef2ff; }
.need-form-actions { display: flex; align-items: center; gap: 12px; margin-top: 14px; }
/* 镇情档案（街镇页：公开报道里能核对到原文的事实，每条带出处） */
.town-profile { border-top: 3px solid #a05a00; }
.town-profile h3 { margin: 22px 0 10px; font-size: 15px; }
.town-lead { margin: 4px 0 10px; font-size: 16px; line-height: 1.75; color: #18181b; }
.town-judges { display: grid; gap: 10px; }
.town-judge { border: 1px solid #e4e7eb; border-radius: 12px; padding: 12px 14px; background: #fff; }
.town-judge-head { display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; }
.town-judge-head b { font-size: 15px; }
.town-judge p { margin: 8px 0 0; line-height: 1.75; font-size: 14px; color: #3f3f46; }
.town-judge p.region-note { margin-top: 6px; }
.town-metrics { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 8px; }
.town-metric { padding: 10px 12px; border: 1px solid #eceff2; border-radius: 10px; background: #fafbfc; display: flex; flex-direction: column; gap: 3px; }
.town-metric span { color: #52525b; font-size: 12px; }
.town-metric b { font-size: 15px; color: #18181b; }
.town-metric small { color: #8a8a93; font-size: 12px; }
.town-group { border: 1px solid #e4e7eb; border-radius: 12px; margin-bottom: 8px; background: #fff; }
.town-group > summary { cursor: pointer; padding: 10px 14px; font-weight: 600; list-style: none; }
.town-group > summary::-webkit-details-marker { display: none; }
.town-group > summary small { color: #8a8a93; font-weight: 400; margin-left: 6px; }
.town-place { padding: 8px 14px; border-top: 1px solid #eef0f2; font-size: 14px; line-height: 1.7; }
.town-place p { margin: 2px 0 0; color: #3f3f46; }
.town-place small { color: #8a8a93; }
.town-list { margin: 6px 0 0; padding-left: 18px; line-height: 1.75; font-size: 14px; }
.town-list li { margin: 6px 0; }
.town-todo, .town-sources { margin-top: 18px; border-top: 1px solid #eef0f2; padding-top: 10px; }
.town-todo > summary, .town-sources > summary { cursor: pointer; font-weight: 600; }
.town-todo > summary small, .town-sources > summary small { color: #8a8a93; font-weight: 400; margin-left: 6px; }
.town-source-list { margin: 8px 0 0; padding-left: 0; list-style: none; font-size: 13px; line-height: 1.8; }
.town-source-list small { color: #8a8a93; margin-left: 4px; }
a.src-mark { display: inline-block; min-width: 16px; height: 16px; line-height: 16px; padding: 0 4px; margin: 0 1px; border: 0; border-radius: 4px; background: #fdf1de; color: #a05a00; font-size: 11px; font-weight: 600; text-decoration: none; vertical-align: 2px; cursor: help; min-height: 16px; }
a.src-mark:hover { background: #a05a00; color: #fff; }
@media (max-width: 720px) { .town-metrics { grid-template-columns: 1fr 1fr; } }

/* ── 设置 · 账号管理（管理员）：搜索筛选 + 表格 + 分页 + 批量条，账号再多也只画一页 ── */
.acct-tools { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 12px; }
.acct-tools input[type="search"] { flex: 1 1 220px; max-width: 320px; }
.acct-tools select { min-height: 36px; border: 1px solid #d4d4da; border-radius: 8px; padding: 0 10px; background: #fff; font: inherit; }
.acct-chk { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: #3a3a44; }
.acct-chk input, .acct-table input[type="checkbox"], .acct-feat input[type="checkbox"] { width: auto; min-height: 0; height: auto; margin: 0; }
.acct-bulk { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 10px 12px; margin-bottom: 12px; background: #eef2ff; border: 1px solid #c7d2fe; border-radius: 10px; font-size: 14px; }
.acct-bulk-ops { display: inline-flex; flex-wrap: wrap; gap: 8px; margin-left: auto; }
.acct-custom { flex: 1 1 100%; padding-top: 8px; border-top: 1px solid #c7d2fe; }
.acct-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.acct-table th { text-align: left; font-weight: 600; color: #4b5563; padding: 8px 10px; border-bottom: 1px solid #e5e7eb; white-space: nowrap; }
.acct-table td { padding: 10px; border-bottom: 1px solid #f0f0f3; vertical-align: top; }
.acct-table .acct-c { width: 34px; }
.acct-table .acct-op { text-align: right; white-space: nowrap; }
.acct-tr.on td { background: #f8f9ff; }
.acct-edit td { background: #f8f9ff; padding-top: 0; }
.acct-name { font-weight: 600; color: #1f2937; }
.acct-sub { color: #6b7280; font-size: 12px; margin-top: 2px; }
.acct-offs { margin-left: 6px; color: #6b7280; font-size: 12px; }
.acct-all { background: #ecfdf5; color: #047857; }
.acct-off { background: #fff7ed; color: #c2410c; }
.acct-feats { display: flex; flex-direction: column; gap: 6px; margin: 4px 0 8px; }
.acct-feat { display: flex; align-items: flex-start; gap: 8px; font-size: 14px; cursor: pointer; }
.acct-feat small { display: block; color: #6b7280; font-size: 12px; }
.acct-cities { flex-direction: row; flex-wrap: wrap; gap: 6px 16px; }
.acct-scope { border-top: 1px dashed #e5e7eb; padding-top: 6px; }
.acct-scope input[type="text"] { width: 10em; }
.acct-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.acct-pager { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 14px; font-size: 14px; color: #4b5563; }
@media (max-width: 720px) { .acct-bulk-ops { margin-left: 0; } .acct-table th:nth-child(3), .acct-table td:nth-child(3) { display: none; } }

/* 经验库只读（用户 2026-10-11：用户不能新增、修改、删除经验，最多是看）：把所有写操作的按钮藏起来，服务端另有拦截 */
.exp-readonly [data-act="要加经验"], .exp-readonly [data-act="存新经验"], .exp-readonly [data-act="要改经验"], .exp-readonly [data-act="存改经验"],
.exp-readonly [data-act="删经验"], .exp-readonly [data-act="确认经验"], .exp-readonly [data-act="否决经验"], .exp-readonly [data-act="合并经验"], .exp-readonly [data-act="翻常驻"] { display: none; }
.acct-extra { background: #eef2ff; color: #3730a3; margin-left: 6px; }

/* 经验管理 · 提取给更多用户 */
.admin-extract { margin-top: 10px; padding: 12px; background: #f8f9ff; border: 1px solid #dbe2ff; border-radius: 10px; font-size: 14px; }
.admin-extract select, .admin-extract input[type="search"] { min-height: 34px; border: 1px solid #d4d4da; border-radius: 8px; padding: 0 10px; background: #fff; font: inherit; }
.admin-extract-scope { display: flex; flex-direction: column; gap: 4px; margin: 8px 0; }
.admin-extract-list { display: flex; flex-direction: column; gap: 3px; max-height: 160px; overflow: auto; margin-top: 6px; }
.admin-extract input[type="radio"], .admin-extract input[type="checkbox"] { width: auto; min-height: 0; height: auto; margin-right: 4px; }
.dot.off { background: #9ca3af; }

/* 消息页：分组页签（下划线式）、待答复的小分段、空状态 */
.tabs { display: flex; gap: 6px; border-bottom: 1px solid #e5e7eb; margin: 0 0 18px; }
.tab { background: none; border: 0; border-bottom: 2px solid transparent; margin-bottom: -1px; padding: 10px 14px; font: inherit; font-size: 15px; font-weight: 600; color: #6b7280; cursor: pointer; display: inline-flex; align-items: center; gap: 7px; }
.tab:hover { color: #1f2937; }
.tab.on { color: #1d4ed8; border-bottom-color: #1d4ed8; }
.tab .cnt { min-width: 20px; padding: 0 6px; border-radius: 999px; background: #eceef2; color: #4b5563; font-size: 12px; font-weight: 600; line-height: 20px; text-align: center; }
.tab .cnt.hot { background: #dc2626; color: #fff; }
.pend-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.seg { display: inline-flex; gap: 2px; padding: 3px; background: #f1f3f7; border-radius: 10px; }
.seg button { border: 0; background: transparent; border-radius: 8px; padding: 6px 14px; font: inherit; font-size: 13px; color: #4b5563; cursor: pointer; }
.seg button small { margin-left: 4px; color: #9ca3af; font-size: 12px; }
.seg button.on { background: #fff; color: #1d4ed8; font-weight: 600; box-shadow: 0 1px 2px rgba(15, 23, 42, .08); }
.seg button.on small { color: #6b7fd6; }
.pend-hint { margin: 0 0 6px; }
.empty-state { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 44px 16px 36px; text-align: center; color: #8a8f98; font-size: 13px; }
.empty-state b { font-size: 15px; color: #4b5563; font-weight: 600; }
.empty-ico { width: 44px; height: 44px; border-radius: 50%; background: #ecfdf5; color: #059669; font-size: 22px; line-height: 44px; margin-bottom: 4px; }
