/* 证据组件样式（第 4 轮 Part E 改写；规格 D67–D70、§10、23.51–23.57）：事实与口径登记表与核验抽屉、事件表与记录卡片、
   时间线轴线与证据栏、知识图谱控件条与画布。专题页、研究记录页（/explore/{id}）、报告译文对话框与知识图谱检查页共用本文件，
   所以组件规则不依赖页签外壳；只用 --ss-* 令牌（深色主题随令牌切换），不用绿色（绿色只表示“已定位全文引用”），不写内联样式。
   本文件在 site.css 之后、pages.css 之前加载：与 pages.css 的 .formal-table 同名的规则写成更高的选择器权重。 */

/* ===== 1. 事实与口径：登记表（D67、§10.1、23.56） ===== */
.fact-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 14px}
.fact-filter{display:inline-flex;align-items:center;gap:8px;margin:0;color:var(--ss-muted);font-size:var(--ss-text-xs);font-weight:500;letter-spacing:.1em;white-space:nowrap}
.fact-filter select{width:auto;min-width:176px;max-width:240px;font-size:var(--ss-text-sm);font-weight:400;letter-spacing:0}
.fact-message{flex:1 1 240px;min-width:0;margin:0;color:var(--ss-ink-2);font-size:var(--ss-text-sm);overflow-wrap:anywhere}
.fact-message:empty{display:none}
.fact-region{min-width:0}
/* 正式表格：无表头底色，小号字距表头 + 1px 墨线，行间细线（与 pages.css 的 .formal-table 同值；报告译文对话框不加载 pages.css 时也成立） */
table.fact-table{width:100%;border-collapse:collapse;font-size:var(--ss-text-md);line-height:1.6;font-variant-numeric:tabular-nums;color:var(--ss-ink)}
table.fact-table.data-table :is(th,td){padding:10px 16px 10px 0;border-bottom:1px solid var(--ss-line);background:none;text-align:left;vertical-align:top}
table.fact-table.data-table :is(th,td):first-child{padding-left:8px}
table.fact-table.data-table :is(th,td):last-child{padding-right:0}
/* 正文行按第一行基线对齐（日期、核验状态与操作的字号不同，顶端对齐会错开几像素） */
table.fact-table.data-table tbody td{vertical-align:baseline}
table.fact-table.data-table thead th{padding-top:0;padding-bottom:6px;border-bottom-color:var(--ss-ink);color:var(--ss-muted);font-size:var(--ss-text-xs);font-weight:500;letter-spacing:.1em;white-space:nowrap}
table.fact-table thead th:nth-child(2){width:15rem}
table.fact-table thead th:nth-child(3){width:12.5rem}
table.fact-table thead th:nth-child(4){width:8rem}
.fact-table .fact-text{display:block;color:var(--ss-ink);font-weight:500;overflow-wrap:anywhere}
.fact-table .fact-date{display:block;color:var(--ss-ink)}
.fact-table .sub{display:block;margin-top:2px;color:var(--ss-muted);font-size:var(--ss-text-xs);line-height:1.5;overflow-wrap:anywhere}
/* 核验状态：正文墨色；拒绝为说明色；待核验对审核人员为提醒色（形状与颜色取 pages.css 的 .state-dot），不再用底色块 */
.fact-status{padding:0;border-radius:0;background:none;font-size:var(--ss-text-sm);white-space:normal}
/* 状态点与文字：容器的基线取文字基线（圆点仍竖直居中），表格行按基线排齐时状态列不再下沉 */
:is(.fact-table,.workbench-table,.axis-marks) .state-dot{align-items:baseline}
:is(.fact-table,.workbench-table,.axis-marks) .state-dot::before{align-self:center}
.fact-table td.fact-actions{white-space:nowrap}
button.fact-open{min-height:0;padding:0;border:0;background:none;box-shadow:none;color:var(--ss-accent-text);font-size:var(--ss-text-sm);font-weight:500;text-align:left}
button.fact-open:hover{background:none;text-decoration:underline;text-underline-offset:3px}
.fact-table .empty-cell{padding:28px 8px;color:var(--ss-muted);text-align:left}
.fact-pager{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;color:var(--ss-muted);font-size:var(--ss-text-sm)}
.fact-pager:empty{display:none}
.fact-range{margin-right:auto;font-variant-numeric:tabular-nums}

