/* 房产管理系统 - 全局样式 */
* { box-sizing: border-box; }
body {
  margin: 0; font-family: "Microsoft YaHei", "PingFang SC", system-ui, sans-serif;
  background: #f5f6f8; color: #222;
}
.container { max-width: 1560px; margin: 0 auto; padding: 20px 28px 60px; }
h1 { font-size: 22px; } h2 { font-size: 18px; margin-top: 28px; } h3 { font-size: 15px; }
a { color: #1a6fc4; text-decoration: none; }
a:hover { text-decoration: underline; }
.muted { color: #888; }
.mono { font-family: Consolas, monospace; width: 100%; }

/* 顶部导航：内容与正文同宽居中，当前栏目高亮 */
.topnav {
  background: linear-gradient(90deg, #1d3760 0%, #24466f 100%);
  box-shadow: 0 1px 4px rgba(15, 30, 50, .18);
}
.topnav-inner {
  display: flex; align-items: center; gap: 4px; flex-wrap: wrap;
  max-width: 1560px; margin: 0 auto; padding: 0 20px; min-height: 60px;
}
.topnav .brand {
  color: #fff; font-weight: 600; font-size: 18px; letter-spacing: 1px;
  margin-right: 26px; white-space: nowrap;
}
.topnav .brand small { font-size: 13px; opacity: .75; }
.topnav .navlink {
  color: #cfe0f5; padding: 17px 20px; font-size: 17px; letter-spacing: 2px;
  white-space: nowrap; border-bottom: 3px solid transparent;
  transition: background .15s, color .15s;
}
.topnav .navlink:hover { color: #fff; background: rgba(255, 255, 255, .10); text-decoration: none; }
.topnav .navlink.active {
  color: #fff; border-bottom-color: #ffd666; font-weight: 600;
  background: rgba(255, 255, 255, .08);
}
.topnav .spacer { flex: 1; }
.topnav .badge-link { position: relative; color: #cfe0f5; padding: 6px 10px; font-size: 17px; }
.topnav .badge-link:hover { color: #fff; text-decoration: none; }
.topnav .nav-user { color: #cfe0f5; padding: 6px 10px; font-size: 15px; }
.topnav .nav-user:hover { color: #fff; text-decoration: none; }
.badge {
  position: absolute; top: 4px; right: -2px; background: #d33; color: #fff;
  border-radius: 9px; font-size: 11px; padding: 1px 5px;
}
.linkbtn {
  background: none; border: none; color: #cfe0f5; cursor: pointer; font-size: 15px;
}
.linkbtn:hover { color: #fff; }

/* 按钮 */
.btn {
  display: inline-block; padding: 6px 14px; border: 1px solid #c9d2dd; border-radius: 4px;
  background: #fff; color: #333; cursor: pointer; font-size: 14px;
}
.btn:hover { background: #eef2f7; text-decoration: none; }
.btn-primary { background: #1a6fc4; border-color: #1a6fc4; color: #fff; }
.btn-primary:hover { background: #155da8; }
.btn-danger { color: #c0392b; border-color: #e0b4ae; }
.btn-danger:hover { background: #fbeae8; }
.btn-sm { padding: 2px 8px; font-size: 13px; }
.btn[disabled] { opacity: .5; cursor: not-allowed; }
.inline { display: inline; }

/* 提示条 */
.flash { padding: 10px 14px; border-radius: 4px; margin: 10px 0; font-size: 14px; }
.flash-success { background: #e7f6ec; border: 1px solid #b7e2c5; color: #1d7a3d; }
.flash-error { background: #fdecea; border: 1px solid #f2c1bb; color: #b3261e; }
.flash-warning { background: #fdf6ea; border: 1px solid #f0dcb0; color: #9a6a00; }
.flash-info { background: #eef5fc; border: 1px solid #c3d9ef; color: #1a5a96; }
.input-error { border-color: #b3261e !important; background: #fdf6f5; }

/* 登录态徽章 */
.pill {
  display: inline-block; border-radius: 10px; padding: 2px 10px;
  font-size: 12.5px; white-space: nowrap;
}
.pill-ok { background: #e7f6ec; color: #1d7a3d; }
.pill-warn { background: #fdf3e3; color: #b26a00; }
.pill-err { background: #fdecea; color: #b3261e; }

/* 弹窗 */
.modal-mask {
  display: none; position: fixed; inset: 0; z-index: 200;
  background: rgba(15, 30, 50, .45);
  align-items: center; justify-content: center;
}
.modal-mask.open { display: flex; }
.modal {
  background: #fff; border-radius: 8px; width: 400px; max-width: 92vw;
  box-shadow: 0 12px 40px rgba(0, 0, 0, .25);
}
.modal-wide { width: 560px; }
.modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px 4px;
}
.modal-head h3 { margin: 0; font-size: 16px; }
.modal-close {
  background: none; border: none; font-size: 20px; line-height: 1;
  cursor: pointer; color: #999; padding: 2px 6px;
}
.modal-close:hover { color: #333; }
.modal-body { padding: 8px 18px 4px; max-height: 70vh; overflow-y: auto; }
.modal-foot {
  display: flex; justify-content: flex-end; gap: 10px; padding: 12px 18px 16px;
}

/* 行内标签/徽章 */
.badge-green {
  display: inline-block; background: #e7f6ec; color: #1d7a3d;
  border-radius: 3px; padding: 1px 6px; font-size: 12px;
  white-space: nowrap;
}

/* 表格 */
.tbl {
  width: 100%; border-collapse: collapse; background: #fff; margin: 12px 0;
  font-size: 13.5px;
}
.tbl th, .tbl td { border: 1px solid #e3e8ee; padding: 6px 8px; text-align: left; }
.tbl th { background: #f0f4f9; font-weight: 600; white-space: nowrap; }
.tbl tr:nth-child(even) td { background: #fafbfd; }
/* 分组组头行（如资质评估按家庭户分组） */
.tbl tr.hh-head td { background: #e8f0fb; font-weight: 600; color: #1d4e89; }
.tbl tr.mat-sub td { background: #f3f6fa; font-weight: 600; font-size: 12.5px; color: #44586e; }
.tbl input[type="text"], .tbl input[type="number"] { border: 1px solid #d5dce4; border-radius: 3px; padding: 3px 5px; }
/* 按 colgroup 宽度定死列宽（长文本列换行，不再挤压其它列） */
.tbl-fixed { table-layout: fixed; }
.tbl-fixed td { overflow-wrap: anywhere; }
/* 估值明细（_valuation_breakdown.html：持仓/观察仓/在售三处共用） */
.vbd { font-size: 12.5px; color: #44586e; line-height: 1.7; }
.vbd .vbd-line { margin: 1px 0; }
.vbd .vbd-formula { color: #1d4e89; font-weight: 600; }
.vbd .vbd-compare { color: #8a6d1a; }

/* 超宽表格（如材料清单 12 列）：容器内横向滚动，不撑破卡片 */
.tbl-scroll { overflow-x: auto; }
.tbl-scroll .tbl { min-width: max-content; }

/* 表头排序 */
.tbl th.th-sortable { cursor: pointer; user-select: none; }
.tbl th.th-sortable:hover { background: #e6edf5; }
.tbl th[data-sort="asc"]::after { content: " ▲"; font-size: 0.8em; color: #1677ff; }
.tbl th[data-sort="desc"]::after { content: " ▼"; font-size: 0.8em; color: #1677ff; }
.tbl th a.th-sort-link { color: inherit; text-decoration: none; display: inline-block; }

/* 详情展开行（行情在售/数据浏览共用） */
.row-hidden { display: none; }
.detail-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 4px 18px; padding: 4px 0; font-size: 13px;
}
.detail-grid .dl { color: #888; white-space: nowrap; }
.detail-grid .dv { color: #222; }
.detail-sec { font-weight: 600; color: #2c5282; margin: 6px 0 2px; }

/* 表单 */
.card {
  background: #fff; border: 1px solid #e3e8ee; border-radius: 6px;
  padding: 16px 18px; margin: 12px 0;
}
/* 行情采集页顶部操作条：吸顶常驻（滚动板块列表时保持可见） */
.card.collect-bar { position: sticky; top: 0; z-index: 30; }
.form-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 10px 18px; margin-bottom: 8px;
}
label { display: block; font-size: 13.5px; color: #444; margin: 6px 0; }
input[type="text"], input[type="password"], input[type="number"], input[type="url"],
input[type="date"], input[type="time"], select, textarea {
  width: 100%; padding: 6px 8px; border: 1px solid #c9d2dd; border-radius: 4px;
  font-size: 14px; margin-top: 3px; background: #fff;
}
.tbl input[type="text"], .tbl input[type="number"] { width: auto; margin-top: 0; }
/* 任务调度表「操作」列：城市下拉 + 触发按钮同行，不被全局 select 撑满 */
.tbl .job-run-cell { white-space: nowrap; min-width: 180px; }
.tbl .job-run-cell select { width: auto; margin-top: 0; margin-right: 6px; vertical-align: middle; }
/* 操作列按钮/链接/下拉统一尺寸（<a> 继承 body 字体，<button>/<select> 不继承，默认行高不一） */
.tbl .job-run-cell .btn {
  font-family: inherit; font-size: 13px; line-height: 24px;
  height: 26px; padding: 0 8px; vertical-align: middle;
}
.tbl .job-run-cell select { font-family: inherit; font-size: 13px; height: 26px; }
/* 任务调度表「任务」列收窄、「描述」列超长省略（悬停 title 看全文） */
.tbl th.job-name-col { width: 130px; }
.tbl td.cell-desc { max-width: 260px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.tbl td.job-sched-cell { white-space: nowrap; }
.form-actions { margin-top: 14px; display: flex; gap: 10px; }
/* 任务编辑子页：分卡 + 蓝色小节条 + chip 复选；整表居中（页头是居中标题） */
.te-form { max-width: 760px; margin: 0 auto; }
.te-actions { justify-content: center; }
.te-card { padding: 18px 22px; }
.te-sec {
  margin: 0 0 12px; font-size: 15px; color: #1d4e89;
  padding-left: 9px; border-left: 3px solid #1a6fc4; line-height: 1.2;
}
.te-now {
  display: inline-block; margin: 0 0 12px; padding: 5px 12px;
  background: #eef5fc; border: 1px solid #c3d9ef; border-radius: 14px;
  font-size: 13px; color: #1a5a96;
}
.te-now b { color: #134a7e; }
.te-mode { display: flex; gap: 22px; margin: 2px 0 12px; }
.te-mode label { display: flex; align-items: center; gap: 6px; margin: 0; font-size: 14px; color: #333; }
.te-mode input { width: auto; margin: 0; }
.te-sched { margin-bottom: 2px; }
.te-fields > label, .te-fields > div { margin-bottom: 10px; }
.te-label { display: block; font-size: 13.5px; color: #444; margin-bottom: 5px; }
.te-chips { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.te-chips label {
  display: flex; align-items: center; gap: 5px; margin: 0;
  padding: 4px 10px; border: 1px solid #dbe3ec; border-radius: 14px;
  background: #fafbfd; font-size: 13.5px; font-weight: 400; color: #333;
  cursor: pointer;
}
.te-chips label:has(input:checked) { border-color: #1a6fc4; background: #eef5fc; color: #134a7e; }
.te-chips input { width: auto; margin: 0; }
.te-actions { margin: 4px 0 10px; }
.form-narrow { max-width: 420px; }
.checks { display: flex; gap: 24px; margin: 8px 0; }
.check { display: flex; align-items: center; gap: 6px; }
.check input { width: auto; }
.filterbar { display: flex; gap: 10px; align-items: center; margin: 10px 0; flex-wrap: wrap; }
.filterbar input, .filterbar select { width: auto; min-width: 140px; margin-top: 0; }
/* 行内表单控件等高：select/input/date/按钮统一 32px（按钮默认不继承字体且行高偏小） */
.filterbar input, .filterbar select { height: 32px; box-sizing: border-box; }
.filterbar .btn {
  height: 32px; padding: 0 14px; font-size: 14px; font-family: inherit;
  display: inline-flex; align-items: center; box-sizing: border-box;
}
.filterbar-extra { display: inline-flex; gap: 6px; margin-left: auto; }

/* 状态行（登录态 + 采集操作） */
.status-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.status-row .spacer { flex: 1; }
.status-row .inline-cb { display: inline-flex; align-items: center; gap: 3px; font-size: 13px; }
.status-row .inline-cb input { width: auto; margin-top: 0; }
/* 行情采集页「采集」列（多选采集项） */
.tbl td.collect-cb { white-space: nowrap; }
.tbl td.collect-cb .inline-cb { display: inline-flex; align-items: center; gap: 3px; font-size: 13px; margin-right: 10px; }
.tbl td.collect-cb .inline-cb input { width: auto; margin-top: 0; }

/* 页头：标题 + 主操作 */
.page-head { display: flex; align-items: center; justify-content: space-between; margin: 10px 0 14px; }
.page-head h1 { margin: 0; }
/* 页头变体：标题居中，返回按钮靠右（与谈判评估子页同款） */
.page-head.assess-head { display: block; position: relative; text-align: center; margin-bottom: 18px; }
.page-head.assess-head h1 { margin-bottom: 0; }
.page-head.assess-head .head-back { position: absolute; right: 0; top: 50%; transform: translateY(-50%); }
.page-head.assess-head .head-back:hover { transform: translateY(calc(-50% - 1px)); }
.card-title { margin-top: 0; }
.kpi-unit { font-size: 14px; font-weight: 400; color: #888; }
.hint { font-size: 12.5px; margin: 4px 0 10px; }
.mono-sm { font-family: Consolas, monospace; font-size: 12.5px; }
.empty-cell { text-align: center; padding: 18px 8px !important; }

/* 状态徽章 */
.badge-status {
  display: inline-block; border-radius: 3px; padding: 1px 8px;
  font-size: 12px; white-space: nowrap; background: #eef0f3; color: #555;
}
.st-self { background: #e7f6ec; color: #1d7a3d; }
.st-rent { background: #ede7f6; color: #5e35b1; }
.st-listed { background: #e8f1fc; color: #1a6fc4; }
.st-watch { background: #fdf3e3; color: #b26a00; }
.st-sold { background: #eef0f3; color: #888; }

/* 表格数字列右对齐 */
.tbl th.num, .tbl td.num { text-align: right; font-variant-numeric: tabular-nums; }

/* 行内操作：紧凑链接式 */
.row-actions { white-space: nowrap; font-size: 13px; }
.row-actions a { margin-right: 8px; }

/* 房源列表手风琴：点击行展开/收起详情 */
.acc-toggle { width: 1.6em; text-align: center; color: #98a6b8; cursor: pointer; user-select: none; }
.tbl .acc-row { cursor: pointer; }
.tbl .acc-row:hover td { background: #eef5ff; }
.tbl .acc-row.acc-open .acc-toggle { color: #1a6fc4; }
.tbl tr.acc-detail td { background: #f7fafc !important; border-top: 0; padding: 10px 16px 14px; }
.acc-body { display: flex; flex-wrap: wrap; gap: 12px 24px; font-size: 13px; }
.acc-group {
  flex: 1 1 200px; min-width: 190px;
  background: #fff; border: 1px solid #e3eaf2; border-radius: 6px;
  padding: 8px 12px 10px;
}
.acc-group-title {
  font-size: 12px; color: #7a8798; letter-spacing: .05em;
  border-bottom: 1px solid #edf2f7; padding-bottom: 4px; margin-bottom: 5px;
}
/* 分组标题作跳转链接/提交按钮（买入页 ①②③）：加大字号、链接色 */
a.acc-group-link, button.acc-group-link {
  font-size: 15px; font-weight: 600; color: #1a6fc4; font-family: inherit;
}
a.acc-group-link { display: block; text-decoration: none; }
a.acc-group-link:hover { text-decoration: underline; }
button.acc-group-link {
  background: none; border: none; border-bottom: 1px solid #edf2f7;
  width: 100%; text-align: left; cursor: pointer; padding: 0 0 4px; margin: 0 0 5px;
}
.acc-item { display: flex; justify-content: space-between; gap: 12px; padding: 2px 0; }
.acc-item span:last-child { text-align: right; }
.acc-label { color: #7a8798; }
.acc-group-wide { flex-basis: 100%; }
.acc-note {
  flex-basis: 100%; color: #5a6a7c;  background: #fff; border: 1px solid #e3eaf2; border-radius: 6px;
  padding: 6px 12px;
}
.link-act {
  background: none; border: none; padding: 0; cursor: pointer;
  color: #1a6fc4; font-size: 13px;
}
.link-act:hover { text-decoration: underline; }
.link-act.danger { color: #c0392b; }

/* 登录框 */
.login-box {
  max-width: 360px; margin: 90px auto; background: #fff; border-radius: 8px;
  padding: 28px 30px; border: 1px solid #e3e8ee;
}
.login-box h1 { margin-top: 0; }

/* 卡片网格 / KPI */
.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 14px; }
.nav-card { color: #1f3a5f; font-size: 16px; text-align: center; padding: 26px 10px; }
.nav-card:hover { text-decoration: none; border-color: #1a6fc4; }
.kpi-row { display: flex; gap: 14px; flex-wrap: wrap; margin: 12px 0; }
/* 驾驶舱：资产/现金流 左右双栏面板，面板内 2×2 指标格 */
.kpi-duo { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 12px 0;
  align-items: stretch; }
@media (max-width: 1000px) { .kpi-duo { grid-template-columns: 1fr; } }
.kpi-panel {
  background: #fff; border: 1px solid #e3e8ee; border-radius: 8px;
  padding: 14px 18px 16px;
  display: flex; flex-direction: column;   /* 两面板同高且内容区填满拉齐 */
}
.kpi-panel-title {
  margin: 0 0 12px; padding-bottom: 10px; font-size: 15px; color: #1f3a5f;
  border-bottom: 1px solid #eef1f5;
}
/* grid-auto-rows:1fr：面板内两行指标格等高；配合面板 flex 填满，两面板 8 格全同高 */
.kpi-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px;
  grid-auto-rows: 1fr; }
.kpi-panel > .kpi-grid { flex: 1; }
.kpi-grid .kpi {
  min-width: 0; margin: 0; background: #f8fafc; border: 1px solid #eef1f5;
  border-radius: 6px; padding: 12px 14px;
}
.kpi-grid .kpi:hover { border-color: #d5e3f3; background: #f5f9fd; }
.kpi { min-width: 170px; margin: 0; }
.kpi-label { font-size: 13px; color: #777; }
.kpi-value { font-size: 24px; font-weight: 700; color: #1f3a5f; margin: 4px 0; }
.kpi-sub { font-size: 12px; color: #999; }
/* 涨跌配色（中式：涨红跌绿） */
.trend-up { color: #c0392b; }
.trend-down { color: #27ae60; }
/* 市场动态：挂牌动态 banner（深蓝渐变横幅 + 白色指标 + 周切换） */
.pulse-banner {
  background: linear-gradient(120deg, #1f3a5f 0%, #2b5a8f 60%, #1a6fc4 100%);
  color: #fff; border-radius: 10px; padding: 16px 22px 18px; margin: 14px 0 8px;
  box-shadow: 0 2px 10px rgba(31, 58, 95, .25);
}
.pulse-banner-head {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 8px;
}
.pulse-banner-title { font-size: 17px; font-weight: 600; }
.pulse-banner-range { font-size: 13px; font-weight: 400; opacity: .8; margin-left: 6px; }
.pulse-week-nav { display: inline-flex; gap: 8px; }
.pulse-nav-btn {
  display: inline-block; padding: 4px 12px; border-radius: 14px; font-size: 13px;
  color: #fff; border: 1px solid rgba(255, 255, 255, .45); text-decoration: none;
}
.pulse-nav-btn:hover { background: rgba(255, 255, 255, .15); text-decoration: none; }
.pulse-nav-off { opacity: .4; cursor: default; }
.pulse-nav-off:hover { background: none; }
.pulse-stats { display: flex; gap: 34px; flex-wrap: wrap; margin-top: 14px; }
.pulse-stat-label { font-size: 12px; opacity: .75; }
.pulse-stat-value { font-size: 26px; font-weight: 700; margin: 2px 0; }
.pulse-stat-unit { font-size: 12px; font-weight: 400; opacity: .75; margin-left: 4px; }
.pulse-stat-sub { font-size: 11px; opacity: .7; }
.pulse-stat-avg { margin-left: auto; }
.pulse-up { color: #ff9d8a; }
.pulse-down { color: #7fe0a8; }
/* 贷款页 KPI 状态条：5 项横排 + 逐项手动校准 */
.kpi-grid-5 { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
.kpi-value-sm { font-size: 20px; }
.kpi-edit-btn {
  border: none; background: none; color: #1a6fc4; cursor: pointer;
  font-size: 12px; padding: 0 2px; vertical-align: middle;
}
.kpi-edit-btn:hover { color: #0d4f8f; }
.kpi-tag-manual {
  display: inline-block; background: #fff3e0; color: #b26a00; border-radius: 3px;
  font-size: 11px; padding: 0 4px; margin-right: 2px;
}
.kpi-reset-btn {
  border: none; background: none; color: #1a6fc4; cursor: pointer; font-size: 11px; padding: 0;
}
.kpi-edit-form { gap: 6px; margin-top: 6px; align-items: center; }
.kpi-edit-form input { width: 110px; padding: 3px 6px; font-size: 12px; }
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 800px) { .two-col { grid-template-columns: 1fr; } }

/* 提醒条 */
.reminder { padding: 6px 10px; border-left: 4px solid #ccc; margin: 6px 0; font-size: 13.5px; background: #fafbfc; }
.reminder-high { border-left-color: #c0392b; background: #fdf0ef; }
.reminder-mid { border-left-color: #d4880f; background: #fdf6ea; }
.reminder-low { border-left-color: #1a6fc4; background: #eef5fc; }
.reminder-title { font-weight: 600; margin-right: 8px; }
.reminder a { margin-left: 8px; }
.section { margin-bottom: 32px; }
.nowrap { white-space: nowrap; }

/* tabs */
.tabs { display: flex; gap: 0; margin: 12px 0 8px; border-bottom: 2px solid #e0e2e6; }
.tab { display: inline-block; padding: 8px 18px; border-radius: 6px 6px 0 0;
  font-size: 14px; color: #555; background: #eef0f3; margin-right: 2px;
  text-decoration: none; transition: background .15s; }
.tab:hover { background: #dde0e4; text-decoration: none; }
.tab.active { background: #fff; color: #1a6fc4; font-weight: 600;
  border: 2px solid #e0e2e6; border-bottom-color: #fff; }
/* 行情页 tabs 行右侧的全局城市筛选 */
.tabs-city {
  margin-left: auto;   /* .tabs 为 flex，右对齐 */
  align-self: center;
  width: auto;         /* 覆盖通用 select 的 width:100% */
  min-width: 110px;
  margin-top: 0;       /* 覆盖通用 select 的 margin-top:3px */
  margin-bottom: 5px;  /* 抬起，不与 .tabs 底部 2px 边框重叠 */
  padding: 4px 8px;
}
/* 采集页 tabs 行右侧操作组：验证安居客 + 验证态 pill + 全局城市筛选 */
.tabs-right { margin-left: auto; display: flex; align-items: center;
  gap: 8px; padding-bottom: 4px; flex-wrap: wrap; }
.tabs-right .tabs-city { margin-left: 0; }
.tabs-right form.inline { margin: 0; }

/* 政策台账：全国统一标准子块 + 版本历史折叠区 */
.nation-sub { margin: 6px 0 10px; padding: 8px 12px;
  background: #fff8e6; border: 1px dashed #e0c060; border-radius: 6px; }
details.policy-details { margin: 10px 0; padding: 8px 12px;
  border: 1px solid #e0e2e6; border-radius: 6px; background: #fafbfc; }
details.policy-details summary { cursor: pointer; font-weight: 600;
  color: #1a6fc4; }
details.policy-details[open] summary { margin-bottom: 8px; }

/* 装修页施工阶段手风琴：折叠态单行概览（序号·阶段名·状态·小计·工期） */
details.stage-acc { margin: 6px 0; }
details.stage-acc summary { display: flex; gap: 10px; align-items: center;
  flex-wrap: wrap; }
details.stage-acc summary .muted { font-weight: normal; font-size: 12.5px; }

/* pagination */
.pagination { margin-top: 16px; display: flex; gap: 4px; align-items: center; }
.pagination a, .pagination strong { display: inline-block; padding: 5px 10px;
  border-radius: 4px; font-size: 13px; }
.pagination a { background: #eef0f3; color: #1a6fc4; cursor: pointer; }
.pagination a:hover { background: #dde0e4; text-decoration: none; }
.pagination strong { background: #1a6fc4; color: #fff; }

/* 装修九阶段：时间线 chips + 阶段卡片头部 */
.stage-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 4px; }
.chip { display: inline-block; border: 1px solid #c9d2dd; border-radius: 14px;
  padding: 3px 12px; font-size: 13px; background: #f2f4f7; color: #555;
  white-space: nowrap; }
.chip a { color: inherit; }
.chip a:hover { text-decoration: underline; }
.chip .n { display: inline-block; min-width: 1.1em; font-weight: 700;
  color: #1a6fc4; margin-right: 4px; }
.chip-doing { background: #e8f1fc; border-color: #1a6fc4; color: #1a6fc4; }
.chip-done { background: #e7f6ec; border-color: #57a773; color: #1d7a3d; }
.chip-skip { background: #eef0f3; border-style: dashed; color: #999; }
.chip-fail { background: #fdecea; border-color: #b3261e; color: #b3261e; }
.chip-rec { border: 1.5px solid #1a6fc4; }
/* 材料清单进度列：加宽 + 居中，chip 不挤压换行 */
.col-progress { min-width: 110px; text-align: center; }

/* 手风琴步骤门禁：未完成前项时灰显禁用 */
.acc-group-link.is-disabled { color: #999; cursor: not-allowed; border: none;
  background: none; padding: 0; }
.acc-group-link.is-disabled:hover { text-decoration: none; color: #999; }
/* 手风琴分组标题行：①②③ 标题居左，步骤状态徽标居右同行 */
.acc-group-head { display: flex; align-items: center; justify-content: space-between;
  gap: 10px; border-bottom: 1px solid #edf2f7; padding-bottom: 4px; margin-bottom: 5px; }
.acc-group-head .acc-group-title { border-bottom: none; padding-bottom: 0; margin-bottom: 0; }
.acc-group-head button.acc-group-link { width: auto; }
.acc-group-head a.acc-group-link { display: inline; }
.stage-head { display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap; margin-bottom: 6px; }

/* 权重配置：类目分组 + 分值着色 */
.wgroup summary { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.wgroup-title { font-weight: 600; }
.wgroup-stats { font-weight: 400; font-size: 12.5px; margin-left: auto; }
.wgroup .tbl { margin: 8px 0 4px; background: #fff; }
.wgroup-add { margin: 4px 0 6px; }
.wgroup select { padding: 3px 4px; border: 1px solid #d5dce4; border-radius: 3px;
  font-size: 13px; }
.score-pos { color: #1d7a3d; font-weight: 600; }
.score-neg { color: #b3261e; font-weight: 600; }

/* 谈判选择题：胶囊 chip 组（单选/多选，点选高亮） */
.opt-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.opt-chip { display: inline-block; border: 1px solid #c9d2dd; border-radius: 14px;
  padding: 3px 12px; font-size: 13px; background: #f2f4f7; color: #555;
  cursor: pointer; user-select: none; white-space: nowrap; }
.opt-chip:hover { border-color: #1a6fc4; }
.opt-chip input { display: none; }
.opt-chip.on { background: #e8f1fc; border-color: #1a6fc4; color: #1a6fc4;
  font-weight: 600; }
.choice-group { border: 0; padding: 0; margin: 0 0 10px; }
.choice-group legend { font-weight: 600; font-size: .95em; padding: 0;
  margin-bottom: 3px; color: #333; }
.neg-summary { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-bottom: 10px; }
.neg-summary b { color: #1a6fc4; }
.neg-summary .num { text-align: left; }

/* 谈判详情页：阶段卡片 + 子块层级 */
.neg-phase > h2 { margin-top: 0; }
.neg-sub { margin: 16px 0 6px; padding-top: 12px;
  border-top: 1px solid #eef1f5; font-size: 1.05em; }
.neg-ro { margin: 2px 0 0; padding: 10px 12px;
  border: 1px dashed #c9d2dd; border-radius: 6px; background: #fafbfc; }
.neg-ro h3 { margin: 0 0 8px; }
.neg-ro .neg-summary { margin: 8px 0 4px; }
.neg-warn { margin: 2px 0; }
.neg-h4 { margin-bottom: 4px; }
.td-act { width: 70px; }
.col-dim { width: 110px; }
