/* 看板组件：指标卡/区块/表格/标签/风险档案弹窗。企业BI风格。 */

/* 区块卡片 */
.section {
  background: var(--c-card); border: 1px solid var(--c-border); border-radius: 6px;
  margin-bottom: 14px; overflow: hidden;
}
.section-header {
  padding: 11px 16px; border-bottom: 1px solid var(--c-border);
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  background: #fafbfc;
}
.section-title { font-size: 14px; font-weight: 600; color: var(--c-text); display: flex; align-items: center; gap: 8px; }
.section-title .sec-num {
  display: inline-block; width: 18px; height: 18px; line-height: 18px; text-align: center;
  background: var(--c-primary); color: #fff; border-radius: 4px; font-size: 11px; font-weight: 500;
}
.section-title .sec-sub { font-size: 12px; color: var(--c-text-3); font-weight: 400; }
.section-body { padding: 14px 16px; }

/* 指标卡 */
.metric-row { display: flex; gap: 12px; flex-wrap: wrap; }
.metric-row.cols-8 .metric-card { flex: 1 1 calc(12.5% - 12px); min-width: 110px; }
.metric-row.cols-6 .metric-card { flex: 1 1 calc(16.66% - 12px); min-width: 130px; }
.metric-row.cols-4 .metric-card { flex: 1 1 calc(25% - 12px); min-width: 150px; }
.metric-row.cols-3 .metric-card { flex: 1 1 calc(33.33% - 12px); min-width: 180px; }
.metric-card {
  background: #fff; border: 1px solid var(--c-border); border-radius: 6px; padding: 12px 14px;
  position: relative; transition: box-shadow .15s;
}
.metric-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,.06); }
.metric-card.risk-1 { border-left: 3px solid var(--c-red); }
.metric-card.risk-2 { border-left: 3px solid var(--c-orange); }
.metric-card.risk-3 { border-left: 3px solid var(--c-primary); }
.metric-card.good { border-left: 3px solid var(--c-green); }
.metric-label { font-size: 12px; color: var(--c-text-3); margin-bottom: 6px; }
.metric-value { font-size: 26px; font-weight: 600; color: var(--c-text); line-height: 1.2; }
.metric-value .unit { font-size: 12px; font-weight: 400; color: var(--c-text-3); margin-left: 2px; }
.metric-value .pct { font-size: 18px; }
.metric-period { font-size: 11px; color: var(--c-text-3); margin-top: 4px; }
.metric-diff { font-size: 11px; margin-top: 4px; }
.metric-diff.up { color: var(--c-red); }
.metric-diff.down { color: var(--c-green); }
.metric-diff.flat { color: var(--c-text-3); }

/* 结论行 */
.conclusion {
  background: var(--c-primary-bg); border-left: 3px solid var(--c-primary);
  padding: 10px 14px; border-radius: 4px; font-size: 13px; color: var(--c-text);
  line-height: 1.7; margin-bottom: 14px;
}
.conclusion b { color: var(--c-primary); }
.conclusion .hl-red { color: var(--c-red); font-weight: 600; }
.conclusion .hl-orange { color: var(--c-orange); font-weight: 600; }

/* 管理关注列表 */
.focus-list { display: flex; flex-direction: column; gap: 10px; }
.focus-item {
  display: flex; align-items: flex-start; gap: 8px; padding: 10px 12px;
  background: #fafbfc; border-radius: 4px; font-size: 13px; color: var(--c-text-2); line-height: 1.6;
}
.focus-item .f-icon { font-size: 14px; flex-shrink: 0; }
.focus-item .f-text { flex: 1; }
.focus-item .f-text b { color: var(--c-text); }