/* ===== 2. 事实与口径：核验抽屉（23.56；吸底操作条不遮住字段） ===== */
.fact-inspector{display:flex;flex-direction:column;gap:16px;min-width:0}
.fact-inspector-meta{margin:0;color:var(--ss-muted);font-size:var(--ss-text-sm);line-height:1.5}
.fact-inspector-title{margin:-10px 0 0;color:var(--ss-ink);font-family:var(--ss-font-serif);font-size:var(--ss-text-lg);font-weight:600;line-height:1.6;overflow-wrap:anywhere}
.fact-inspector>:is(section,.fact-review-form,.fact-history,.fact-history-empty){margin:0;padding-top:12px;border-top:1px solid var(--ss-line)}
.fact-section-label{margin:0 0 8px;color:var(--ss-muted);font-size:var(--ss-text-xs);font-weight:500;letter-spacing:.1em;line-height:1.5}
.fact-inspector>.fact-section-label{margin:0 0 -8px;padding-top:12px;border-top:1px solid var(--ss-line)}
.fact-checks .hint{margin:4px 0 0;color:var(--ss-muted);font-size:var(--ss-text-sm)}
.fact-checks .fact-check-passed{color:var(--ss-ink-2)}
.fact-checks .notice{margin:4px 0}
.fact-evidence-item{padding:10px 0;border-top:1px solid var(--ss-line-2)}
.fact-evidence-item:first-of-type{padding-top:0;border-top:0}
.fact-evidence-item h5{margin:0 0 6px;color:var(--ss-ink);font-size:var(--ss-text-md);font-weight:600;line-height:1.5;overflow-wrap:anywhere}
.fact-source-text{margin:0;color:var(--ss-ink-2);font-size:var(--ss-text-sm);line-height:1.75;overflow-wrap:anywhere}
.fact-source-text mark{padding:0 1px;border-radius:2px;background:var(--ss-highlight);color:inherit;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.fact-evidence-item .hint{margin:6px 0 0;color:var(--ss-muted);font-size:var(--ss-text-xs)}
button.fact-reader{margin-top:8px}
.fact-field{display:flex;flex-direction:column;gap:6px;margin:10px 0;color:var(--ss-muted);font-size:var(--ss-text-xs);font-weight:500}
.fact-field textarea{min-height:86px}
.fact-field-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px}
.fact-field-grid .fact-field{min-width:0}
/* 声明勾选框在文字前，整行可点 */
.fact-field.fact-attest{flex-direction:row-reverse;justify-content:flex-end;align-items:flex-start;gap:8px;color:var(--ss-ink);font-size:var(--ss-text-sm);font-weight:400;line-height:1.5}
.fact-field.fact-attest input[type=checkbox]{flex:none;width:16px;margin-top:2px}
.fact-review-actions{position:sticky;bottom:0;z-index:1;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;padding:12px 0 16px;border-top:1px solid var(--ss-line);background:var(--ss-surface)}
.fact-review-message{flex:1 1 100%;min-width:0;margin:0 0 4px;color:var(--ss-ink-2);font-size:var(--ss-text-sm)}
.fact-review-message:empty{display:none}
.fact-review-message.is-error{color:var(--ss-danger-text)}
#evidence-drawer .fact-review-actions{bottom:-24px}
/* 获得焦点的字段滚入视口时让出吸顶标题与吸底操作条的高度（D67：操作条不遮住字段） */
#evidence-drawer:has(.fact-review-actions){scroll-padding-top:72px;scroll-padding-bottom:104px}
.fact-readonly{display:grid;grid-template-columns:96px minmax(0,1fr);gap:6px 12px;margin:0;font-size:var(--ss-text-sm)}
.fact-readonly dt{color:var(--ss-muted)}
.fact-readonly dd{margin:0;color:var(--ss-ink-2);overflow-wrap:anywhere}
.fact-readonly-note{margin:0;color:var(--ss-muted);font-size:var(--ss-text-sm)}
.fact-inspector>.fact-readonly-note{margin-top:-6px}
.fact-history>summary{color:var(--ss-ink-2);font-size:var(--ss-text-sm);font-weight:500;cursor:pointer}
.fact-history-row{padding:10px 0;border-top:1px solid var(--ss-line-2)}
.fact-history>summary+.fact-history-row{margin-top:8px}
.fact-history-line{margin:0;color:var(--ss-ink);font-size:var(--ss-text-sm);font-variant-numeric:tabular-nums}
.fact-history-reason{margin:4px 0 0;color:var(--ss-ink-2);font-size:var(--ss-text-sm);overflow-wrap:anywhere}
.fact-history-row .hint{margin:4px 0 0;color:var(--ss-muted);font-size:var(--ss-text-xs);overflow-wrap:anywhere}
.fact-history-empty{color:var(--ss-muted);font-size:var(--ss-text-sm)}

