/* 知识探索的共享渲染样式（/explore 与首页 / 共用）。所有规则限定在 .xv 容器内，避免和首页 app.css 的同名类（.claim、.legend …）互相影响。
   颜色变量：/explore 在 explore.css 的 :root 里定义；首页在 app.css 的 .graph-panel.xv 里定义。 */
.xv .tag { font-size: 12px; padding: 1px 8px; border-radius: 6px; background: var(--accent-soft); color: var(--accent); white-space: nowrap; }
.xv .tag.fact { background: var(--ok-bg); color: var(--ok); }
.xv .tag.statement { background: var(--warn-bg); color: var(--warn); }
.xv .tag.inference { background: #efe8fb; color: #6a3fb0; }
.xv .tag.warn { background: var(--warn-bg); color: var(--warn); }
.xv .tag.bad { background: var(--bad-bg); color: var(--bad); }
.xv .tag.ok { background: var(--ok-bg); color: var(--ok); }
.xv .summary { font-size: 16.5px; line-height: 1.85; margin: 6px 0 10px; }
.xv .cite.derived { color: var(--warn); }
.xv .summary sup, .xv .cite { color: var(--accent); cursor: pointer; font-weight: 600; font-size: 12px; padding: 0 1px; }
.xv .cite.unverified { color: var(--bad); }
.xv .summary.small { font-size: 15px; line-height: 1.75; margin: 0; }
.xv .notice { border-radius: 8px; padding: 8px 12px; font-size: 13.5px; margin: 8px 0; }
.xv .notice.warn { background: var(--warn-bg); color: var(--warn); }
.xv .notice.bad { background: var(--bad-bg); color: var(--bad); }
.xv .sec { margin-top: 14px; }
.xv .sec > h3 { margin: 0 0 6px; font-size: 13px; color: var(--muted); font-weight: 600; letter-spacing: .02em; }
/* 关系图 */
.xv .gwrap { border: 1px solid var(--line); border-radius: 10px; background: var(--bg); position: relative; }
.xv .gtools { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; padding: 8px 10px; border-bottom: 1px solid var(--line); font-size: 13px; }
.xv .cat { display: inline-flex; gap: 5px; align-items: center; padding: 1px 9px; border-radius: 99px; border: 1px solid var(--line); background: var(--panel); cursor: pointer; font-size: 12.5px; }
.xv .cat i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
.xv .cat.off { opacity: .4; }
.xv svg.graph { width: 100%; height: auto; display: block; }
.xv .node { cursor: pointer; }
.xv .node rect { fill: var(--panel); stroke-width: 2; }
.xv .node text { font-size: 14px; fill: var(--ink); text-anchor: middle; dominant-baseline: central; pointer-events: none; }
.xv .node.center rect { fill: var(--accent); stroke: var(--accent); }
.xv .node.center text { fill: #fff; font-weight: 700; font-size: 16px; }
.xv .node.dim, .xv .edge.dim { opacity: .18; }
.xv .node.sel rect { stroke-width: 4; }
.xv .edge { cursor: pointer; }
.xv .edge line { stroke-width: 2.5; }
.xv .edge .hit { stroke: transparent; stroke-width: 16; }
.xv .edge text { font-size: 11.5px; fill: var(--ink); text-anchor: middle; paint-order: stroke; stroke: var(--bg); stroke-width: 4px; pointer-events: none; }
.xv .legend { padding: 6px 10px; border-top: 1px solid var(--line); font-size: 12px; color: var(--muted); display: flex; gap: 14px; flex-wrap: wrap; }
.xv .legend svg { vertical-align: middle; }
/* 事件路径 */
.xv .steps { position: relative; margin-top: 4px; }
.xv .step { display: grid; grid-template-columns: 34px 1fr; gap: 10px; cursor: pointer; }
.xv .step .rail { display: flex; flex-direction: column; align-items: center; }
.xv .step .dot { width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--accent); background: var(--accent); color: #fff; font-size: 12px; display: flex; align-items: center; justify-content: center; flex: none; }
.xv .step.derived .dot { background: var(--panel); color: var(--muted); border: 2px dashed var(--muted); }
.xv .step .line { flex: 1; width: 2px; background: var(--accent); min-height: 14px; }
.xv .step.derived .line, .xv .step.derived + .step .line { background: repeating-linear-gradient(var(--muted) 0 4px, transparent 4px 8px); }
.xv .step:last-child .line { visibility: hidden; }
.xv .step .card { border: 1px solid var(--line); border-radius: 10px; padding: 8px 12px; margin-bottom: 10px; background: var(--panel); }
.xv .step:hover .card, .xv .step.sel .card { border-color: var(--accent); background: var(--accent-soft); }
.xv .step.derived .card { border-style: dashed; }
.xv .step .t { font-weight: 600; }
.xv .step .s { color: var(--muted); font-size: 14px; }
.xv .step .c { font-size: 13.5px; margin-top: 4px; }
.xv .pathnote { font-size: 12.5px; color: var(--muted); margin-top: 4px; }
/* 依据 / 检查器 */
.xv .claims { display: flex; flex-direction: column; gap: 6px; }
.xv .claim { border: 1px solid var(--line); border-radius: 8px; padding: 6px 10px; cursor: pointer; font-size: 14px; }
.xv .claim:hover, .xv .claim.sel { border-color: var(--accent); }
.xv .ref { display: inline-block; font-size: 12px; padding: 0 7px; margin: 2px 3px 0 0; border-radius: 6px; border: 1px solid var(--line); background: var(--bg); cursor: help; }
.xv .ref.q-located { border-color: var(--ok); color: var(--ok); }
.xv .ref.q-derived { border-color: var(--warn); color: var(--warn); }
.xv .ref.bad { border-color: var(--bad); color: var(--bad); }
.xv .insp h3 { margin: 0 0 4px; font-size: 17px; }
.xv .insp h4 { margin: 12px 0 4px; font-size: 13px; color: var(--muted); }
.xv .rec { border-left: 3px solid var(--line); padding: 2px 0 2px 10px; margin: 6px 0; font-size: 14px; }
.xv .para { font-size: 14px; line-height: 1.8; background: var(--bg); border-radius: 8px; padding: 8px 10px; margin: 6px 0; }
.xv .para .pid { font-size: 12px; color: var(--muted); display: block; }
.xv mark { background: var(--mark); color: inherit; border-radius: 3px; }
.xv .kv { font-size: 13px; color: var(--muted); }
.xv .edge text.weak { font-style: italic; opacity: .7; }
.xv .evchips { margin-top: 3px; display: flex; gap: 4px; flex-wrap: wrap; }
.xv .weakcause { font-style: italic; color: var(--muted); }
.xv .jlegend { border: 1px solid var(--line); border-radius: 8px; margin-bottom: 8px; padding: 6px 10px; display: flex; flex-direction: column; gap: 2px; }
.xv .ldot { display: inline-block; width: 12px; height: 12px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }
.xv .ldot.solid { background: var(--accent); border: 2px solid var(--accent); }
.xv .ldot.dashed { background: var(--panel); border: 2px dashed var(--muted); }
.xv .stageev { margin-top: 4px; font-size: 13px; }
.xv .stageev summary { cursor: pointer; color: var(--muted); }
.xv .stageev .rec { padding: 2px 0; }