/* 表格 */
.table-wrap { width: 100%; overflow-x: auto; }
.search-box {
  width: 240px; height: 28px; padding: 0 10px; border: 1px solid var(--c-border);
  border-radius: 4px; font-size: 12px; margin-bottom: 8px;
}
.search-box:focus { outline: none; border-color: var(--c-primary); }
.data-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.data-table th {
  background: #fafbfc; color: var(--c-text-2); font-weight: 500; text-align: left;
  padding: 9px 10px; border-bottom: 1px solid var(--c-border); white-space: nowrap; position: sticky; top: 0;
}
.data-table th.sortable { cursor: pointer; user-select: none; }
.data-table th.sortable:hover { color: var(--c-primary); }
.data-table td {
  padding: 8px 10px; border-bottom: 1px solid var(--c-border); color: var(--c-text);
  vertical-align: top;
}
.data-table td.wrap { white-space: normal; word-break: break-all; max-width: 240px; }
/* 紧凑表：列按内容收缩，不撑满宽度（工程部表/城市店表列少时避免间距过大） */
.data-table.table-compact { width: auto; min-width: 100%; }
.data-table.table-compact th, .data-table.table-compact td { white-space: nowrap; }
.data-table tbody tr:hover { background: #f7f9fc; }
.data-table tbody tr.clickable { cursor: pointer; }
.data-table tbody tr.clickable:hover { background: var(--c-primary-bg); }
.data-table .num { text-align: right; font-variant-numeric: tabular-nums; }

/* 分页 */
.pagination {
  display: flex; align-items: center; gap: 10px; padding: 10px 0; font-size: 12px; color: var(--c-text-3);
  justify-content: flex-end;
}
.pagination button {
  height: 26px; padding: 0 10px; border: 1px solid var(--c-border); background: #fff;
  border-radius: 4px; cursor: pointer; font-size: 12px; color: var(--c-text-2);
}
.pagination button:hover:not(:disabled) { border-color: var(--c-primary); color: var(--c-primary); }
.pagination button:disabled { opacity: .5; cursor: not-allowed; }

/* 标签 */
.tag {
  display: inline-block; padding: 2px 7px; border-radius: 3px; font-size: 11px;
  margin-right: 4px; line-height: 16px; white-space: nowrap;
}
.tag-level1 { background: var(--c-red-bg); color: var(--c-red); border: 1px solid #fbc4c4; }
.tag-level2 { background: var(--c-orange-bg); color: var(--c-orange); border: 1px solid #f5dab1; }
.tag-level3 { background: #f4f4f5; color: var(--c-text-3); border: 1px solid var(--c-border); }
.tag-cat-A { background: var(--c-red-bg); color: var(--c-red); border: 1px solid #fbc4c4; font-weight: 500; }
.tag-cat-B { background: var(--c-orange-bg); color: var(--c-orange); border: 1px solid #f5dab1; }
.tag-cat-C { background: #fef0f0; color: #d93025; border: 1px solid #fbc4c4; }
.tag-cat-D { background: var(--c-primary-bg); color: var(--c-primary); border: 1px solid #b3d4f7; }

/* 等级徽章 */
.level-badge {
  display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 11px; font-weight: 500;
}
.level-badge.l1 { background: var(--c-red); color: #fff; }
.level-badge.l2 { background: var(--c-orange); color: #fff; }
.level-badge.l3 { background: #e4e7ed; color: var(--c-text-3); }

/* 图表容器 */
.chart-box { width: 100%; height: 280px; }
.chart-box.sm { height: 200px; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.grid-2 .section { margin-bottom: 0; }
@media (max-width: 1100px) { .grid-2 { grid-template-columns: 1fr; } }

/* tab */
.tab-bar {
  display: flex; gap: 2px; border-bottom: 1px solid var(--c-border); margin-bottom: 12px;
}
.tab-item {
  padding: 6px 12px; cursor: pointer; font-size: 12px; color: var(--c-text-3);
  border-bottom: 2px solid transparent; transition: all .15s;
}
.tab-item:hover { color: var(--c-primary); }
.tab-item.active { color: var(--c-primary); border-bottom-color: var(--c-primary); font-weight: 500; }
.dim-note { font-size: 11px; color: var(--c-text-3); font-weight: 400; }

/* 风险档案弹窗 */
.modal {
  position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 200;
  display: none; align-items: flex-start; justify-content: center; padding: 30px 20px; overflow-y: auto;
}
.modal.show { display: flex; }
.modal-content {
  background: #fff; border-radius: 8px; width: 900px; max-width: 100%; max-height: 88vh;
  display: flex; flex-direction: column; box-shadow: 0 8px 32px rgba(0,0,0,.15);
}
.modal-header {
  padding: 14px 20px; border-bottom: 1px solid var(--c-border); display: flex;
  align-items: center; justify-content: space-between;
}
.modal-header h3 { font-size: 15px; color: var(--c-text); }
.modal-close { font-size: 22px; cursor: pointer; color: var(--c-text-3); line-height: 1; }
.modal-close:hover { color: var(--c-text); }
.modal-body { padding: 16px 20px; overflow-y: auto; }

/* 报警时间轴 */
.timeline { position: relative; padding-left: 20px; }
.timeline::before {
  content: ''; position: absolute; left: 6px; top: 6px; bottom: 6px; width: 2px; background: var(--c-border);
}
.tl-item { position: relative; padding-bottom: 16px; }
.tl-item::before {
  content: ''; position: absolute; left: -20px; top: 4px; width: 10px; height: 10px;
  border-radius: 50%; background: #fff; border: 2px solid var(--c-primary);
}
.tl-item.lvl1::before { border-color: var(--c-red); background: var(--c-red); }
.tl-item.lvl2::before { border-color: var(--c-orange); background: var(--c-orange); }
.tl-item.complaint::before { border-color: var(--c-green); background: var(--c-green); }
.tl-time { font-size: 12px; color: var(--c-text-3); margin-bottom: 2px; }
.tl-level { display: inline-block; margin-left: 6px; }
.tl-content { font-size: 12px; color: var(--c-text-2); margin-top: 3px; line-height: 1.5; }
.tl-ai { font-size: 11px; color: var(--c-primary); margin-top: 2px; }

/* 项目档案信息网格 */
.profile-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px 20px; margin-bottom: 16px; }
.profile-item { font-size: 12px; }
.profile-item .pl { color: var(--c-text-3); margin-bottom: 2px; }
.profile-item .pv { color: var(--c-text); font-weight: 500; }

.profile-section-title { font-size: 13px; font-weight: 600; color: var(--c-text); margin: 16px 0 10px; padding-left: 8px; border-left: 3px solid var(--c-primary); }

/* V0水印 */
.v0-watermark { font-size: 11px; color: #999; margin-left: 10px; font-weight: normal; }

/* ⓘ口径说明图标 */
.glossary-tag { display: inline-block; width: 16px; height: 16px; line-height: 15px; text-align: center;
  border-radius: 50%; background: #e8e8e8; color: #888; font-size: 10px; cursor: pointer; margin-left: 4px; vertical-align: middle; }
.glossary-tag:hover { background: var(--c-primary, #00a878); color: #fff; }

/* 口径说明卡 */
.glossary-card { z-index: 9999; width: 360px; max-height: 80vh; overflow-y: auto; background: #fff; border: 1px solid #e0e0e0;
  border-radius: 6px; box-shadow: 0 4px 16px rgba(0,0,0,0.12); padding: 12px 14px; font-size: 12px; }
.glossary-card .gc-title { font-size: 13px; font-weight: 600; color: var(--c-text, #333); margin-bottom: 8px; }
.glossary-card .gc-row { display: flex; margin-bottom: 6px; gap: 6px; }
.glossary-card .gc-k { color: #999; min-width: 56px; flex-shrink: 0; }
.glossary-card .gc-v { color: var(--c-text, #333); flex: 1; word-break: break-all; }
.glossary-card .gc-status { color: #e6a23c; }
.glossary-card .gc-detail { margin: 8px 0; padding: 8px 10px; background: #f8f9fa; border-radius: 4px; }
.glossary-card .gc-detail-row { display: flex; gap: 6px; margin-bottom: 6px; }
.glossary-card .gc-detail-row:last-child { margin-bottom: 0; }
.glossary-card .gc-detail-tag { flex-shrink: 0; min-width: 72px; font-weight: 600; color: #00a878; }
.glossary-card .gc-detail-text { flex: 1; color: var(--c-text, #333); word-break: break-all; }
.glossary-card .gc-footer { margin-top: 8px; padding-top: 8px; border-top: 1px dashed #e0e0e0; color: #888; line-height: 1.6; }

/* M3 ABCD 筛选标准常驻表 */
.abcd-criteria { margin-top: 14px; }
.abcd-criteria .abcd-title { font-size: 13px; font-weight: 600; color: var(--c-text, #333); margin-bottom: 8px; }
.abcd-table { font-size: 12px; }
.abcd-table th { background: #f5f7fa; color: #666; font-weight: 500; }
.abcd-table td { vertical-align: middle; }
.abcd-table .abcd-tag-abcd { font-weight: 600; white-space: nowrap; }
.abcd-table .abcd-a { color: #d93025; }
.abcd-table .abcd-b { color: #e6a23c; }
.abcd-table .abcd-c { color: #f56c6c; }
.abcd-table .abcd-d { color: #909399; }
.abcd-table .abcd-total td { background: #fafafa; font-weight: 600; border-top: 2px solid #e0e0e0; }

/* M4 人工研判标准常驻区块 */
.judge-criteria { margin-top: 14px; }
.m4-keynote { font-size: 14px; color: #d93025; background: #fef0f0; border-left: 4px solid #d93025; padding: 10px 14px; margin: 0 0 10px; line-height: 1.6; }
.judge-criteria .judge-title { font-size: 13px; font-weight: 600; color: var(--c-text, #333); margin-bottom: 8px; }
.judge-criteria .judge-ruler { font-size: 12px; color: #555; background: #fff8e1; border-left: 3px solid #e6a23c; padding: 8px 10px; margin-bottom: 10px; line-height: 1.6; }
.judge-table { font-size: 12px; }
.judge-table th { background: #f5f7fa; color: #666; font-weight: 500; }
.judge-table td { vertical-align: middle; line-height: 1.6; }
.judge-table .judge-tag { font-weight: 600; white-space: nowrap; }
.judge-table .j-a { color: #d93025; }
.judge-table .j-b { color: #b07000; }
.judge-table .j-sub { font-size: 11px; color: #999; font-weight: 400; }
.judge-sub-title { font-size: 12px; font-weight: 600; color: #555; margin: 12px 0 6px; }
.judge-sub-table td { line-height: 1.7; }
.judge-sub-table .judge-num { width: 28px; text-align: center; font-weight: 600; color: #b07000; background: #fff8e1; }
.judge-signal-row { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.judge-signal { font-size: 11px; color: #555; background: #f5f7fa; border: 1px solid #e4e7ed; padding: 3px 8px; border-radius: 10px; }
.judge-rule-table { font-size: 12px; }
.judge-rule-table .j-red { color: #d93025; font-weight: 600; }
.judge-rule-table .j-yellow { color: #b07000; font-weight: 600; }
.judge-rule-table .j-gray { color: #909399; }
.judge-divider { height: 1px; background: #e0e0e0; margin: 14px 0; }
.judge-split { display: flex; gap: 12px; }
.judge-split-item { flex: 1; padding: 12px 14px; border-radius: 6px; border: 1px solid; }
.judge-split-item .js-num { font-size: 18px; font-weight: 700; margin-bottom: 2px; }
.judge-split-item .js-label { font-size: 13px; font-weight: 600; margin-bottom: 6px; }
.judge-split-item .js-desc { font-size: 12px; line-height: 1.6; }
.j-red-card { background: #fef0f0; border-color: #fbc4c4; color: #d93025; }
.j-red-card .js-desc { color: #666; }
.j-yellow-card { background: #fffbe6; border-color: #ffe58f; color: #b07000; }
.j-yellow-card .js-desc { color: #666; }

/* 重点关注三层下钻 */
.focus-item { border: 1px solid #f0f0f0; border-radius: 6px; padding: 10px 12px; margin-bottom: 8px; }
.focus-head { display: flex; align-items: center; gap: 8px; }
.focus-head .f-icon { font-size: 16px; }
.focus-head .f-text { flex: 1; font-size: 13px; }
.btn-mini { font-size: 12px; padding: 2px 10px; border: 1px solid var(--c-primary, #00a878);
  color: var(--c-primary, #00a878); background: #fff; border-radius: 12px; cursor: pointer; }
.btn-mini:hover { background: var(--c-primary, #00a878); color: #fff; }
.focus-drill { margin-top: 10px; }
.focus-conc { background: #fafafa; border-radius: 4px; padding: 8px 10px; margin-bottom: 8px; }
.focus-conc-title { font-size: 12px; color: #666; margin-bottom: 6px; }
.conc-row { display: flex; justify-content: space-between; font-size: 12px; padding: 2px 0; }
.conc-share { color: var(--c-primary, #00a878); font-weight: 500; }

/* 客诉业务分类树 */
.channel-tree { font-size: 13px; }
.channel-row { display: flex; justify-content: space-between; padding: 6px 12px; border-bottom: 1px dashed #eee; }
.channel-total { font-weight: 600; background: #fafafa; border-radius: 4px; }
.channel-sub { padding-left: 24px; color: #666; }
.channel-row .ch-value { font-weight: 500; }
.channel-row .unit { font-size: 11px; color: #999; margin-left: 2px; }

/* ===== V1 单页长报告 ===== */
.main-singlepage { padding: 0 24px 40px; }
.anchor-nav {
  position: sticky; top: 0; z-index: 50; background: #fff;
  border-bottom: 1px solid #ebeef5; padding: 10px 0; margin-bottom: 16px;
  display: flex; gap: 8px; flex-wrap: wrap;
}
.anchor-item {
  padding: 4px 14px; font-size: 13px; color: #606266; cursor: pointer;
  border-radius: 14px; text-decoration: none; border: 1px solid #ebeef5;
}
.anchor-item:hover, .anchor-item.active { background: #00a878; color: #fff; border-color: #00a878; }

.report-body { max-width: 1200px; margin: 0 auto; }
.report-section {
  background: #fff; border: 1px solid #ebeef5; border-radius: 8px;
  padding: 20px 24px; margin-bottom: 20px; scroll-margin-top: 60px;
}
.rs-loading { color: #c0c4cc; padding: 20px; text-align: center; }
.rs-error { color: #f56c6c; padding: 20px; }
.rs-header { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }

/* 三大模块章节大横幅（色编码 01绿/02红橙/03蓝深青） */
.module-banner {
  display: flex; align-items: stretch; gap: 14px;
  padding: 14px 16px; margin-bottom: 18px; margin-top: 8px;
  border-radius: 8px; border: 1px solid #ebeef5; background: #fff;
  break-inside: avoid;
}
.module-banner .mb-left { display: flex; align-items: stretch; gap: 10px; }
.module-banner .mb-num {
  font-size: 22px; font-weight: 700; color: #fff;
  width: 44px; height: 44px; border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
}
.module-banner .mb-bar { width: 4px; border-radius: 2px; }
.module-banner .mb-right { display: flex; flex-direction: column; justify-content: center; gap: 4px; }
.module-banner .mb-title { font-size: 17px; font-weight: 600; color: #1a1a1a; line-height: 1.3; }
.module-banner .mb-sub { font-size: 12px; color: #909399; line-height: 1.4; }
.module-1 { background: linear-gradient(90deg, #f0fbf7 0%, #fff 100%); border-color: #b7ecd9; }
.module-1 .mb-num { background: #00a878; }
.module-1 .mb-bar { background: #00a878; }
.module-2 { background: linear-gradient(90deg, #fff5f0 0%, #fff 100%); border-color: #f5cbb8; }
.module-2 .mb-num { background: #e8743a; }
.module-2 .mb-bar { background: #e8743a; }
.module-3 { background: linear-gradient(90deg, #f0f6fb 0%, #fff 100%); border-color: #b8d2e8; }
.module-3 .mb-num { background: #1d6fa5; }
.module-3 .mb-bar { background: #1d6fa5; }
.rs-num {
  display: inline-block; min-width: 28px; height: 28px; line-height: 28px;
  text-align: center; background: #00a878; color: #fff; border-radius: 4px;
  font-size: 14px; font-weight: 600; padding: 0 4px;
}
.rs-title { font-size: 18px; font-weight: 600; color: #303133; }
.rs-title-sub { font-size: 15px; font-weight: 600; color: #303133; }
.rs-sub { font-size: 12px; color: #909399; margin-left: auto; }
.rs-body { padding: 4px 0; }
.rs-note { font-size: 12px; color: #909399; margin-top: 12px; line-height: 1.6; }

/* 三周期同屏 */
.period-row { display: flex; gap: 16px; }
.period-col {
  flex: 1; border: 1px solid #ebeef5; border-radius: 6px; padding: 14px 16px;
}
.period-label { font-size: 13px; color: #606266; margin-bottom: 4px; font-weight: 500; }
.period-range { font-size: 11px; color: #909399; margin-bottom: 8px; }
.period-rate { font-size: 24px; font-weight: 600; color: #00a878; }
.period-rate-pending { color: #e6a23c; font-size: 16px; }
.period-num { margin: 8px 0; }
.period-num .num { font-size: 22px; font-weight: 600; color: #303133; }
.period-num .unit, .period-rate .unit { font-size: 11px; color: #909399; margin-left: 4px; font-weight: 400; }
.period-sub { font-size: 12px; color: #909399; }

/* Q3达成率卡配色（>=100达标绿/80-100预警黄/<80超标红） */
.period-col-achieve { border-color: #b3d8ff; background: #f0f7ff; }
.achieve-ok { color: #00a878 !important; }
.achieve-warn { color: #e6a23c !important; }
.achieve-bad { color: #f56c6c !important; }

/* 4列布局（本周/本月/Q3/Q3达成率） */
.period-row-4 .period-col { flex: 1; }

/* 01模块大区排名条（经自渠客诉率达成排名，越低越好） */
.region-rank-bar { display: flex; align-items: center; gap: 10px; margin-top: 10px; padding: 8px 14px; border-radius: 6px; font-size: 13px; border-left: 4px solid #909399; background: #f5f7fa; }
.region-rank-bar .rr-label { font-weight: 600; color: #606266; flex-shrink: 0; }
.region-rank-bar .rr-rank { font-size: 14px; color: #303133; }
.region-rank-bar .rr-rank b { font-size: 18px; margin: 0 2px; }
.region-rank-bar .rr-tag { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 12px; font-weight: 600; color: #fff; flex-shrink: 0; }
.region-rank-bar .rr-text { color: #606266; }
.region-rank-good { border-left-color: #00a878; background: #e8f7f1; }
.region-rank-good .rr-tag { background: #00a878; }
.region-rank-warn { border-left-color: #e6a23c; background: #fdf6ec; }
.region-rank-warn .rr-tag { background: #e6a23c; }
.region-rank-bad { border-left-color: #f56c6c; background: #fef0f0; }
.region-rank-bad .rr-tag { background: #f56c6c; }
.region-rank-pending { border-left-color: #909399; background: #f5f7fa; }
.region-rank-pending .rr-text { color: #909399; }

/* 城市店色阶cell + 排名徽章 */
.rate-heat { display: inline-block; min-width: 48px; padding: 3px 8px; border-radius: 4px; font-weight: 600; font-size: 13px; text-align: center; }
.rank-badge { display: inline-block; width: 22px; height: 22px; line-height: 22px; border-radius: 50%; text-align: center; font-size: 12px; font-weight: 600; color: #fff; background: #909399; }
.rank-badge.rank-1 { background: #f56c6c; }
.rank-badge.rank-2 { background: #e6a23c; }
.rank-badge.rank-3 { background: #e6a23c; opacity: 0.8; }
.dept-cell { display: flex; flex-direction: column; gap: 2px; }
.dept-cell .dept-name { font-weight: 600; }
.dept-cell .dept-mgr { font-size: 12px; color: #606266; }

/* 指标卡行 */
.metric-row { display: flex; gap: 12px; }
.metric-row.cols-3 .metric-card { flex: 1; }
.metric-row.cols-4 .metric-card { flex: 1; }
.metric-row.cols-5 .metric-card { flex: 1; }
.metric-card {
  border: 1px solid #ebeef5; border-radius: 6px; padding: 12px 14px;
}
.metric-card.risk-1 { border-left: 3px solid #f56c6c; background: #fef5f5; }
.metric-card.risk-2 { border-left: 3px solid #e6a23c; }
.metric-card.risk-watch { border-left: 3px solid #f0b84e; background: #fffdf5; }
.metric-card.risk-neutral { border-left: 3px solid #c0c4cc; }
.metric-label { font-size: 12px; color: #909399; margin-bottom: 6px; }
.metric-value { font-size: 22px; font-weight: 600; color: #303133; }
.metric-value .unit { font-size: 11px; color: #909399; margin-left: 4px; font-weight: 400; }

/* 表头"高度预警"红字（城市店/工程部/项目经理/管家客诉表现表） */
.th-high-alert { color: #f56c6c; font-weight: 600; }

/* 等级标签 */
.tag { display: inline-block; padding: 1px 8px; border-radius: 3px; font-size: 12px; }
.tag-level1 { background: #fef0f0; color: #f56c6c; }
.tag-level2 { background: #fdf6ec; color: #e6a23c; }
.tag-level3 { background: #f4f4f5; color: #909399; }
.risk-tag { display: inline-block; padding: 1px 6px; margin-right: 4px; font-size: 11px;
  background: #fef0f0; color: #f56c6c; border-radius: 3px; }

/* 工程经理/项目经理单元格（高风险工地表） */
.mgr-cell { font-size: 12px; white-space: nowrap; }

/* 风险事实画像 */
.risk-fact { font-size: 11px; line-height: 1.6; color: #5a5a5a; }
.risk-fact .tag { font-size: 10px; padding: 0 5px; margin: 0 2px; }
.risk-fact-emo { margin-top: 4px; color: #d93025; font-size: 11px; }

/* 当前问题/核心原因文本 */
.issue-text { font-size: 12px; color: #303133; line-height: 1.5; }
.reason-text { font-size: 12px; color: #5a5a5a; line-height: 1.5; font-style: normal; }

/* 🟡关注跟进折叠区 */
.watch-fold-header {
  display: flex; align-items: center; gap: 8px; padding: 10px 14px;
  background: #fffdf5; border: 1px solid #f0d878; border-radius: 6px;
  cursor: pointer; user-select: none;
}
.watch-fold-header:hover { background: #fff8e6; }
.watch-fold-title { font-size: 13px; font-weight: 600; color: #b07000; }
.watch-fold-count { font-size: 12px; color: #909399; }
.watch-fold-arrow { margin-left: auto; font-size: 12px; color: #b07000; }
#m4-watch-body { margin-top: 8px; }

/* 🟡关注跟进"展开剩余"二级折叠（默认只展重点，剩余按需展开） */
.watch-rest-header {
  display: flex; align-items: center; justify-content: center;
  margin-top: 8px; padding: 8px 14px; background: #fafafa;
  border: 1px dashed #dcdfe6; border-radius: 6px; cursor: pointer; user-select: none;
}
.watch-rest-header:hover { background: #f5f7fa; }
.watch-rest-header .watch-fold-arrow { margin: 0; color: #909399; font-size: 12px; }
#risk-watch-rest-body { margin-top: 8px; }

/* 项目ID复制格 */
.pid-cell { cursor: pointer; color: #00a878; font-family: monospace; font-size: 11px; }
.link-btn { color: #00a878; cursor: pointer; font-size: 12px; text-decoration: underline; }

/* 本期治理建议（3.2标题前，模块03管理结论） */
.advice-box {
  border: 1px solid #d9e6f5; border-radius: 8px; padding: 14px 16px; margin-bottom: 18px;
  background: linear-gradient(90deg, #f5faff 0%, #fff 60%);
}
.advice-head { margin-bottom: 10px; }
.advice-num { background: #1d6fa5; }
.advice-list { display: flex; flex-direction: column; gap: 10px; }
.advice-item {
  border-left: 3px solid #c0c4cc; padding: 8px 12px; background: #fff; border-radius: 0 4px 4px 0;
}
.advice-item.advice-high { border-left-color: #f56c6c; }
.advice-item.advice-medium { border-left-color: #e6a23c; }
.advice-top { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.advice-idx { font-size: 15px; font-weight: 700; color: #303133; }
.advice-theme { font-size: 14px; font-weight: 600; color: #1a1a1a; }
.advice-prio-tag {
  font-size: 11px; padding: 1px 7px; border-radius: 3px; margin-left: auto;
}
.advice-high .advice-prio-tag { background: #fef0f0; color: #f56c6c; }
.advice-medium .advice-prio-tag { background: #fdf6ec; color: #e6a23c; }
.advice-why { font-size: 12px; color: #303133; line-height: 1.5; }
.advice-evidence { font-size: 11px; color: #909399; margin-top: 4px; line-height: 1.4; }

/* 工地主识别格（城市店｜项目地址 + 工程经理/项目经理副行） */
.site-cell { display: flex; flex-direction: column; gap: 3px; min-width: 160px; }
.site-main { font-size: 13px; color: #303133; line-height: 1.4; font-weight: 500; }
.site-shop { color: #00a878; font-weight: 600; }
.site-sep { color: #c0c4cc; margin: 0 4px; }
.site-addr { color: #303133; }
.site-mgr { font-size: 11px; color: #909399; line-height: 1.4; }
.timeline-site {
  font-size: 12px; color: #606266; margin-bottom: 8px; padding-bottom: 6px;
  border-bottom: 1px dashed #ebeef5;
}
.timeline-site .site-shop { color: #00a878; font-weight: 600; }

/* 时间轴展开行 */
.timeline-row > td { padding: 0 !important; background: #fafbfc; }
.timeline-box { padding: 14px 20px; }
.timeline-summary {
  font-size: 13px; color: #303133; background: #fff; border-left: 3px solid #00a878;
  padding: 8px 12px; margin-bottom: 12px; border-radius: 0 4px 4px 0;
}
.timeline-list { display: flex; flex-direction: column; gap: 8px; }
.tl-item {
  display: flex; gap: 12px; align-items: flex-start; padding: 8px 10px;
  background: #fff; border-radius: 4px; border-left: 3px solid #c0c4cc;
}
.tl-item.tl-level-一级 { border-left-color: #f56c6c; }
.tl-item.tl-level-二级 { border-left-color: #e6a23c; }
.tl-item.tl-complaint { border-left-color: #f56c6c; background: #fef9f9; }
.tl-time { font-size: 12px; color: #909399; min-width: 120px; }
.tl-level { min-width: 50px; }
.tl-content { flex: 1; font-size: 13px; color: #303133; line-height: 1.5; }

/* AI 占位框 */
.ai-placeholder {
  text-align: center; padding: 40px 20px; border: 1px dashed #dcdfe6;
  border-radius: 6px; background: #fafafa;
}
.ai-placeholder-icon { font-size: 36px; margin-bottom: 12px; }
.ai-placeholder-title { font-size: 16px; font-weight: 600; color: #e6a23c; margin-bottom: 8px; }
.ai-placeholder-desc { font-size: 13px; color: #606266; line-height: 1.6; margin-bottom: 12px; }
.ai-placeholder-rule { font-size: 12px; color: #909399; line-height: 1.6; }

/* 上传弹窗 */
.modal-wide { max-width: 640px; width: 90%; }
.upload-summary { margin: 16px 0; }
.sum-block { background: #f5f7fa; border-radius: 4px; padding: 10px 12px; margin-bottom: 8px; }
.sum-title { font-size: 13px; font-weight: 600; color: #303133; margin-bottom: 4px; }
.sum-line { font-size: 12px; color: #606266; line-height: 1.6; }
.sum-empty { font-size: 12px; color: #c0c4cc; text-align: center; padding: 12px; }
.upload-rates { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.upload-rates label { font-size: 12px; color: #606266; display: block; margin-bottom: 4px; }
.upload-rates input { width: 100%; height: 30px; border: 1px solid #dcdfe6; border-radius: 4px; padding: 0 8px; }
.upload-actions { text-align: right; }

/* V1 模块02/05 归纳表 */
.cell-sub { font-size: 11px; color: #909399; margin-top: 2px; }
.shop-tag { display: inline-block; padding: 1px 6px; margin: 1px 2px; font-size: 11px;
  background: #ecf5ff; color: #409eff; border-radius: 3px; }
.expand-row > td { background: #fafbfc !important; padding: 12px 20px !important; }
.expand-detail { font-size: 12px; color: #606266; line-height: 1.8; }
.fusion-proj-row { display: flex; align-items: center; gap: 8px; padding: 3px 0; }
.risk-src-tag { font-size: 11px; padding: 1px 6px; border-radius: 3px; background: #fdf6ec; color: #e6a23c; }
.risk-src-tag.src-complaint { background: #fef0f0; color: #f56c6c; }
.data-table .empty, .empty-state { text-align: center; color: #c0c4cc; padding: 16px; }

/* 城市店率录入 */
.rate-row { margin-bottom: 8px; }
.rate-row label { font-size: 12px; color: #606266; display: block; margin-bottom: 4px; }
.rate-row input { width: 100%; height: 30px; border: 1px solid #dcdfe6; border-radius: 4px; padding: 0 8px; }
.upload-shops-rates { margin-bottom: 16px; padding: 12px; background: #f5f7fa; border-radius: 4px; }
.ush-title { font-size: 13px; font-weight: 600; color: #303133; margin-bottom: 8px; }
.ush-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ush-row { display: flex; align-items: center; gap: 6px; }
.ush-name { font-size: 12px; color: #606266; min-width: 72px; }
.ush-row input { flex: 1; height: 28px; border: 1px solid #dcdfe6; border-radius: 4px; padding: 0 6px; font-size: 12px; }
.rate-cell { color: #00a878; font-weight: 600; }
.rate-pending { color: #e6a23c; font-size: 12px; }

/* === 板块三3.1 月度TOP3排名演变矩阵 === */
.mtx-wrap { overflow-x: auto; margin-bottom: 4px; }
.mtx-table { width: 100%; border-collapse: separate; border-spacing: 4px; min-width: 720px; }
.mtx-table th.mtx-rank-h { width: 44px; background: #f5f7fa; color: #606266; font-size: 12px; font-weight: 600; vertical-align: middle; border-radius: 4px; }
.mtx-table th { font-weight: 600; font-size: 12px; color: #606266; padding: 6px 4px; text-align: center; position: relative; }
.mtx-table th.mtx-cur-h { background: #e8f7ef; color: #1bb434; }
.mtx-cur-tag { display: inline-block; margin-left: 3px; font-size: 10px; background: #1bb434; color: #fff; padding: 0 4px; border-radius: 3px; }
.mtx-cell { vertical-align: top; padding: 8px 6px; background: #fafbfc; border: 1px solid #ebeef5; border-radius: 6px; min-width: 78px; position: relative; }
.mtx-cell.mtx-cur { background: #f0faf3; border-color: #67c23a; box-shadow: 0 0 0 1px #67c23a inset; }
.mtx-cell.mtx-empty { background: #fbfbfb; }
.mtx-prob { font-size: 12px; font-weight: 600; color: #303133; line-height: 1.3; margin-bottom: 4px; word-break: break-all; }
.mtx-cnt { font-size: 16px; font-weight: 700; color: #2c7be5; }
.mtx-unit { font-size: 10px; color: #909399; font-weight: 400; margin-left: 1px; }
.mtx-tag { position: absolute; top: 4px; right: 4px; font-size: 10px; padding: 0 4px; border-radius: 3px; font-weight: 600; line-height: 1.5; }
.tag-up { background: #fef0f0; color: #e63757; }
.tag-down { background: #f0f9eb; color: #1bb434; }
.tag-new { background: #ecf5ff; color: #2c7be5; }
.tag-steady { background: #fdf6ec; color: #e6a23c; }
.mtx-scroll-hint { font-size: 11px; color: #c0c4cc; text-align: center; margin: 4px 0 10px; }
/* 变化洞察 */
.insight-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 6px; }
.insight-row { display: flex; align-items: flex-start; gap: 8px; padding: 8px 12px; border-radius: 6px; border-left: 3px solid #dcdfe6; background: #fafbfc; }
.insight-steady { border-left-color: #e6a23c; }
.insight-up { border-left-color: #e63757; }
.insight-down { border-left-color: #1bb434; }
.insight-badge { flex-shrink: 0; font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: 10px; background: #f5f7fa; color: #606266; white-space: nowrap; }
.insight-steady .insight-badge { background: #fdf6ec; color: #e6a23c; }
.insight-up .insight-badge { background: #fef0f0; color: #e63757; }
.insight-down .insight-badge { background: #f0f9eb; color: #1bb434; }
.insight-text { font-size: 13px; color: #303133; line-height: 1.6; }
.insight-empty { padding: 10px 12px; background: #fafbfc; border-radius: 6px; font-size: 13px; color: #909399; }

/* === 板块三3.2 客诉×报警共性问题TOP5 === */
.top5-list { display: flex; flex-direction: column; gap: 10px; margin-bottom: 6px; }
.top5-card { display: flex; gap: 12px; padding: 12px 14px; background: #fafbfc; border: 1px solid #ebeef5; border-radius: 8px; border-left: 4px solid #2c7be5; }
.top5-card:first-child { border-left-color: #e63757; background: #fff8f8; }
.top5-card:nth-child(2) { border-left-color: #f5a623; }
.top5-rank { flex-shrink: 0; width: 42px; height: 42px; border-radius: 50%; background: #2c7be5; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; }
.top5-card:first-child .top5-rank { background: #e63757; }
.top5-card:nth-child(2) .top5-rank { background: #f5a623; }
.top5-main { flex: 1; min-width: 0; }
.top5-prob { font-size: 15px; font-weight: 700; color: #303133; margin-bottom: 6px; }
.top5-stats { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.top5-stat { font-size: 13px; color: #606266; }
.top5-stat b { font-size: 16px; color: #e63757; margin-right: 2px; }
.top5-sep { color: #dcdfe6; }
.top5-shops { font-size: 12px; color: #606266; margin-bottom: 8px; }
.top5-perc { padding: 8px 10px; background: #fff; border-radius: 6px; border: 1px dashed #e4e7ed; }
.perc-label { font-size: 11px; color: #909399; margin-bottom: 6px; }
.perc-signals { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; }
.perc-item { margin-bottom: 8px; }
.perc-item:last-child { margin-bottom: 0; }
.perc-signal { display: inline-block; font-size: 11px; padding: 1px 8px; border-radius: 10px; background: #fdf6ec; color: #e6a23c; margin-bottom: 4px; }
.perc-quote { font-size: 12px; color: #606266; line-height: 1.6; font-style: italic; border-left: 2px solid #f5a623; padding-left: 8px; }
.perc-loading, .perc-empty { font-size: 12px; color: #c0c4cc; }

/* === 1.4/1.5 重点人员优先级归因标签（任务1：非排名，归因为什么被重点展示）=== */
.role-priority-tag { display: inline-block; font-size: 11px; padding: 2px 8px; border-radius: 10px; white-space: nowrap; }
.role-tag-ha { background: #fef0f0; color: #f56c6c; border: 1px solid #fbc4c4; }
.role-tag-wf { background: #fdf6ec; color: #e6a23c; border: 1px solid #f5dab1; }
.role-tag-tm { background: #ecf5ff; color: #2c7be5; border: 1px solid #c6e2ff; }
.role-tag-q3 { background: #f4f4f5; color: #909399; border: 1px solid #dcdfe6; }

/* === 3.2 TOP5 二级问题下钻（任务2）=== */
.top5-sub { padding: 8px 10px; background: #fff; border-radius: 6px; border: 1px dashed #e4e7ed; margin-bottom: 8px; }
.sub-label { font-size: 11px; color: #909399; margin-bottom: 6px; }
.sub-list { display: flex; flex-direction: column; gap: 6px; }
.sub-row { display: grid; grid-template-columns: 1fr auto auto auto; gap: 6px 8px; align-items: center; padding: 4px 0; border-bottom: 1px dotted #f0f0f0; }
.sub-row:last-child { border-bottom: none; }
.sub-name { font-size: 12px; font-weight: 600; color: #303133; }
.sub-num { font-size: 12px; color: #e63757; white-space: nowrap; }
.sub-num b { font-size: 14px; }
.sub-pct { font-size: 11px; color: #c0c4cc; margin-left: 2px; }
.sub-alarm { font-size: 11px; color: #2c7be5; white-space: nowrap; }
.sub-shops { font-size: 11px; color: #909399; white-space: nowrap; }
.sub-shop { display: inline-block; padding: 0 5px; margin: 0 2px; font-size: 11px; background: #f4f4f5; border-radius: 8px; }
.sub-rep { grid-column: 1 / -1; font-size: 11px; color: #606266; background: #fafbfc; padding: 3px 6px; border-radius: 4px; margin-top: 2px; display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.sub-rep-pid { color: #909399; font-family: Menlo, monospace; }
.sub-rep-shop { color: #2c7be5; }
.sub-rep-summary { color: #606266; flex: 1; min-width: 0; }
.sub-alarm-only { font-size: 11px; color: #b07000; background: #fdf6ec; padding: 4px 8px; border-radius: 4px; margin-top: 6px; }

/* 打印时二级下钻紧凑 */
@media print {
  .sub-row { grid-template-columns: 1fr auto auto auto; }
  .top5-card { break-inside: avoid; }
}

/* PDF版🔴高度预警卡片（替代跨页table，避免表头孤立/行跳跃） */
.risk-pdf-cards { display: flex; flex-direction: column; gap: 10px; }
.risk-pdf-card {
  border: 1px solid #fcd4d4; border-left: 4px solid #f56c6c;
  border-radius: 6px; padding: 10px 14px; background: #fffafa;
}
.risk-pdf-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.risk-pdf-idx { font-weight: 600; color: #f56c6c; font-size: 13px; white-space: nowrap; }
.risk-pdf-head .site-cell { flex: 1; min-width: 0; }
.risk-pdf-row { display: flex; gap: 8px; padding: 3px 0; font-size: 12.5px; line-height: 1.6; align-items: flex-start; }
.risk-pdf-label { color: #909399; min-width: 92px; flex-shrink: 0; }
.risk-pdf-row .issue-text, .risk-pdf-row .reason-text { color: #303133; }
.risk-pdf-pid .pid-cell { color: #606266; font-family: monospace; }
@media print {
  .risk-pdf-card { break-inside: avoid; }
  .risk-pdf-cards { break-inside: auto; }
}

/* 🔴卡责任人列 + 工地列精简（PDF版） */
.owner-cell .owner-line { display: flex; gap: 6px; font-size: 12.5px; line-height: 1.7; }
.owner-cell .owner-role { color: #909399; min-width: 48px; }
.owner-cell .owner-name { color: #303133; font-weight: 500; }
.site-cell-pdf .site-pid-small { color: #c0c4cc; font-size: 11px; font-family: monospace; margin-top: 2px; }

/* 模块02管理漏斗横幅（网页+PDF都显示） */
.m2-funnel {
  border: 1px solid #e4a8a8; border-left: 4px solid #f56c6c;
  border-radius: 6px; padding: 12px 16px; background: #fff8f8; margin-bottom: 14px;
}
.m2-funnel-title { font-weight: 600; color: #c45656; font-size: 13px; margin-bottom: 10px; }
.m2-funnel-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.m2-funnel-node { text-align: center; min-width: 64px; }
.m2-fn-num { font-size: 22px; font-weight: 700; color: #303133; line-height: 1.1; }
.m2-fn-label { font-size: 11px; color: #606266; margin-top: 2px; }
.m2-funnel-arrow { color: #c0c4cc; font-size: 18px; font-weight: 600; }
.m2-fn-watch .m2-fn-num { color: #e6a23c; }
.m2-fn-ha .m2-fn-num { color: #f56c6c; }
.m2-funnel-note { display: flex; gap: 16px; margin-top: 10px; flex-wrap: wrap; }
.m2-fn-tag { font-size: 11.5px; padding: 3px 8px; border-radius: 4px; }
.m2-fn-tag-ha { background: #fef0f0; color: #f56c6c; border: 1px solid #fcd4d4; }
.m2-fn-tag-watch { background: #fdf6ec; color: #e6a23c; border: 1px solid #f5dab1; }

/* 🟡PDF管理摘要：按城市店/按风险问题分布 */
.watch-dist-row { display: flex; gap: 14px; margin: 10px 0; flex-wrap: wrap; }
.watch-dist-block { flex: 1; min-width: 240px; background: #fafbfc; border: 1px solid #ebeef5; border-radius: 6px; padding: 10px 12px; }
.watch-dist-title { font-size: 12px; color: #606266; margin-bottom: 8px; font-weight: 600; }
.watch-dist-list { display: flex; flex-direction: column; gap: 4px; }
.watch-dist-item { display: flex; justify-content: space-between; align-items: center; font-size: 12.5px; }
.watch-dist-item .wd-name { color: #303133; }
.watch-dist-item .wd-num { color: #f56c6c; font-weight: 600; }

/* 模块01重点人员PDF提示卡 */
.kp-pdf-card { border: 1px solid #d9e6ff; border-left: 4px solid #2c7be5; border-radius: 6px; padding: 12px 16px; background: #f7faff; }
.kp-pdf-head { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.kp-pdf-title { font-weight: 600; color: #1a4d8f; font-size: 14px; }
.kp-pdf-stats { display: flex; gap: 12px; flex-wrap: wrap; }
.kp-stat { font-size: 12.5px; color: #606266; }
.kp-stat b { font-size: 16px; color: #303133; margin-right: 3px; }
.kp-stat-ha b { color: #f56c6c; }
.kp-stat-wf b { color: #e6a23c; }
.kp-pdf-body { border-top: 1px dashed #d9e6ff; padding-top: 8px; }
.kp-pdf-sub { font-size: 11.5px; color: #909399; margin-bottom: 6px; }
.kp-top-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; font-size: 12.5px; flex-wrap: wrap; }
.kp-top-idx { background: #2c7be5; color: #fff; width: 18px; height: 18px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; flex-shrink: 0; }
.kp-top-name { font-weight: 600; color: #303133; min-width: 56px; }
.kp-top-tag { font-size: 10.5px; padding: 1px 6px; border-radius: 3px; }
.kp-top-stat { color: #909399; font-size: 11.5px; }
.role-tag-ha { background: #fef0f0; color: #f56c6c; }
.role-tag-wf { background: #fdf6ec; color: #e6a23c; }
.role-tag-tm { background: #f0f9ff; color: #2c7be5; }
.role-tag-q3 { background: #f4f4f5; color: #909399; }

/* 模块03其他共性问题收尾区 */
.other-problems-box { background: #fafbfc; border: 1px solid #ebeef5; border-radius: 6px; padding: 10px 14px; margin-top: 12px; }
.other-problems-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.other-problems-title { font-weight: 600; color: #303133; font-size: 13px; }
.other-problems-total { font-size: 12px; color: #f56c6c; }
.other-problems-list { font-size: 12.5px; color: #606266; line-height: 1.9; }
.other-problems-list .op-item { display: inline; }
.other-problems-list .op-item b { color: #303133; }
.other-problems-list .op-sep { color: #dcdfe6; margin: 0 4px; }
.other-problems-note { font-size: 11px; color: #909399; margin-top: 8px; }

/* ===== 02定责管理模块 ===== */
/* 顶层模块切换器（01客诉管理 / 02定责管理） */
.module-switcher {
  display: flex; gap: 0; border-bottom: 1px solid var(--c-border, #e4e7ed);
  margin-bottom: 16px; background: #fafbfc; border-radius: 6px 6px 0 0;
}
.module-tab {
  padding: 11px 22px; font-size: 14px; font-weight: 500; color: #606266;
  cursor: pointer; border-bottom: 2px solid transparent; transition: all .2s;
  user-select: none;
}
.module-tab:hover { color: #00a878; }
.module-tab.active {
  color: #00a878; border-bottom-color: #00a878; background: #fff; font-weight: 600;
}
/* 模块面板：默认隐藏，active 显示 */
.module-pane { display: none; }
.module-pane-active { display: block; }

/* 定责区块 */
.acc-section { margin-bottom: 28px; }
.acc-section .module-banner { margin-bottom: 12px; }

/* 02定责模块导出播报长图按钮（模块内容区顶部，独立于顶栏PDF/Excel） */
.acc-toolbar {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 18px; padding: 10px 14px;
  background: #f0faf6; border: 1px solid #d4ebde; border-radius: 6px;
}
.acc-btn-export {
  background: #00a878; color: #fff; border: none;
  padding: 8px 16px; border-radius: 4px; font-size: 13px; font-weight: 600;
  cursor: pointer; white-space: nowrap;
}
.acc-btn-export:hover { background: #00966a; }
.acc-btn-export:disabled { background: #c0c4cc; cursor: not-allowed; }
.acc-toolbar-hint { font-size: 11.5px; color: #909399; }

/* 指标卡：绿主色（越高越好）+ 琥珀（越低越好，提示色）+ 灰（待录入） */
.acc-section .metric-card.good { border-left: 3px solid #00a878; }
.acc-section .metric-card.warn { border-left: 3px solid #e6a23c; background: #fffdf5; }
.acc-section .metric-card.pending { border-left: 3px solid #c0c4cc; background: #f7f8fa; }
.acc-section .metric-card .metric-value { font-size: 26px; font-weight: 600; color: #1a1a1a; }
.acc-section .metric-card .metric-label { font-size: 12.5px; color: #606266; }
.acc-section .metric-card .unit { font-size: 11px; color: #909399; }
.acc-section .metric-card .metric-num { font-size: 22px; font-weight: 600; color: #1a1a1a; }

/* 定责表格 */
.acc-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.acc-table th {
  background: #f5f7fa; color: #303133; font-weight: 600; padding: 9px 10px;
  text-align: left; border-bottom: 1px solid #e4e7ed; white-space: nowrap;
}
.acc-table td { padding: 8px 10px; border-bottom: 1px solid #f0f2f5; color: #303133; white-space: nowrap; }
.acc-table tbody tr:hover { background: #f7f9fc; }
.acc-table .td-strong { font-weight: 600; color: #1a1a1a; }
.acc-table tr.row-warn { background: #fffdf5; }
.acc-table tr.row-warn:hover { background: #fff8e8; }

/* 两类编号不同色背景，避免混淆 */
.acc-table .td-id-complaint {
  background: #eef6ff; color: #1d6fa5; font-family: 'Menlo', 'Consolas', monospace; font-size: 11.5px;
}
.acc-table .td-id-task {
  background: #f0fbf6; color: #00a878; font-family: 'Menlo', 'Consolas', monospace; font-size: 11.5px;
}

/* 状态标签 */
.status-tag {
  display: inline-block; padding: 2px 8px; border-radius: 3px; font-size: 11px;
  background: #f0f2f5; color: #606266;
}
.status-tag.tag-warn { background: #fff7e6; color: #e6a23c; }
.status-tag.tag-done { background: #f0fbf6; color: #00a878; }

/* P3 Tab */
.acc-tabs { display: flex; gap: 4px; margin-bottom: 12px; border-bottom: 1px solid #e4e7ed; }
.acc-tab {
  padding: 8px 18px; font-size: 13px; color: #606266; cursor: pointer;
  border-bottom: 2px solid transparent; transition: all .2s; user-select: none;
}
.acc-tab:hover { color: #00a878; }
.acc-tab.active { color: #00a878; border-bottom-color: #00a878; font-weight: 600; }
.acc-list-meta { font-size: 13px; color: #303133; margin-bottom: 8px; }
.acc-list-meta b { color: #00a878; font-size: 15px; }
.acc-list-wrap { max-height: 560px; overflow-y: auto; }
.acc-stat-table { width: auto; min-width: 280px; }

/* P4 查询表单 */
.acc-search-form { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; align-items: center; }
.acc-input {
  padding: 7px 11px; font-size: 13px; border: 1px solid #dcdfe6; border-radius: 4px;
  outline: none; transition: border-color .2s; min-width: 150px;
}
.acc-input:focus { border-color: #00a878; }
.acc-input::placeholder { color: #c0c4cc; }
.acc-detail-table { font-size: 11.5px; }
.acc-detail-table th, .acc-detail-table td { white-space: nowrap; }



/* 站点备案号页脚 */
.site-footer {
  text-align: center; padding: 18px 0 22px; font-size: 12px; color: #909399;
}
.site-footer a { color: #909399; text-decoration: none; }
.site-footer a:hover { color: #00a878; text-decoration: underline; }