/* ===== 3. 记录卡片（D68、23.51；事件工作台与审核共用，几何沿用 site.css 的 380 吸附卡片与 1100 以下抽屉） ===== */
/* 记录卡片：编号不用等宽字体；标题用衬线；小标题用标签栏字体 */
.record-card .record-head .mono,#evidence-drawer .record-view .mono{color:var(--ss-ink-2);font:600 var(--ss-text-sm)/1.4 var(--ss-font);letter-spacing:.04em;font-variant-numeric:tabular-nums}
.record-view>h2{font-family:var(--ss-font-serif);font-size:var(--ss-text-lg);font-weight:600;line-height:1.55;overflow-wrap:anywhere}
.record-view .page-notice{margin:0}
.record-sources .inspector-label{color:var(--ss-muted);font-size:var(--ss-text-xs);font-weight:500;letter-spacing:.1em}
.record-sources>.hint{margin:0;color:var(--ss-muted);font-size:var(--ss-text-sm)}
.record-view .record-readonly{margin:0 0 16px;padding-top:12px;border-top:1px solid var(--ss-line);color:var(--ss-muted);font-size:var(--ss-text-sm)}
/* 卡片与时间线证据栏里的原文证据：细线分隔的条目，不用圆角卡片；标签退为说明色文字，操作为声纳青文字链接 */
:is(.record-sources,.timeline-detail-sources) .evidence-card{margin:0;padding:10px 0 12px;border:0;border-top:1px solid var(--ss-line-2);border-radius:0;background:none;box-shadow:none}
.record-sources{gap:0}
:is(.record-sources,.timeline-detail-sources) .evidence-card>.row:first-child{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px}
:is(.record-sources,.timeline-detail-sources) .evidence-card .badge:not(.source-num){padding:0;background:none;color:var(--ss-muted)}
:is(.record-sources,.timeline-detail-sources) .evidence-card .badge.warn:not(.source-num){color:var(--ss-warn-text)}
:is(.record-sources,.timeline-detail-sources) .evidence-card h3{margin:6px 0 2px;color:var(--ss-ink);font-size:var(--ss-text-md);font-weight:600;line-height:1.5;overflow-wrap:anywhere}
:is(.record-sources,.timeline-detail-sources) .evidence-card .quote{margin:6px 0;color:var(--ss-ink-2);font-size:var(--ss-text-sm);line-height:1.75}
:is(.record-sources,.timeline-detail-sources) .evidence-card .evidence-meta{display:flex;flex-wrap:wrap;gap:2px 12px}
:is(.record-sources,.timeline-detail-sources) .evidence-card .actions{display:flex;flex-wrap:wrap;gap:2px 14px;margin-top:4px}
:is(.record-sources,.timeline-detail-sources) .evidence-card .actions :is(a,button){min-height:24px;padding:0;border:0;background:none;box-shadow:none;color:var(--ss-accent-text);font-size:var(--ss-text-xs);font-weight:500}
:is(.record-sources,.timeline-detail-sources) .evidence-card .actions :is(a,button):hover{text-decoration:underline;text-underline-offset:3px}

/* ===== 4. 时间线（D69、§10.3、23.53、23.54）：控件条、计数行、轴线（88 年份 | 112 日期 | 事件行）与右侧证据栏 ===== */
.timeline-view{min-width:0}
.timeline-status{margin:0 0 12px;padding:8px 12px;border-left:2px solid var(--ss-line);background:var(--ss-surface-2);color:var(--ss-ink-2);font-size:var(--ss-text-sm)}
.timeline-status>p{margin:0}
.timeline-status.is-failed{border-left-color:var(--ss-warn-text);color:var(--ss-ink)}
.timeline-status .admin-details{margin-top:6px}
.timeline-status .admin-details .long-text{margin:6px 0 0;color:var(--ss-ink-2);font-size:var(--ss-text-xs)}
.timeline-strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 8px}
.timeline-mode{display:inline-flex;flex:none;border:1px solid var(--ss-line);border-radius:var(--ss-radius-control);background:var(--ss-surface)}
.timeline-mode button{min-height:30px;padding:3px 12px;border:0;border-radius:0;background:none;box-shadow:none;color:var(--ss-ink-2);font-size:var(--ss-text-sm)}
.timeline-mode button:first-child{border-radius:var(--ss-radius-control) 0 0 var(--ss-radius-control)}
.timeline-mode button:last-child{border-radius:0 var(--ss-radius-control) var(--ss-radius-control) 0}
.timeline-mode button+button{border-left:1px solid var(--ss-line)}
.timeline-mode button[aria-pressed=true]{background:var(--ss-primary-soft);color:var(--ss-primary-text);font-weight:600}
label.field.timeline-field{display:inline-flex;flex-direction:row;align-items:center;gap:8px;margin:0;color:var(--ss-muted);font-size:var(--ss-text-xs);font-weight:500;letter-spacing:.06em;white-space:nowrap}
label.field.timeline-field select{width:auto;min-width:108px;font-size:var(--ss-text-sm);font-weight:400;letter-spacing:0}
.timeline-strip .search-box{flex:1 1 220px;max-width:320px}
.timeline-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:0 0 4px}
.timeline-count{margin:0;color:var(--ss-ink);font-size:var(--ss-text-sm);font-weight:500;font-variant-numeric:tabular-nums}
.timeline-meta .timeline-excluded{min-height:28px;color:var(--ss-ink-2);font-size:var(--ss-text-sm)}
.timeline-meta .timeline-excluded[hidden]{display:none}
.timeline-note{margin:0 0 12px;color:var(--ss-muted);font-size:var(--ss-text-xs);line-height:1.6}
.timeline-body{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;align-items:start}
.timeline-main{min-width:0}
.timeline-aside{display:none}
.timeline-empty{padding:28px 0;color:var(--ss-muted);text-align:left}
/* 轴线：年份标签只在每组第一行；日期与事件行之间一条贯穿的细线（计划行为计划色虚线），事件处一个小圆点 */
ol.timeline-axis{margin:0;padding:0;border-top:1px solid var(--ss-ink);list-style:none}
.axis-row{--axis-x:calc(var(--ss-report-label) + 112px + 32px);display:grid;grid-template-columns:var(--ss-report-label) 112px minmax(0,1fr);column-gap:16px;align-items:baseline;min-height:44px;margin:0;padding:10px 0;border-bottom:1px solid var(--ss-line-2);background:linear-gradient(var(--ss-line),var(--ss-line)) var(--axis-x) 0/1px 100% no-repeat}
.axis-row.is-plan{background:repeating-linear-gradient(to bottom,var(--ss-plan) 0 3px,transparent 3px 7px) var(--axis-x) 0/1px 100% no-repeat}
.axis-row.is-group-start:not(:first-child){border-top:1px solid var(--ss-line)}
.axis-row[aria-current=true]{background-color:var(--ss-highlight);box-shadow:inset 2px 0 0 var(--ss-accent)}
.axis-label{min-width:0;padding-left:8px}
.axis-year{display:block;color:var(--ss-ink);font-family:var(--ss-font-serif);font-size:var(--ss-text-lg);font-weight:600;line-height:1.3;font-variant-numeric:tabular-nums}
.axis-group{display:block;color:var(--ss-ink-2);font-size:var(--ss-text-xs);font-weight:500;letter-spacing:.1em;line-height:1.5}
.axis-count{display:block;margin-top:2px;color:var(--ss-muted);font-size:var(--ss-text-xs);letter-spacing:.04em}
.axis-date{min-width:0;color:var(--ss-ink-2);font-size:var(--ss-text-sm);font-variant-numeric:tabular-nums;white-space:nowrap}
.axis-row.is-plan .axis-date{color:var(--ss-plan-text)}
.axis-line{position:relative;min-width:0;padding-left:16px}
.axis-line::before{content:"";position:absolute;top:.5em;left:-4px;box-sizing:border-box;width:9px;height:9px;border:2px solid var(--ss-primary-text);border-radius:50%;background:var(--ss-surface)}
.axis-row.is-plan .axis-line::before{border-style:dashed;border-color:var(--ss-plan)}
/* 当前行（--ss-highlight 底色）上的弱化文字改用 --ss-ink-2：深色主题下 --ss-muted 在高亮底上只有 4.22:1（时间线轴线） */
.axis-row[aria-current=true] :is(.axis-count,.axis-flag,.axis-change,.hint,.state-dot.is-muted){color:var(--ss-ink-2)}
.axis-row[aria-current=true] .axis-line::before{border-color:var(--ss-accent);background:var(--ss-accent)}
button.axis-title{display:inline;min-height:0;padding:0;border:0;background:none;box-shadow:none;color:var(--ss-ink);font:inherit;font-size:var(--ss-text-md);font-weight:500;line-height:1.6;text-align:left;white-space:normal;overflow-wrap:anywhere}
button.axis-title:hover{background:none;color:var(--ss-primary-text);text-decoration:underline;text-underline-offset:3px}
button.axis-title[aria-pressed=true]{font-weight:600}
.axis-marks{display:flex;flex-wrap:wrap;align-items:center;gap:2px 14px;margin-top:2px;color:var(--ss-muted);font-size:var(--ss-text-xs);line-height:1.6}
.axis-marks button{min-height:22px;padding:0;border:0;background:none;box-shadow:none;font-size:var(--ss-text-xs);font-weight:500}
.axis-marks button:hover{background:none;text-decoration:underline;text-underline-offset:3px}
button.axis-evidence{color:var(--ss-accent-text)}
button.axis-pick{color:var(--ss-ink-2);font-weight:400}
.axis-flag{color:var(--ss-muted)}
.axis-marks .state-dot{font-size:var(--ss-text-xs)}
.axis-marks>.hint{margin:0;font-size:var(--ss-text-xs)}
.axis-change{margin:4px 0 0;color:var(--ss-ink-2);font-size:var(--ss-text-sm);overflow-wrap:anywhere}
/* 研究视图在 1101px 以上：右侧证据栏（搜罗预览同一版式：细线框、2px 声纳青上沿、吸附） */
@media(min-width:1101px){
  .timeline-view:not(.is-overview) .timeline-body{grid-template-columns:minmax(0,1fr) 320px}
  .timeline-view:not(.is-overview) .timeline-aside{position:sticky;top:16px;display:block;min-width:0;max-height:calc(100vh - 32px);overflow:auto;overscroll-behavior:contain;border:1px solid var(--ss-line);border-top:2px solid var(--ss-accent);background:var(--ss-surface)}
}
@media(min-width:1280px){
  .timeline-view:not(.is-overview) .timeline-body{grid-template-columns:minmax(0,1fr) var(--ss-side-panel)}
}
.timeline-aside-empty{margin:0;padding:16px;color:var(--ss-muted);font-size:var(--ss-text-sm)}
.timeline-detail{display:flex;flex-direction:column;min-width:0}
.timeline-detail-kicker{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:0;padding:12px 16px;border-bottom:1px solid var(--ss-line);color:var(--ss-ink-2);font-size:var(--ss-text-sm);font-variant-numeric:tabular-nums}
.timeline-detail-date.is-plan{color:var(--ss-plan-text)}
.timeline-detail-title{margin:0;padding:14px 16px 0;color:var(--ss-ink);font-family:var(--ss-font-serif);font-size:var(--ss-text-lg);font-weight:600;line-height:1.55;overflow-wrap:anywhere}
.timeline-detail-fields{display:grid;grid-template-columns:72px minmax(0,1fr);gap:6px 12px;margin:12px 16px 0;padding-top:10px;border-top:1px solid var(--ss-line);font-size:var(--ss-text-sm)}
.timeline-detail-fields dt{color:var(--ss-muted)}
.timeline-detail-fields dd{margin:0;color:var(--ss-ink-2);overflow-wrap:anywhere}
.timeline-detail>.page-notice{margin:12px 16px 0}
.timeline-detail-sources{margin:14px 16px 16px;padding-top:10px;border-top:1px solid var(--ss-line)}
.timeline-detail-label{margin:0 0 4px;color:var(--ss-muted);font-size:var(--ss-text-xs);font-weight:500;letter-spacing:.1em}
.timeline-detail-sources>.hint{margin:6px 0 0;color:var(--ss-muted);font-size:var(--ss-text-sm)}
.timeline-detail-sources>.notice{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.timeline-detail-sources>.notice p{flex:1 1 200px;margin:0}
/* 抽屉中（1100px 以下或概览视图）：抽屉自带内边距，去掉栏内边距 */
#evidence-drawer .timeline-detail-kicker{padding:0 0 10px}
#evidence-drawer .timeline-detail-fields,#evidence-drawer .timeline-detail>.page-notice,#evidence-drawer .timeline-detail-sources{margin-left:0;margin-right:0}
#evidence-drawer .timeline-detail-sources{margin-bottom:0}

/* ===== 5. 知识图谱（D70、§10.4、23.57）：两行控件条（1101 以上）、图例与统计一行、上下细线的画布，无网格底纹与圆角 ===== */
.research-graph.knowledge-graph{margin:0 0 16px}
.knowledge-graph{min-width:0}
.knowledge-controls,.knowledge-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;margin:0 0 8px}
.knowledge-graph :is(.knowledge-controls,.knowledge-filters) :is(input,select,button){min-height:32px;font-size:var(--ss-text-sm)}
.knowledge-controls>select{flex:0 1 auto;width:auto;min-width:0;max-width:200px}
.knowledge-search{display:flex;flex:1 1 240px;align-items:center;gap:6px;min-width:0}
.knowledge-search input{flex:1 1 auto;width:auto;min-width:0}
.knowledge-search button{flex:none}
.knowledge-filters>select{flex:0 1 auto;width:auto;min-width:0;max-width:160px}
.knowledge-field{display:inline-flex;flex:none;align-items:center;gap:6px;margin:0;color:var(--ss-muted);font-size:var(--ss-text-xs);font-weight:500;letter-spacing:.06em;white-space:nowrap}
.knowledge-field input[type=date]{width:132px;min-width:0;padding:4px 8px;letter-spacing:0}
.knowledge-check{display:inline-flex;flex:none;align-items:center;gap:6px;margin:0;color:var(--ss-ink-2);font-size:var(--ss-text-sm);font-weight:400;white-space:nowrap;cursor:pointer}
.knowledge-check input[type=checkbox]{flex:none;width:16px;margin:0}
.knowledge-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-left:auto}
.knowledge-graph .knowledge-actions button{padding:3px 10px;font-size:var(--ss-text-xs);white-space:nowrap}
.knowledge-canvas-tools{display:inline-flex}
.knowledge-graph .knowledge-actions button.knowledge-zoom{display:inline-grid;place-items:center;width:32px;padding:0;border-radius:0}
.knowledge-graph .knowledge-canvas-tools button.knowledge-zoom+button.knowledge-zoom{margin-left:-1px}
.knowledge-graph .knowledge-canvas-tools button.knowledge-zoom:first-child{border-radius:var(--ss-radius-control) 0 0 var(--ss-radius-control)}
.knowledge-graph .knowledge-canvas-tools button.knowledge-zoom:last-child{border-radius:0 var(--ss-radius-control) var(--ss-radius-control) 0}
.knowledge-graph .knowledge-canvas-tools button.knowledge-zoom:is(:hover,:focus-visible){position:relative;z-index:1}
.knowledge-actions button[aria-pressed=true]{border-color:var(--ss-primary-text);background:var(--ss-primary-soft);color:var(--ss-primary-text)}
.knowledge-icon{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.knowledge-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;margin:0 0 8px;color:var(--ss-muted);font-size:var(--ss-text-xs);line-height:1.6}
.knowledge-meta>button{min-height:28px;padding:2px 10px;font-size:var(--ss-text-xs)}
.knowledge-meta>button[hidden]{display:none}
.knowledge-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;margin:0}
.knowledge-legend span{white-space:nowrap}
.knowledge-legend span[hidden]{display:none}
.knowledge-legend span::before{content:"";display:inline-block;width:24px;margin-right:6px;border-top:2px solid var(--ss-ink-2);vertical-align:middle}
.knowledge-legend .candidate::before{border-top-style:dashed;border-top-color:var(--ss-muted)}
.knowledge-legend .coevent::before{border-top-style:dotted;border-top-color:var(--ss-plan)}
.knowledge-stats{min-width:0;margin:0;color:var(--ss-muted);font-size:var(--ss-text-xs);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.knowledge-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:0;min-width:0;overflow:hidden;border:0;border-top:1px solid var(--ss-line);border-bottom:1px solid var(--ss-line);border-radius:0}
.knowledge-layout.has-selection{grid-template-columns:minmax(0,1fr) 340px}
.knowledge-stage{position:relative;min-width:0;overflow:hidden;background:var(--ss-surface)}
.knowledge-stage.is-grab{cursor:grab}
.knowledge-stage.is-grabbing{cursor:grabbing}
.knowledge-layout .research-graph-canvas{height:600px;min-height:380px;border:0;border-radius:0;background:var(--ss-surface)}
.knowledge-layout .research-graph-canvas>.empty{margin:0;padding:48px 24px;color:var(--ss-muted);text-align:center}
/* 提示框跟随指针：位置来自 knowledge-graph.js 在本文件末尾插入的规则上的 --knowledge-tip-x / -y（CSSOM，不写 style 属性） */
.knowledge-tooltip{position:absolute;left:var(--knowledge-tip-x,8px);top:var(--knowledge-tip-y,8px);z-index:3;max-width:260px;padding:6px 10px;border:1px solid var(--ss-line);border-radius:var(--ss-radius-control);background:var(--ss-surface);box-shadow:var(--ss-shadow-pop);color:var(--ss-ink);font-size:var(--ss-text-xs);line-height:1.5;overflow-wrap:anywhere;pointer-events:none}
.knowledge-tooltip[hidden],.knowledge-sidebar[hidden]{display:none}
.knowledge-sidebar{min-width:0;max-height:600px;overflow:auto;padding:14px 16px;border-left:1px solid var(--ss-line);background:var(--ss-surface)}
.knowledge-sidebar h3{margin:0 0 4px;color:var(--ss-ink);font-family:var(--ss-font-serif);font-size:var(--ss-text-lg);font-weight:600;line-height:1.55;overflow-wrap:anywhere}
.knowledge-sidebar h4{margin:14px 0 6px;color:var(--ss-muted);font-size:var(--ss-text-xs);font-weight:500;letter-spacing:.1em}
.knowledge-sidebar h5{margin:8px 0 2px;color:var(--ss-muted);font-size:var(--ss-text-xs);font-weight:500}
.knowledge-sidebar .knowledge-status{margin:0 0 10px;color:var(--ss-ink-2);font-size:var(--ss-text-sm)}
.knowledge-sidebar>.hint{color:var(--ss-muted);font-size:var(--ss-text-sm)}
.knowledge-sidebar button{max-width:100%}
.knowledge-close{float:right;margin:0 0 8px 12px}
.knowledge-neighbor{display:block;width:100%;margin:6px 0;text-align:left;white-space:normal;overflow-wrap:anywhere}
.knowledge-sidebar .knowledge-evidence{margin-top:12px;padding-top:12px;border-top:1px solid var(--ss-line)}
.knowledge-sidebar .knowledge-evidence strong{display:block;color:var(--ss-ink);font-size:var(--ss-text-md);line-height:1.5;overflow-wrap:anywhere}
.knowledge-sidebar .knowledge-evidence p{margin:4px 0;font-size:var(--ss-text-sm);line-height:1.7;overflow-wrap:anywhere}
.knowledge-sidebar .knowledge-evidence .hint{color:var(--ss-muted);font-size:var(--ss-text-xs)}
.knowledge-help{margin:8px 0 12px;color:var(--ss-muted);font-size:var(--ss-text-xs)}
.knowledge-relations{margin:0}
.knowledge-relations>summary{color:var(--ss-ink-2);font-size:var(--ss-text-sm);font-weight:500;cursor:pointer}
.knowledge-relations .visual-relation-list{margin-top:8px}
.knowledge-graph .visual-relation-button{display:block;width:100%;min-height:36px;margin:0;padding:6px 8px;border:0;border-bottom:1px solid var(--ss-line-2);border-radius:0;background:none;box-shadow:none;color:var(--ss-ink);font-size:var(--ss-text-sm);text-align:left;white-space:normal;overflow-wrap:anywhere}
.knowledge-graph .visual-relation-button:hover{background:var(--ss-surface-2)}
.knowledge-note{margin:8px 0 0;color:var(--ss-muted);font-size:var(--ss-text-xs)}
/* 专题页的“关系管理 · 排除与恢复”（tag-workspace.js 在图谱后追加的 details）：同一套细线版式 */
.research-graph.knowledge-graph~details{margin:0 0 8px;padding-top:10px;border-top:1px solid var(--ss-line)}
.research-graph.knowledge-graph~details>summary{color:var(--ss-ink-2);font-size:var(--ss-text-sm);font-weight:500;cursor:pointer}
.research-graph.knowledge-graph~details .history-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:8px 0;border-bottom:1px solid var(--ss-line-2);font-size:var(--ss-text-sm)}

/* ===== 6. 断点 ===== */
@media(max-width:1100px){
  .knowledge-layout,.knowledge-layout.has-selection{grid-template-columns:minmax(0,1fr)}
  .knowledge-sidebar{max-height:360px;border-top:1px solid var(--ss-line);border-left:0}
  .knowledge-layout .research-graph-canvas{height:540px}
  .knowledge-actions{margin-left:0}
}
@media(max-width:800px){
  /* 事实登记表逐行堆叠：表述、日期与数值口径、核验状态与操作 */
  table.fact-table,table.fact-table tbody{display:block}
  table.fact-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
  table.fact-table tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"text text" "caliber caliber" "status action";gap:4px 12px;padding:10px 0 10px 8px;border-bottom:1px solid var(--ss-line)}
  table.fact-table.data-table tbody td{display:block;min-width:0;padding:0;border:0}
  table.fact-table tbody td:nth-child(1){grid-area:text}
  table.fact-table tbody td:nth-child(2){grid-area:caliber}
  table.fact-table tbody td:nth-child(3){grid-area:status}
  table.fact-table tbody td:nth-child(4){grid-area:action}
  table.fact-table tbody td.empty-cell{grid-column:1/-1}
  .fact-field-grid{grid-template-columns:minmax(0,1fr)}
  /* 时间线：年份标签与日期、事件行两栏 */
  .axis-row{--axis-x:72px;grid-template-columns:64px minmax(0,1fr);grid-template-areas:"label date" "label line";column-gap:0;row-gap:2px}
  .axis-label{grid-area:label;padding-left:4px}
  .axis-date{grid-area:date;padding-left:24px;font-size:var(--ss-text-xs)}
  .axis-line{grid-area:line;padding-left:24px}
  .axis-line::before{left:4px;top:-1.15em}
  .timeline-strip .search-box{flex-basis:100%;max-width:none}
  .knowledge-search{flex-basis:100%}
}
@media(max-width:480px){
  .knowledge-layout .research-graph-canvas{height:480px;min-height:360px}
  .knowledge-controls>select,.knowledge-filters>select{flex:1 1 calc(50% - 8px);max-width:none}
  .knowledge-field{flex:1 1 100%}
  .knowledge-field input[type=date]{flex:1 1 auto;width:auto}
  .knowledge-graph :is(.knowledge-controls,.knowledge-filters) :is(input,select,button),.knowledge-graph .knowledge-actions button,.knowledge-meta>button,.knowledge-sidebar button,.knowledge-graph .visual-relation-button{min-height:44px}
  .knowledge-graph .knowledge-actions button.knowledge-zoom{width:44px}
  .knowledge-check{min-height:44px}
  button.fact-open,.fact-review-actions button,.fact-pager button,button.fact-reader{min-height:44px}
  #evidence-drawer .fact-review-actions{bottom:-20px}
  label.field.timeline-field{flex:1 1 calc(50% - 8px)}
  label.field.timeline-field select{flex:1 1 auto;min-width:0}
  .timeline-mode{flex:1 1 100%}
  .timeline-mode button{flex:1 1 50%;min-height:44px}
  button.axis-title{min-height:36px}
  .axis-marks button{min-height:36px}
  :is(.record-sources,.timeline-detail-sources) .evidence-card .actions :is(a,button){min-height:44px}
}

/* ===== 7. 强制色、减少动态与打印 ===== */
@media(forced-colors:active){
  .axis-row,.axis-row.is-plan{background:none}
  .axis-line{border-left:1px solid CanvasText}
  .axis-line::before{forced-color-adjust:none;border-color:CanvasText;background:Canvas}
  .axis-row[aria-current=true]{outline:2px solid Highlight;outline-offset:-2px}
  .timeline-mode button[aria-pressed=true],.knowledge-actions button[aria-pressed=true]{outline:2px solid Highlight;outline-offset:-2px}
  .knowledge-legend span::before{border-top-color:CanvasText}
  .timeline-aside,.knowledge-layout{border-color:CanvasText}
}
@media print{
  .fact-toolbar,.fact-pager button,.fact-actions,.timeline-strip,.timeline-excluded,.timeline-aside,.axis-marks button,.knowledge-controls,.knowledge-filters,.knowledge-help,.knowledge-relations{display:none}
  .timeline-body{display:block}
  .axis-row{break-inside:avoid}
}
