/* Extracted from templates/settings_kg.html for maintainability. */
:root{--kg-bg:#f7f7f5;--kg-surface:#fff;--kg-muted:#f2f2ef;--kg-line:#e6e4df;--kg-line-strong:#d8d5ce;--kg-text:#1f1f1d;--kg-sub:#6f6d68;--kg-accent:#5f55d6;--kg-warn:#b7791f;--kg-danger:#b45353;--kg-pe-overlay:none;--kg-pe-interactive:auto}
html.kg-domain-shell .global-nav{background:var(--kg-bg)!important;color:var(--kg-text);border-bottom:1px solid var(--kg-line);box-shadow:none}
html.kg-domain-shell .nav-logo{color:var(--kg-text)!important}
html.kg-domain-shell .nav-item{color:var(--kg-sub)!important}
html.kg-domain-shell .nav-item:hover{background:var(--kg-muted)!important;color:var(--kg-text)!important}
html.kg-domain-shell .nav-item.active{background:var(--kg-surface)!important;border-color:var(--kg-line);color:var(--kg-text)!important}
html.kg-domain-shell .nav-dropdown-trigger,html.kg-domain-shell .nav-dropdown-trigger:hover,html.kg-domain-shell .nav-dropdown-trigger.active{background:transparent!important;box-shadow:none!important}
html.kg-domain-shell .nav-dropdown-menu-inner,html.kg-domain-shell #nav-settings-dropdown{background:var(--kg-surface)!important;border-color:var(--kg-line)!important;box-shadow:0 14px 30px rgba(31,31,29,.10)!important}
html.kg-domain-shell .nav-dropdown-item,html.kg-domain-shell .nav-dd-item{color:var(--kg-sub)!important}
html.kg-domain-shell .nav-dropdown-item:hover,html.kg-domain-shell .nav-dropdown-item.active,html.kg-domain-shell .nav-dd-item:hover{background:var(--kg-muted)!important;color:var(--kg-text)!important}
html.kg-domain-shell .nav-settings-btn,html.kg-domain-shell #nav-settings-dropdown-btn,html.kg-domain-shell #nav-user-toggle{background:var(--kg-surface)!important;border-color:var(--kg-line)!important;color:var(--kg-text)!important;box-shadow:none!important;opacity:1!important}
html.kg-domain-shell .nav-settings-btn svg,html.kg-domain-shell #ko-nav-mail svg{fill:var(--kg-sub)!important}
html.kg-domain-shell .nav-dd-token,html.kg-domain-shell #nav-user-role-pill{background:var(--kg-muted)!important;border-color:var(--kg-line)!important;color:var(--kg-sub)!important}
body{background:var(--kg-bg);overflow:hidden}
.settings-container{background:var(--kg-bg)}
.settings-content{overflow:hidden}
.settings-sidebar{background:#f4f3f0;border-right:1px solid var(--kg-line);box-shadow:none}
.settings-search input{background:var(--kg-surface);border:1px solid var(--kg-line);box-shadow:none}
.settings-overview-card{background:transparent;border:1px solid var(--kg-line);box-shadow:none;color:var(--kg-text)}
.settings-overview-card__icon{filter:grayscale(1);opacity:.65}
.settings-pulse-bar{background:var(--kg-line)}
.settings-page-content{background:var(--kg-bg);height:calc(100vh - 96px);overflow:hidden;padding:0}
.settings-breadcrumb{color:var(--kg-sub);height:40px;min-height:40px;flex:0 0 40px;display:flex;align-items:center;padding-top:0;padding-bottom:0}
.kg-first-screen{display:flex;flex-direction:column;height:100%;min-height:0;margin:0}
/* P1 · 一屏式活体图谱场 — 画布满屏覆盖 */
.kg-first-screen.kg-fullscreen-mode{position:fixed;inset:0;z-index:10;background:var(--kg-bg)}
.kg-first-screen.kg-fullscreen-mode .kg-graph-panel{position:absolute;inset:0}
/* HUD 浮卡 — 左上角半透明指标条 */
.kg-first-screen.kg-fullscreen-mode .kg-metric-strip{position:absolute;top:14px;left:14px;z-index:20;background:rgba(255,255,255,.85);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:12px;padding:6px 10px;box-shadow:0 4px 16px rgba(31,31,29,.06);max-width:none;pointer-events:var(--kg-pe-interactive)}
/* 上沿浮层工具栏 — 标题卡居中 */
.kg-first-screen.kg-fullscreen-mode .kg-map-title-card{position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:20;max-width:calc(100% - 340px);background:rgba(255,255,255,.88);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:14px;padding:6px 14px;box-shadow:0 4px 16px rgba(31,31,29,.06);pointer-events:auto}
.kg-first-screen.kg-fullscreen-mode .kg-map-title-card .kg-map-title-main{font-size:13px;color:var(--kg-text)}
/* 左侧半透明窄边问谱流 */
.kg-first-screen.kg-fullscreen-mode .kg-ask-stream{position:absolute;left:0;top:0;bottom:60px;width:280px;z-index:15;background:rgba(255,255,255,.75);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-right:1px solid var(--kg-line);overflow-y:auto;display:flex!important;flex-direction:column}
.kg-first-screen.kg-fullscreen-mode .kg-ask-stream .kg-ask-head{flex-shrink:0}
.kg-first-screen.kg-fullscreen-mode .kg-ask-stream .kg-ask-log{flex:1;overflow-y:auto;padding:8px}
/* 底部吸附问谱输入框 */
.kg-first-screen.kg-fullscreen-mode .kg-ask-dock{position:absolute;bottom:0;left:0;right:0;height:60px;z-index:25;background:var(--kg-surface);border-top:1px solid var(--kg-line);display:flex;align-items:center;gap:8px;padding:0 14px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:rgba(255,255,255,.95)}
.kg-first-screen.kg-fullscreen-mode .kg-ask-dock .kg-ask-input{border:none;background:transparent;font-size:13px;outline:none;resize:none}
/* 引擎状态栏精简 — 左下角 */
.kg-first-screen.kg-fullscreen-mode .kg-life-hud{position:absolute;left:14px;bottom:70px;z-index:18;max-width:360px}
/* 左下角缩放栏 */
.kg-first-screen.kg-fullscreen-mode .kg-zoom-rail{position:absolute;left:14px;bottom:14px;z-index:19}
/* ADR-0136 · ReactFlow 内置 MiniMap 永久隐藏，由自定义 SVG MiniMap 接管 */
.kg-first-screen.kg-fullscreen-mode .kg-graph-panel .react-flow__minimap{display:none!important}
/* 隐藏开发术语区域 */
.kg-first-screen.kg-fullscreen-mode .kg-interaction-hud{display:none}
.kg-first-screen.kg-fullscreen-mode .kg-current-slice-card{display:none}
.kg-first-screen.kg-fullscreen-mode .kg-onion-panel{display:none}
.kg-first-screen.kg-fullscreen-mode .kg-top-explorer-bar{display:none}
.kg-first-screen.kg-fullscreen-mode .kg-view-3d-toggle{position:absolute;right:14px;top:14px;z-index:20}
/* 画布以全屏为容器 */
.kg-first-screen.kg-fullscreen-mode .kg-map-canvas{position:absolute;inset:0;z-index:1}
/* 全屏模式下隐藏侧边栏 */
html.kg-domain-shell:has(.kg-fullscreen-mode) .settings-sidebar{display:none}
html.kg-domain-shell:has(.kg-fullscreen-mode) .settings-page-content{width:100%;height:100vh;padding:0;margin:0}
html.kg-domain-shell:has(.kg-fullscreen-mode) .settings-container{overflow:hidden}
html.kg-domain-shell:has(.kg-fullscreen-mode) .settings-content{width:100%;height:100vh;margin:0;padding:0}
/* portal pair #1: HUD容器穿透→子元素交互 */ .kg-metric-strip{display:grid;grid-template-columns:repeat(3,max-content);gap:8px;pointer-events:var(--kg-pe-interactive)}
/* portal pair #1: HUD容器穿透→子元素交互 */ .kg-map-hud{position:absolute;top:14px;left:14px;z-index:4;width:auto;max-width:calc(100% - 520px);pointer-events:var(--kg-pe-overlay)}
.kg-metric-card{display:flex;align-items:center;gap:6px;white-space:nowrap;border:1px solid rgba(230,228,223,.9);border-radius:8px;background:rgba(255,255,255,.82);padding:6px 9px;box-shadow:0 10px 24px rgba(31,31,29,.04);cursor:default}
button.kg-metric-card{font:inherit;text-align:left;cursor:pointer}
button.kg-metric-card:hover,button.kg-metric-card:focus{background:rgba(255,255,255,.96);outline:1px solid rgba(95,85,214,.2)}
.kg-metric-card.kg-metric-core:nth-child(1){color:#5f55d6}
.kg-metric-card.kg-metric-core:nth-child(2){color:#597268}
.kg-metric-card.kg-metric-action{color:#c2580a;border-color:rgba(194,88,10,.35)}
.kg-metric-card.kg-metric-action:hover{background:rgba(194,88,10,.06);outline:1px solid rgba(194,88,10,.4)}
.kg-metric-action .kg-metric-val{color:#c2580a}
.kg-metric-action .kg-metric-label{color:#c2580a}
.kg-metric-action.has-items .kg-metric-val{color:#b83232}
.kg-metric-chevron{font-size:9px;margin-left:2px;opacity:.6;vertical-align:middle}
.kg-metric-val{font-size:13px;font-weight:720;color:currentColor;letter-spacing:-.02em;line-height:1}
.kg-metric-label{font-size:11px;color:currentColor;margin-top:0;opacity:.78}
.kg-l3-title{font-size:14px;font-weight:650;color:var(--kg-text);margin-bottom:6px}
.kg-l3-desc,.kg-evidence-line{font-size:12px;color:var(--kg-sub);line-height:1.65;margin:4px 0}
.kg-mini-bars{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.kg-mini-bar{display:grid;grid-template-columns:120px 1fr 42px;gap:8px;align-items:center;font-size:12px;color:var(--kg-sub)}
.kg-mini-bar-track{height:6px;border-radius:999px;background:var(--kg-muted);overflow:hidden}
.kg-mini-bar-fill{height:100%;border-radius:999px;background:#b8b4aa}
.kg-chip-row,.kg-pill-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.kg-chip,.kg-pill,.kg-gate-pill{border:1px solid var(--kg-line);border-radius:999px;padding:3px 8px;font-size:11px;color:var(--kg-sub);background:#fbfbfa}
.kg-graph-panel{--kg-right-rail-right:14px;--kg-right-rail-width:300px;--kg-right-rail-gap:10px;--kg-right-rail-start:14px;--kg-docked-cube-card-width:260px;--kg-docked-cube-card-height:230px;--kg-current-slice-card-height:164px;--kg-onion-card-height:118px;--kg-current-slice-top:var(--kg-right-rail-start);--kg-onion-top:var(--kg-right-rail-start);--kg-interaction-top:calc(var(--kg-onion-top) + var(--kg-onion-card-height) + var(--kg-right-rail-gap));position:relative;flex:1;min-height:0;height:100%;overflow:hidden;padding:0;border:none;border-radius:0;background:transparent;box-shadow:none}
.kg-graph-panel.kg-right-rail-has-cube{--kg-onion-top:calc(var(--kg-right-rail-start) + var(--kg-docked-cube-card-height) + var(--kg-right-rail-gap))}
.kg-graph-panel,.kg-graph-panel *{-webkit-user-select:none;user-select:none}
.kg-ask-input{-webkit-user-select:text;user-select:text}
.kg-graph-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:0;align-items:center;justify-content:space-between}
.kg-map-toolbar{position:absolute;left:14px;bottom:104px;z-index:6;max-width:430px;padding:0;border:none;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;flex-direction:column;align-items:flex-start}
.kg-life-hud{pointer-events:auto}
.kg-engine-status{display:flex;flex-direction:column;gap:3px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;text-shadow:0 1px 0 rgba(255,255,255,.72)}
.kg-engine-row{display:flex;align-items:center;gap:3px;flex-wrap:nowrap;padding:0;border:none;border-radius:0;background:transparent}
.kg-engine-row.life-bar,.kg-engine-row.love-bar{background:transparent}
.kg-engine-dot{position:relative;width:19px;height:19px;border:none;border-radius:0;background:transparent;color:var(--kg-text);display:inline-flex;align-items:center;justify-content:center;font-size:11px;line-height:1;cursor:pointer}
.kg-engine-dot:hover,.kg-engine-dot:focus,.kg-engine-dot.active{background:rgba(255,255,255,.62);outline:none}
.kg-engine-dot.heart{color:#c85f7c}
.kg-engine-dot.force{color:#6c7f53}
.kg-engine-dot.person{color:#586a86}
.kg-engine-dot.party{color:#fff;background:#c7433d;border-radius:5px;font-size:9px;font-weight:760}
.kg-engine-tip{display:none;position:fixed;left:var(--kg-tip-left,16px);top:var(--kg-tip-top,16px);right:auto;bottom:auto;width:228px;z-index:80;border:1px solid rgba(230,228,223,.95);border-radius:12px;background:rgba(255,255,255,.97);box-shadow:0 18px 48px rgba(31,31,29,.14);padding:10px;color:var(--kg-text);font-size:12px;line-height:1.55;text-align:left;white-space:normal;pointer-events:none}
.kg-engine-tip b{display:block;margin-bottom:4px;color:var(--kg-text)}
.kg-engine-tip span{display:block;color:var(--kg-sub)}
.kg-engine-dot:hover .kg-engine-tip,.kg-engine-dot:focus .kg-engine-tip,.kg-engine-dot.kg-tip-active .kg-engine-tip{display:block}
.kg-map-canvas{width:100%;height:100%;min-height:0;border-radius:0;background-color:#f3f3f0;background-image:radial-gradient(#dedbd3 1px,transparent 1px);background-size:18px 18px;border:none;touch-action:none;cursor:grab}
.kg-map-canvas.dragging{cursor:grabbing}
.kg-map-canvas.selecting{cursor:crosshair}
.kg-map-canvas.kg-map-refreshing #kg-map-viewport{animation:kg-map-soft-refresh .24s ease-out both}
.kg-map-node{cursor:pointer}
.kg-map-node circle{fill:#fff;stroke:#9b968c;stroke-width:1.6;transition:fill .2s,stroke .2s,r .18s}
.kg-map-node[data-state="machine_suggested"] circle,.kg-map-node[data-state="candidate"] circle{stroke:var(--kg-warn)}
.kg-map-node[data-ready="false"] circle{stroke:var(--kg-danger);stroke-dasharray:4 3}
.kg-map-node.ask-highlight circle{stroke:var(--kg-accent);stroke-width:2.6}
.kg-map-node.selected circle{stroke:var(--kg-accent);stroke-width:3;filter:drop-shadow(0 0 6px rgba(95,85,214,.22))}
.kg-map-node text{font-size:11px;fill:var(--kg-text);pointer-events:none}
/* S5-A iWatch 类型徽色（circle fill 按 data-type 差异化） */
.kg-map-node[data-type="feature"] circle{fill:#ede9fe;stroke:#7c3aed}
.kg-map-node[data-type="api"] circle{fill:#dcfce7;stroke:#16a34a}
.kg-map-node[data-type="code_file"] circle{fill:#fef9c3;stroke:#ca8a04}
.kg-map-node[data-type="document"] circle{fill:#e0f2fe;stroke:#0284c7}
.kg-map-node[data-type="report"] circle{fill:#f3e8ff;stroke:#9333ea}
.kg-map-node[data-type="decision"] circle{fill:#fee2e2;stroke:#dc2626}
.kg-map-node[data-type="evidence"] circle{fill:#ffedd5;stroke:#ea580c}
.kg-map-node[data-type="test"] circle{fill:#d9f99d;stroke:#65a30d}
.kg-map-node[data-type="log_event"] circle{fill:#ccfbf1;stroke:#0d9488}
.kg-map-node[data-type="time_event"] circle{fill:#fce7f3;stroke:#db2777}
/* S5-A 类型图标字符 */
.kg-type-icon{font-size:10px;font-weight:700;fill:#6b7280;pointer-events:none;dominant-baseline:central;text-anchor:middle}
.kg-map-node[data-type="feature"] .kg-type-icon{fill:#7c3aed}
.kg-map-node[data-type="api"] .kg-type-icon{fill:#16a34a}
.kg-map-node[data-type="code_file"] .kg-type-icon{fill:#ca8a04}
.kg-map-node[data-type="document"] .kg-type-icon{fill:#0284c7}
.kg-map-node[data-type="report"] .kg-type-icon{fill:#9333ea}
.kg-map-node[data-type="decision"] .kg-type-icon{fill:#dc2626}
.kg-map-node[data-type="evidence"] .kg-type-icon{fill:#ea580c}
.kg-map-node[data-type="test"] .kg-type-icon{fill:#65a30d}
.kg-map-node[data-type="log_event"] .kg-type-icon{fill:#0d9488}
.kg-map-node[data-type="time_event"] .kg-type-icon{fill:#db2777}
/* S5-A M5 · 26 种机器语义类型（WAVE-E · 2026-05-14）*/
/* 实体类（蓝色系） */
.kg-map-node[data-type="entity_person"] circle{fill:#dbeafe;stroke:#3b82f6}
.kg-map-node[data-type="entity_org"] circle{fill:#bfdbfe;stroke:#2563eb}
.kg-map-node[data-type="entity_system"] circle{fill:#93c5fd;stroke:#1d4ed8}
.kg-map-node[data-type="entity_document"] circle{fill:#e0f2fe;stroke:#0284c7}
.kg-map-node[data-type="entity_concept"] circle{fill:#cffafe;stroke:#0891b2}
/* 关系类（橙色系） */
.kg-map-node[data-type="relation_causal"] circle{fill:#ffedd5;stroke:#f97316}
.kg-map-node[data-type="relation_depends"] circle{fill:#fed7aa;stroke:#ea580c}
.kg-map-node[data-type="relation_flow"] circle{fill:#fde68a;stroke:#d97706}
.kg-map-node[data-type="relation_ref"] circle{fill:#fef3c7;stroke:#b45309}
.kg-map-node[data-type="relation_equiv"] circle{fill:#fde8d0;stroke:#c2410c}
/* 状态类（语义专色） */
.kg-map-node[data-type="state_active"] circle{fill:#d1fae5;stroke:#059669}
.kg-map-node[data-type="state_dormant"] circle{fill:#f3f4f6;stroke:#6b7280}
.kg-map-node[data-type="state_blocked"] circle{fill:#fee2e2;stroke:#dc2626}
.kg-map-node[data-type="state_deprecated"] circle{fill:#e5e7eb;stroke:#9ca3af}
.kg-map-node[data-type="state_candidate"] circle{fill:#fef9c3;stroke:#ca8a04}
/* 治理类（紫色系） */
.kg-map-node[data-type="gov_rule"] circle{fill:#ede9fe;stroke:#8b5cf6}
.kg-map-node[data-type="gov_gate"] circle{fill:#ddd6fe;stroke:#7c3aed}
.kg-map-node[data-type="gov_audit"] circle{fill:#e9d5ff;stroke:#9333ea}
.kg-map-node[data-type="gov_kpi"] circle{fill:#f3e8ff;stroke:#a21caf}
.kg-map-node[data-type="gov_risk"] circle{fill:#fce7f3;stroke:#be185d}
/* 工程类（青色系） */
.kg-map-node[data-type="eng_module"] circle{fill:#cffafe;stroke:#06b6d4}
.kg-map-node[data-type="eng_api"] circle{fill:#a5f3fc;stroke:#0891b2}
.kg-map-node[data-type="eng_data"] circle{fill:#99f6e4;stroke:#0d9488}
.kg-map-node[data-type="eng_test"] circle{fill:#d9f99d;stroke:#65a30d}
.kg-map-node[data-type="eng_config"] circle{fill:#bbf7d0;stroke:#16a34a}
.kg-map-node[data-type="eng_event"] circle{fill:#e0f2fe;stroke:#0369a1}
/* S5-A M5 图标字符颜色 */
.kg-map-node[data-type="entity_person"] .kg-type-icon{fill:#3b82f6}
.kg-map-node[data-type="entity_org"] .kg-type-icon{fill:#2563eb}
.kg-map-node[data-type="entity_system"] .kg-type-icon{fill:#1d4ed8}
.kg-map-node[data-type="entity_document"] .kg-type-icon{fill:#0284c7}
.kg-map-node[data-type="entity_concept"] .kg-type-icon{fill:#0891b2}
.kg-map-node[data-type="relation_causal"] .kg-type-icon{fill:#f97316}
.kg-map-node[data-type="relation_depends"] .kg-type-icon{fill:#ea580c}
.kg-map-node[data-type="relation_flow"] .kg-type-icon{fill:#d97706}
.kg-map-node[data-type="relation_ref"] .kg-type-icon{fill:#b45309}
.kg-map-node[data-type="relation_equiv"] .kg-type-icon{fill:#c2410c}
.kg-map-node[data-type="state_active"] .kg-type-icon{fill:#059669}
.kg-map-node[data-type="state_dormant"] .kg-type-icon{fill:#6b7280}
.kg-map-node[data-type="state_blocked"] .kg-type-icon{fill:#dc2626}
.kg-map-node[data-type="state_deprecated"] .kg-type-icon{fill:#9ca3af}
.kg-map-node[data-type="state_candidate"] .kg-type-icon{fill:#ca8a04}
.kg-map-node[data-type="gov_rule"] .kg-type-icon{fill:#8b5cf6}
.kg-map-node[data-type="gov_gate"] .kg-type-icon{fill:#7c3aed}
.kg-map-node[data-type="gov_audit"] .kg-type-icon{fill:#9333ea}
.kg-map-node[data-type="gov_kpi"] .kg-type-icon{fill:#a21caf}
.kg-map-node[data-type="gov_risk"] .kg-type-icon{fill:#be185d}
.kg-map-node[data-type="eng_module"] .kg-type-icon{fill:#06b6d4}
.kg-map-node[data-type="eng_api"] .kg-type-icon{fill:#0891b2}
.kg-map-node[data-type="eng_data"] .kg-type-icon{fill:#0d9488}
.kg-map-node[data-type="eng_test"] .kg-type-icon{fill:#65a30d}
.kg-map-node[data-type="eng_config"] .kg-type-icon{fill:#16a34a}
.kg-map-node[data-type="eng_event"] .kg-type-icon{fill:#0369a1}
/* S5-B 扇区聚焦 — 非焦点节点淡化 */
.kg-map-cluster-focus .kg-map-node:not(.cluster-focus){opacity:.38;transition:opacity .2s}
.kg-map-node.cluster-focus{transition:opacity .2s}
.kg-map-edge{stroke:#c8c4bb;stroke-width:1;opacity:.7;cursor:pointer}
.kg-map-edge[data-weight="high"]{stroke-width:2.2;opacity:.82}
.kg-map-edge[data-weight="mid"]{stroke-width:1.4;opacity:.75}
.kg-map-edge[data-weight="low"]{stroke-width:0.7;opacity:.55}
.kg-map-edge[data-weight="mid"]{stroke-width:1.1;opacity:.7}
.kg-map-edge[data-weight="high"]{stroke-width:1.8;opacity:.9}
/* ADR-0082 · 边关系着色（G4 修复 · 2026-05-25） */
.kg-map-edge[data-relation="implements"]{stroke:#5f55d6}
.kg-map-edge[data-relation="tests"],.kg-map-edge[data-relation="verifies"]{stroke:#48bb78}
.kg-map-edge[data-relation="documents"],.kg-map-edge[data-relation="references_doc"]{stroke:#8b8680;stroke-dasharray:4 3}
.kg-map-edge[data-relation="depends_on"]{stroke:#dd6b20}
.kg-map-edge[data-relation="used_by"]{stroke:#d69e2e;stroke-dasharray:6 3}
.kg-map-edge[data-relation="changed_by"],.kg-map-edge[data-relation="supersedes"]{stroke:#e53e3e}
.kg-map-edge[data-relation="caused_by"]{stroke:#9f7aea;stroke-dasharray:6 3}
.kg-map-edge[data-relation="belongs_to"],.kg-map-edge[data-relation="belongs_to_task"]{stroke:#a0aec0;stroke-dasharray:3 3}
.kg-map-edge[data-relation="deprecated_by"],.kg-map-edge[data-relation="refuted_by"]{stroke:#e53e3e;stroke-dasharray:5 3}
.kg-map-edge[data-relation="facade_delegates_to"]{stroke:#63b3ed;stroke-dasharray:8 4}
.kg-map-edge[data-relation="happens_before"]{stroke:#b794f4;stroke-dasharray:2 4}
.kg-map-edge[data-relation="neighbor"]{stroke:#c8c4bb;opacity:.5}
/* W5 势图层 — 边线覆盖样式（由 JS inline style 驱动） */
.kg-map-edge[data-potential-layer="on"]{transition:stroke .25s,stroke-width .25s}
/* W5 势图层 — 阈值调参滑块组 */
.kg-potential-slider-group{padding:6px 14px 8px;border-top:1px solid rgba(216,213,206,.7)}
.kg-potential-slider-group label{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--kg-sub);margin-top:4px}
.kg-potential-slider-group label:first-child{margin-top:0}
.kg-potential-slider-group input[type=range]{flex:1;height:4px;accent-color:#5f55d6;cursor:pointer}
.kg-potential-slider-group .val{font-variant-numeric:tabular-nums;min-width:32px;text-align:right;color:var(--kg-text);font-weight:600}
/* W5 势图层 — 底部图例条 */
.kg-potential-legend{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;padding:4px 14px;background:rgba(255,255,255,.88);border-radius:20px;box-shadow:0 2px 12px rgba(0,0,0,.10);font-size:11px;color:var(--kg-sub);z-index:5;pointer-events:none;white-space:nowrap}
.kg-potential-legend .bar{display:flex;height:8px;width:120px;border-radius:4px;overflow:hidden}
.kg-potential-legend .bar span{flex:1}
.kg-potential-legend .val{font-variant-numeric:tabular-nums;font-weight:600;color:var(--kg-text);font-size:10px}
.kg-map-edge.active,.kg-map-edge.ask-highlight{stroke:var(--kg-accent);stroke-width:1.6;opacity:.9}
.kg-map-edge.path-highlight{stroke:#d97706;stroke-width:2.4;opacity:1}
.kg-map-node.path-highlight circle{stroke:#d97706;stroke-width:3.4;filter:drop-shadow(0 0 8px rgba(217,119,6,.22))}
.kg-path-overlay{stroke:#d97706;stroke-width:5;stroke-linecap:round;opacity:.28;pointer-events:none;vector-effect:non-scaling-stroke}
.kg-semantic-card{cursor:pointer}
.kg-semantic-card rect{fill:rgba(255,255,255,.92);stroke:#d8d5f4;stroke-width:1.2;filter:drop-shadow(0 12px 28px rgba(31,31,29,.10))}
.kg-semantic-card:hover rect{fill:#f0effb;stroke:#aaa4ea}
.kg-semantic-card text{fill:var(--kg-text);font-size:12px;pointer-events:none}
.kg-semantic-card .kg-semantic-title{font-size:15px;font-weight:720}
.kg-semantic-card .kg-semantic-sub{fill:var(--kg-sub);font-size:11px}
.kg-semantic-card .kg-semantic-warn{fill:#8f3f3f;font-size:11px}
/* portal pair #2: 全景魔方覆盖层穿透→子元素交互 */ .kg-cube-overlay{--kg-nav-scale:1;--kg-nav-pan-x:0px;--kg-nav-pan-y:0px;--kg-cube-stage-size:214px;--kg-cube-docked-stage-size:166px;--kg-cube-face-gap:6px;--kg-cube-face-padding:13px;--kg-cube-face-radius:26px;--kg-cubelet-radius:15px;--kg-cubelet-bg:rgba(255,255,255,.9);--kg-cubelet-label-font-size:14px;--kg-cubelet-label-color:#161615;--kg-cubelet-label-bg:rgba(255,255,255,.97);--kg-cubelet-label-border:rgba(216,213,244,.88);--kg-cubelet-label-radius:13px;--kg-cubelet-label-padding:4px;--kg-cubelet-label-line-height:1.02;--kg-face-band-fill:rgba(255,255,255,.46);--kg-face-band-stroke:rgba(255,255,255,.56);--kg-face-band-active-fill:rgba(245,243,255,.68);--kg-face-band-active-stroke:rgba(95,85,214,.42);--kg-face-band-label-color:rgba(111,109,104,.82);--kg-face-band-active-label-color:#5f55d6;--kg-face-band-font-size:13px;--kg-face-band-stroke-width:2;--kg-return-pill-top:-30px;--kg-return-pill-x:0px;--kg-return-pill-height:28px;--kg-return-pill-font-size:11px;--kg-return-pill-padding-x:12px;--kg-return-pill-radius:999px;--kg-return-pill-border-width:1px;position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;pointer-events:var(--kg-pe-overlay);overflow:visible}
.kg-cube-overlay[hidden]{display:none}
.kg-cube-overlay:not(.is-docked){transition:opacity 0.22s ease}
.kg-cube-overlay.is-docked{--kg-nav-scale:.78;--kg-cube-docked-stage-size:172px;inset:var(--kg-right-rail-start) var(--kg-right-rail-right) auto auto;z-index:8;align-items:flex-start;justify-content:flex-end;width:var(--kg-docked-cube-card-width);min-height:var(--kg-docked-cube-card-height)}
.kg-cube-overlay.is-docked[data-kg-dock-scale="compact"]{--kg-nav-scale:.72}
.kg-cube-overlay.is-docked[data-kg-dock-scale="standard"]{--kg-nav-scale:.88}
.kg-cube-overlay.is-docked[data-kg-dock-scale="expanded"]{--kg-nav-scale:1;width:420px;min-height:360px}
.kg-cube-overlay.is-centered{position:absolute;left:50%;top:50%;right:auto;bottom:auto;width:0;height:0;transform:translate(calc(-50% + var(--kg-nav-pan-x,0px)),calc(-50% + var(--kg-nav-pan-y,0px)));overflow:visible}
/* portal pair #3: 魔方外壳穿透→子元素交互 */ .kg-cube-shell{--kg-cube-size:128px;--kg-cube-face-z:64px;width:min(720px,72vw);min-height:420px;display:flex;align-items:center;justify-content:center;gap:12px;pointer-events:var(--kg-pe-overlay);overflow:visible}
.kg-cube-overlay.is-docked .kg-cube-shell{--kg-cube-size:108px;--kg-cube-face-z:54px;width:var(--kg-docked-cube-card-width);min-height:var(--kg-docked-cube-card-height);grid-template-columns:1fr;gap:6px;padding:8px;border:1px solid rgba(216,213,244,.86);border-radius:18px;background:rgba(255,255,255,.78);box-shadow:0 14px 38px rgba(31,31,29,.10);backdrop-filter:blur(14px)}
.kg-cube-stage{position:relative;width:var(--kg-cube-stage-size);height:var(--kg-cube-stage-size);perspective:760px;place-self:center;filter:drop-shadow(0 22px 58px rgba(95,85,214,.22));cursor:grab;touch-action:none;pointer-events:var(--kg-pe-interactive);overflow:visible;transform:scale(var(--kg-nav-scale));transform-origin:center}
.kg-cube-overlay.is-docked .kg-cube-stage{width:var(--kg-cube-docked-stage-size);height:var(--kg-cube-docked-stage-size);perspective:620px;filter:drop-shadow(0 18px 42px rgba(95,85,214,.20))}
.kg-cube-stage.dragging{cursor:grabbing}
.kg-webgl-cube-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:8;display:block;pointer-events:var(--kg-pe-interactive)}
.kg-cube-stage .kg-cube{opacity:.92;pointer-events:var(--kg-pe-interactive);animation:kg-cube-spin 5.8s ease-in-out infinite}
.kg-cube-stage.kg-webgl-ready .kg-cube,.kg-cube-stage[data-kg-webgl-state="ready"] .kg-cube{opacity:0;pointer-events:var(--kg-pe-overlay);animation:none}
.kg-cube-stage.kg-webgl-fallback .kg-cube,.kg-cube-stage[data-kg-webgl-state="fallback"] .kg-cube{opacity:1}
.kg-cube{position:relative;z-index:8;width:var(--kg-cube-size);height:var(--kg-cube-size);margin:46px auto;transform-style:preserve-3d;transform:rotateX(var(--kg-cube-rot-x,-24deg)) rotateY(var(--kg-cube-rot-y,45deg)) rotateZ(0deg);animation:kg-cube-spin 5.8s ease-in-out infinite}
.kg-cube.kg-webgl-host{opacity:0!important;pointer-events:var(--kg-pe-overlay)!important;animation:none!important;background:transparent!important;box-shadow:none!important}
.kg-cube.kg-webgl-host::before{display:none}
.kg-cube-stage[data-kg-webgl-state="ready"] .kg-center-anchor{display:none}
.kg-cube-overlay.is-docked .kg-cube{margin:20px auto}
.kg-cube-stage.dragging .kg-cube{animation:none}
.kg-cube::before{content:"";position:absolute;inset:24px;border-radius:42px;background:radial-gradient(circle at 45% 40%,rgba(255,255,255,.34),rgba(139,92,246,.10) 48%,transparent 72%);transform:translateZ(-92px);filter:blur(18px);pointer-events:none}
.kg-cube-hotzone-grid{position:absolute;left:50%;top:50%;z-index:13;width:116px;height:116px;transform:translate(calc(-50% + var(--kg-hit-area-offset-x,0px)),calc(-50% + var(--kg-hit-area-offset-y,0px))) scale(var(--kg-hit-area-scale,1));pointer-events:var(--kg-pe-interactive);transform-origin:center}
.kg-cube-hotzone-grid[data-kg-hotzone-mode="panorama"]:not(.is-hotzone-debug){pointer-events:var(--kg-pe-interactive)}
.kg-cube-overlay.is-docked .kg-cube-hotzone-grid[data-kg-hotzone-mode="panorama"]{pointer-events:var(--kg-pe-interactive)}
.kg-cube-hotzone-grid button{position:absolute;transform:translate(-50%,-50%);border:0;border-radius:12px;background:transparent;color:transparent;cursor:pointer;box-shadow:none;outline:none;transition:background .14s ease,box-shadow .14s ease,color .14s ease}
.kg-cube-hotzone-grid.is-hotzone-debug button{background:var(--kg-hit-area-fill);box-shadow:inset 0 0 0 1px var(--kg-hit-area-stroke);color:#5f55d6}
.kg-cube-hotzone-grid[data-kg-hotzone-mode="face"] button:hover,.kg-cube-hotzone-grid[data-kg-hotzone-mode="face"] button:focus-visible,.kg-cube-hotzone-grid[data-kg-hotzone-mode="face"] button.kg-hotzone-active{outline:2px solid rgba(95,85,214,.58);outline-offset:-2px;border:1px solid rgba(95,85,214,.42);box-shadow:0 0 18px rgba(95,85,214,.18)}
.kg-cube-overlay.is-docked .kg-cube-hotzone-grid[data-kg-hotzone-mode="face"] button:hover,.kg-cube-overlay.is-docked .kg-cube-hotzone-grid[data-kg-hotzone-mode="face"] button:focus-visible,.kg-cube-overlay.is-docked .kg-cube-hotzone-grid[data-kg-hotzone-mode="face"] button.kg-hotzone-active{outline:2px solid rgba(95,85,214,.58);outline-offset:-2px;border:1px solid rgba(95,85,214,.42);box-shadow:0 0 18px rgba(95,85,214,.18)}
.kg-cube-hotzone-grid[data-kg-hotzone-mode="face"] button.kg-hotzone-active{outline:2px solid rgba(95,85,214,.58)!important;outline-offset:-2px!important;border:1px solid rgba(95,85,214,.42)!important;box-shadow:0 0 18px rgba(95,85,214,.18)!important}
.kg-cube-hotzone-grid.is-hotzone-debug button:hover,.kg-cube-hotzone-grid.is-hotzone-debug button:focus-visible{background:rgba(245,243,255,.42);box-shadow:inset 0 0 0 1px rgba(95,85,214,.58)}
.kg-cube-hotzone-grid button[aria-pressed="true"]{background:rgba(95,85,214,.12);box-shadow:inset 0 0 0 1px rgba(95,85,214,.42)}
.kg-cube-hotzone-grid span{display:none;position:absolute;left:4px;top:3px;font-size:10px;font-weight:840;line-height:1;color:#5f55d6}
.kg-cube-hotzone-grid em{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);font-style:normal}
.kg-cube-hotzone-grid.is-hotzone-debug.show-labels span{display:block}
.kg-cube-overlay.is-docked .kg-cube-hotzone-grid{width:88px;height:88px}
.kg-cube-overlay.is-docked .kg-cube-hotzone-grid button{border-radius:9px}
.kg-cube-overlay.is-docked[data-kg-dock-scale="expanded"] .kg-cube-hotzone-grid{width:116px;height:116px}
.kg-cube-face{position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:var(--kg-cube-face-gap);padding:var(--kg-cube-face-padding);border:1px solid rgba(212,196,255,.46);border-radius:var(--kg-cube-face-radius);background:rgba(248,249,255,.72);box-shadow:inset 0 0 28px rgba(255,255,255,.46),0 0 30px rgba(139,92,246,.14);backdrop-filter:none;backface-visibility:hidden;transform-style:preserve-3d}
.kg-cube-face[data-face="content"]{transform:translateZ(var(--kg-cube-face-z))}
.kg-cube-face[data-face="business"]{transform:rotateY(90deg) translateZ(var(--kg-cube-face-z))}
.kg-cube-face[data-face="technical"]{transform:rotateY(180deg) translateZ(var(--kg-cube-face-z))}
.kg-cube-face[data-face="governance"]{transform:rotateY(-90deg) translateZ(var(--kg-cube-face-z))}
.kg-cube-face[data-face="state"]{transform:rotateX(90deg) translateZ(var(--kg-cube-face-z))}
.kg-cube-face[data-face="time"]{transform:rotateX(-90deg) translateZ(var(--kg-cube-face-z))}
.kg-cubelet{position:relative;border:1px solid rgba(216,213,244,.86);border-radius:var(--kg-cubelet-radius);background:var(--kg-cubelet-bg);box-shadow:inset 0 0 14px rgba(255,255,255,.50),0 0 16px rgba(95,85,214,.12);color:var(--kg-text);font-size:10px;line-height:1.2;padding:8px;display:flex;flex-direction:column;justify-content:space-between;cursor:pointer;text-align:center;transform-style:preserve-3d;transform:translateZ(10px);min-height:66px}
.kg-cubelet::before{content:"";position:absolute;inset:4px -9px -9px 8px;border-radius:14px;background:rgba(168,216,255,.30);transform:translateZ(-14px);filter:blur(.1px);z-index:-1}
.kg-cubelet::after{content:"";position:absolute;inset:1px;border-radius:14px;background:radial-gradient(circle at 24% 20%,rgba(255,255,255,.56),transparent 48%);box-shadow:inset -10px -10px 18px rgba(95,85,214,.12);pointer-events:none}
.kg-cubelet[data-depth-layer="2"]{transform:translateZ(18px);background:rgba(245,252,255,.76)}
.kg-cubelet[data-depth-layer="3"]{transform:translateZ(26px);background:rgba(250,247,255,.80);box-shadow:inset 0 0 20px rgba(255,255,255,.58),0 0 26px rgba(153,85,221,.18)}
.kg-cubelet:hover{border-color:#aaa4ea;background:rgba(245,244,255,.94);box-shadow:0 0 28px rgba(95,85,214,.28);transform:translateZ(34px)}
.kg-cubelet b{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;flex-direction:column;aspect-ratio:1 / 1;width:calc(100% - 2px);margin:auto;border:1px solid var(--kg-cubelet-label-border);border-radius:var(--kg-cubelet-label-radius);background:var(--kg-cubelet-label-bg);padding:var(--kg-cubelet-label-padding);font-size:var(--kg-cubelet-label-font-size);font-weight:820;line-height:var(--kg-cubelet-label-line-height);color:var(--kg-cubelet-label-color);max-width:100%;overflow:hidden;white-space:normal;box-shadow:0 6px 14px rgba(31,31,29,.08)}.kg-cubelet b i{display:block;font-style:normal}.kg-cubelet span{position:relative;z-index:1;font-size:10px;color:var(--kg-sub)}
.kg-cube-overlay.is-docked .kg-cube-face{gap:5px;padding:8px;border-radius:14px}
.kg-cube-overlay.is-docked .kg-cubelet{min-height:28px;border-radius:8px;padding:3px;font-size:0}
.kg-cube-overlay.is-docked .kg-cubelet b{font-size:8px}.kg-cube-overlay.is-docked .kg-cubelet span{display:none}
.kg-center-anchor{position:absolute;left:50%;top:50%;z-index:8;transform:translate(-50%,-50%);width:112px;height:112px;border:1px solid rgba(216,213,244,.92);border-radius:34px;background:radial-gradient(circle at 35% 28%,rgba(255,255,255,.96),rgba(245,244,255,.86) 56%,rgba(224,238,255,.72));box-shadow:0 18px 48px rgba(95,85,214,.18),inset 0 0 28px rgba(255,255,255,.72);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:14px;color:#4c46aa;pointer-events:none}
.kg-center-anchor::before{content:"";position:absolute;inset:-14px;border:1px solid rgba(216,213,244,.45);border-radius:42px;background:rgba(255,255,255,.18);z-index:-1}
.kg-center-anchor small{font-size:10px;color:#8c86d9;font-weight:760;letter-spacing:.08em;text-transform:uppercase}
.kg-center-anchor b{margin-top:5px;font-size:16px;line-height:1.15;color:#2f2d42;max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kg-center-anchor span{margin-top:5px;font-size:10px;line-height:1.35;color:#6f6d80;max-width:88px}
.kg-cube-copy{display:none;border:1px solid rgba(230,228,223,.9);border-radius:16px;background:rgba(255,255,255,.78);box-shadow:0 18px 48px rgba(31,31,29,.08);padding:14px;color:var(--kg-text)}
.kg-cube-copy h3{margin:0 0 6px;font-size:16px}.kg-cube-copy p{margin:0;color:var(--kg-sub);font-size:12px;line-height:1.65}
.kg-cube-overlay.is-docked .kg-cube-copy{padding:0;border:0;background:transparent;box-shadow:none}.kg-cube-overlay.is-docked .kg-cube-copy p{display:none}.kg-cube-overlay.is-docked .kg-cube-copy h3{font-size:12px;margin-bottom:5px}
/* portal pair #2 child: 返回按钮交互 */ .kg-cube-status-badge{position:absolute;left:50%;top:var(--kg-return-pill-top);z-index:26;transform:translateX(calc(-50% + var(--kg-return-pill-x)));min-height:var(--kg-return-pill-height);border:var(--kg-return-pill-border-width) solid rgba(216,213,244,.9);border-radius:var(--kg-return-pill-radius);background:rgba(255,255,255,.93);box-shadow:0 10px 26px rgba(31,31,29,.08);color:#5f55d6;font-size:var(--kg-return-pill-font-size);font-weight:760;padding:0 var(--kg-return-pill-padding-x);pointer-events:var(--kg-pe-interactive);white-space:nowrap;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;transition:transform .18s ease,background .18s ease,border-color .18s ease,color .18s ease}
.kg-cube-status-badge:hover,.kg-cube-status-badge:focus-visible{transform:translateX(calc(-50% + var(--kg-return-pill-x))) translateY(-1px);background:#f0effb;border-color:#aaa4ea;color:#3f36b8;outline:none}
/* portal pair #4: 面环容器穿透→子元素交互 */ .kg-cube-capsules{position:absolute;inset:-64px;z-index:5;pointer-events:var(--kg-pe-overlay);border-radius:50%}
/* portal pair #4 child: 面环热区交互 */ .kg-face-band-hit-capsules{position:absolute;inset:-64px;z-index:24;pointer-events:var(--kg-pe-interactive);border-radius:50%}
/* 全景非 dock 态：hit-capsules 可交互 — 2026-06-11 恢复，由 orbit-node pointer-events:auto 层叠防拦截 */
.kg-cube-overlay:not(.is-docked) .kg-face-band-hit-capsules{pointer-events:var(--kg-pe-interactive)}
.kg-face-band-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.kg-face-band-hit-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:var(--kg-pe-interactive)}
.kg-face-band-segment{fill:var(--kg-face-band-fill);stroke:var(--kg-face-band-stroke);stroke-width:var(--kg-face-band-stroke-width);stroke-linejoin:round;stroke-linecap:round;filter:none;pointer-events:visiblePainted;cursor:pointer}
.kg-face-band-hit-segment{fill:rgba(0,0,0,.001);stroke:transparent;stroke-width:0;pointer-events:all;cursor:pointer}
.kg-face-band-divider{stroke:rgba(216,213,244,.74);stroke-width:1;pointer-events:none}
.kg-face-band-label{font-size:var(--kg-face-band-font-size);font-weight:720;letter-spacing:.04em;text-anchor:middle;dominant-baseline:middle;fill:var(--kg-face-band-label-color);pointer-events:none}
.kg-face-band-item{outline:none;transform-box:view-box;transform-origin:110px 110px;transition:transform .16s ease,opacity .18s ease}
.kg-face-band-item:focus,.kg-face-band-item:focus-visible{outline:none}
.kg-face-band-item.active,.kg-face-band-item:hover,.kg-face-band-item:focus-visible{transform:scale(1.025)}
.kg-face-band-item.active .kg-face-band-segment,.kg-face-band-item:hover .kg-face-band-segment{fill:var(--kg-face-band-active-fill);stroke:var(--kg-face-band-active-stroke);filter:none}
.kg-face-band-item:focus-visible .kg-face-band-segment{fill:rgba(245,243,255,.68);stroke:rgba(95,85,214,.78);filter:none}
.kg-face-band-item.active .kg-face-band-label,.kg-face-band-item:hover .kg-face-band-label{fill:var(--kg-face-band-active-label-color)}
.kg-face-band-hit-item{outline:none}.kg-face-band-hit-item:hover .kg-face-band-hit-segment,.kg-face-band-hit-item:focus-visible .kg-face-band-hit-segment{fill:rgba(245,243,255,.34);stroke:rgba(95,85,214,.34);stroke-width:1.5}
.kg-cube-overlay.is-docked .kg-cube-status-badge{top:calc(var(--kg-return-pill-top) + 10px);font-size:calc(var(--kg-return-pill-font-size) - 2px);min-height:calc(var(--kg-return-pill-height) - 8px);padding:0 7px}.kg-cube-overlay.is-docked .kg-cube-capsules,.kg-cube-overlay.is-docked .kg-face-band-hit-capsules{inset:-34px}.kg-cube-overlay.is-docked .kg-face-band-label{font-size:8px}.kg-cube-overlay.is-docked .kg-face-band-segment{stroke-width:2}
/* portal pair #5: 六面环轨道容器穿透→子节点交互 */ .kg-orbit-cluster{position:absolute;left:50%;top:50%;width:540px;height:390px;margin-left:-270px;margin-top:-195px;pointer-events:var(--kg-pe-overlay);touch-action:none;z-index:12}
.kg-orbit-links{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:0}
.kg-orbit-link{stroke:rgba(111,109,104,.22);stroke-width:1.2;stroke-dasharray:5 4;vector-effect:non-scaling-stroke}
.kg-orbit-sector-guide{stroke:rgba(124,110,230,.2);stroke-width:1;stroke-dasharray:2 7;vector-effect:non-scaling-stroke}
.kg-orbit-sector-label{display:none}
.kg-orbit-inner-mask{display:none}
.kg-cube-overlay.is-docked .kg-orbit-cluster{display:none}
/* portal pair #5 child: 轨道节点交互 */ .kg-orbit-node{position:absolute;left:50%;top:50%;width:92px;height:92px;border:1px solid rgba(216,213,244,.9);border-radius:50%;background:rgba(255,255,255,.92);box-shadow:0 16px 36px rgba(31,31,29,.11);color:var(--kg-text);font-size:12px;line-height:1.16;padding:10px;cursor:pointer;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:translate(calc(var(--orbit-x,0px) + var(--orbit-pan-x,0px) + var(--orbit-drag-x,0px) - 50%),calc(var(--orbit-y,0px) + var(--orbit-pan-y,0px) + var(--orbit-drag-y,0px) - 50%)) scale(var(--orbit-scale,.92));opacity:var(--orbit-opacity,.82);z-index:var(--orbit-z,1);pointer-events:var(--kg-pe-interactive);animation:kg-nav-soft-enter .18s ease-out both;transition:transform .18s ease,opacity .18s ease,box-shadow .18s ease,border-color .18s ease,background .18s ease,color .18s ease}
/* 健康度厚边 — 设计契约: 20260509_KG_NODE_OBSERVABILITY_HOVER_DESIGN.md §3 */
.kg-orbit-node[data-kg-health="high"]{border-color:rgba(72,187,120,.8);border-width:3px}
.kg-orbit-node[data-kg-health="medium"]{border-color:rgba(237,180,60,.75);border-width:2.5px}
.kg-orbit-node[data-kg-health="low"]{border-color:rgba(239,68,68,.65);border-width:2px}
/* 治理卡节点响应：选中节点时 dot 灰化/彩化 */
.kg-governance-node-selected .kg-engine-dot{filter:grayscale(1);opacity:.35;transition:filter .15s,opacity .15s}
.kg-governance-node-selected .kg-engine-dot.kg-dot-satisfied{filter:none;opacity:1}
.kg-orbit-node b{display:block;font-size:14px;max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kg-orbit-node span{display:block;color:var(--kg-sub);font-size:10px;margin-top:4px}
.kg-orbit-node.active,.kg-orbit-node:hover{border-color:#aaa4ea;background:#f0effb;color:#5f55d6;box-shadow:0 16px 38px rgba(95,85,214,.18)}
.kg-orbit-node[data-kg-orbit-focus="1"]{border-color:#7c6ee6;box-shadow:0 18px 48px rgba(95,85,214,.24)}
.kg-orbit-node.leaf{cursor:default}
.kg-orbit-node.leaf span::after{content:" · 叶子";color:#a19d94}
.kg-orbit-node.dragging{transition:none;opacity:1;z-index:24;cursor:grabbing}
.kg-orbit-node.center-preview{border-color:#5f55d6;background:#fff7d6;box-shadow:0 0 0 8px rgba(255,204,77,.18),0 20px 52px rgba(95,85,214,.28)}
.kg-orbit-center-preview{position:absolute;left:50%;top:50%;z-index:11;transform:translate(-50%,-50%);border:1px solid rgba(95,85,214,.26);border-radius:999px;background:rgba(255,255,255,.86);box-shadow:0 16px 42px rgba(95,85,214,.12);color:#5f55d6;font-size:11px;font-weight:760;padding:7px 10px;pointer-events:none;opacity:0;transition:opacity .16s ease}
.kg-orbit-cluster.center-preview .kg-orbit-center-preview{opacity:1}
.kg-orbit-tools{display:none!important}
.kg-orbit-tools button{border:1px solid rgba(216,213,244,.9);border-radius:999px;background:#fbfbfa;color:#5f55d6;font-size:10px;padding:4px 8px;cursor:pointer}
.kg-orbit-tools button:hover{background:#f0effb}
.kg-orbit-cluster.dragging .kg-orbit-node{transition:none}
.kg-orbit-cluster.expanding .kg-orbit-node{box-shadow:0 18px 44px rgba(95,85,214,.16)}
.kg-cube-face-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.kg-cube-face-list button{border:1px solid var(--kg-line);border-radius:999px;background:#fbfbfa;color:var(--kg-sub);font-size:11px;padding:4px 8px;cursor:pointer}
.kg-cube-face-list button:hover{background:#f0effb;color:#5f55d6;border-color:#d8d5f4}
.kg-cube-reset{margin-top:10px}
.kg-cube-tuner{width:286px;max-height:430px;overflow:auto;overscroll-behavior:contain;border:1px solid rgba(216,213,244,.88);border-radius:16px;background:rgba(255,255,255,.91);box-shadow:0 18px 52px rgba(31,31,29,.12);padding:8px 10px;color:var(--kg-sub);font-size:11px;backdrop-filter:blur(14px);scrollbar-width:thin;scrollbar-color:rgba(95,85,214,.22) transparent}.kg-cube-tuner:not(.open){display:none}.kg-cube-tuner::-webkit-scrollbar{width:5px}.kg-cube-tuner::-webkit-scrollbar-thumb{background:rgba(95,85,214,.25);border-radius:3px}.kg-cube-overlay.is-docked .kg-cube-tuner{display:none}.kg-cube-tuner summary{cursor:pointer;color:#5f55d6;font-weight:800;list-style:none}.kg-cube-tuner summary::-webkit-details-marker{display:none}.kg-cube-tuner-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.kg-cube-tuner-head span{font-size:10px;color:var(--kg-sub);font-weight:600}.kg-cube-tuner-preset{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-top:9px;padding:7px;border:1px solid rgba(230,228,223,.86);border-radius:12px;background:rgba(247,247,245,.72)}.kg-cube-tuner-preset select{grid-column:1 / -1;border:1px solid var(--kg-line);border-radius:9px;background:#fff;color:var(--kg-text);font-size:11px;padding:5px 7px;outline:none}.kg-cube-tuner button{border:1px solid var(--kg-line);border-radius:999px;background:#fbfbfa;color:#5f55d6;font-size:10px;font-weight:760;padding:5px 8px;cursor:pointer}.kg-cube-tuner button:hover{background:#f0effb;border-color:#d8d5f4}.kg-cube-tuner button.danger{color:#b45353;background:rgba(255,241,242,.78);border-color:rgba(180,83,83,.22)}.kg-cube-tuner-primary{width:100%;margin-top:8px;background:#5f55d6!important;color:#fff!important;border-color:rgba(95,85,214,.35)!important}.kg-cube-tuner-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:7px}.kg-cube-tuner-status{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:7px;border-top:1px solid rgba(230,228,223,.86);font-size:10px;color:var(--kg-sub)}.kg-cube-tuner-dot{width:7px;height:7px;border-radius:50%;background:#b8b4aa}.kg-cube-tuner-dot.connected{background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.12)}.kg-cube-tuner-save-status{margin-left:auto;color:#22a06b;font-weight:760;display:none}.kg-cube-tuner-section{margin-top:9px;padding-top:8px;border-top:1px solid rgba(230,228,223,.88)}.kg-cube-tuner-title{font-size:10px;font-weight:780;color:var(--kg-text);margin-bottom:6px}.kg-cube-tuner-grid{display:grid;grid-template-columns:1fr;gap:6px}.kg-cube-tuner label{display:grid;grid-template-columns:84px 1fr 42px;gap:6px;align-items:center}.kg-cube-tuner input[type=range]{width:100%}.kg-cube-tuner input[type=number]{width:58px;border:1px solid var(--kg-line);border-radius:8px;background:#fff;padding:3px 5px;color:var(--kg-text);font-size:11px}.kg-cube-tuner input[type=color]{width:34px;height:24px;border:0;background:transparent;padding:0}.kg-cube-tuner input[type=checkbox]{accent-color:#5f55d6;justify-self:start}.kg-cube-tuner-value{font-variant-numeric:tabular-nums;text-align:right;color:var(--kg-sub);font-size:10px}.kg-cube-json-overlay{display:none;margin-top:8px;border:1px solid rgba(216,213,244,.88);border-radius:12px;background:rgba(255,255,255,.96);padding:8px;box-shadow:0 12px 32px rgba(31,31,29,.10)}.kg-cube-json-overlay pre{max-height:170px;overflow:auto;margin:0;color:#5f55d6;font-size:10px;line-height:1.55;user-select:text;white-space:pre-wrap}.kg-cube-json-actions{display:flex;gap:6px;margin-top:7px}.kg-cube-tune-hint{position:absolute;right:-34px;bottom:-42px;z-index:12;border:1px solid rgba(216,213,244,.86);border-radius:999px;background:rgba(255,255,255,.88);box-shadow:0 10px 26px rgba(31,31,29,.08);color:#5f55d6;font-size:10px;font-weight:760;padding:4px 8px;pointer-events:none;transition:opacity .4s ease}.kg-cube-tune-hint.fade{opacity:0}.kg-cube-debug-frame{display:none;position:absolute;inset:0;z-index:10;border:1px dashed rgba(180,83,9,.72);border-radius:50%;pointer-events:none}.kg-cube-debug-frame::before{content:"预览边界";position:absolute;left:8px;top:-18px;color:#b45309;font-size:10px;background:rgba(255,255,255,.88);border:1px solid rgba(180,83,9,.24);border-radius:999px;padding:1px 6px}.kg-cube-hit-ring{display:none;position:absolute;left:50%;top:50%;z-index:11;transform:translate(-50%,-50%);border:1px dashed rgba(95,85,214,.72);border-radius:50%;pointer-events:none}.kg-cube-hit-ring::after{content:"热区";position:absolute;right:4px;bottom:4px;color:#5f55d6;font-size:10px;background:rgba(255,255,255,.88);border:1px solid rgba(95,85,214,.24);border-radius:999px;padding:1px 6px}
/* portal pair #6: 调谐器浮窗容器穿透→内层交互 */ .kg-cube-tuner-host{position:fixed;left:212px;top:104px;z-index:2147483000;pointer-events:var(--kg-pe-overlay)}.kg-cube-tuner-host[hidden]{display:none}.kg-cube-tuner-host .kg-cube-tuner{width:326px;max-height:calc(100vh - 132px);overflow:auto;overscroll-behavior:contain;pointer-events:var(--kg-pe-interactive)}.kg-cube-tuner-host .kg-cube-tuner:not(.open){display:none}.kg-cube-tuner-head b{font-size:12px;color:#5f55d6}.kg-cube-tuner-close{flex:0 0 auto;min-width:0;width:28px;height:28px;padding:0!important;border-radius:50%!important;font-size:15px!important;line-height:1!important;color:#6f6d68!important;background:#fff!important}.kg-cube-tuner-close:hover{color:#5f55d6!important;background:#f0effb!important}.kg-cube-tuner-kicker{display:block;margin-top:2px;color:var(--kg-sub);font-size:10px;font-weight:600}@media (max-width:900px){.kg-cube-tuner-host{left:12px;top:84px}.kg-cube-tuner-host .kg-cube-tuner{width:min(326px,calc(100vw - 24px))}}
@keyframes kg-cube-spin{0%,100%{filter:brightness(1)}50%{filter:brightness(1.06)}}
@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}
@keyframes kg-map-soft-refresh{0%{opacity:.18;filter:blur(1.2px)}100%{opacity:1;filter:blur(0)}}
@keyframes kg-nav-soft-enter{0%{opacity:0;filter:blur(.4px);transform:translate(calc(var(--orbit-x,0px) + var(--orbit-pan-x,0px) + var(--orbit-drag-x,0px) - 50%),calc(var(--orbit-y,0px) + var(--orbit-pan-y,0px) + var(--orbit-drag-y,0px) - 50%)) scale(calc(var(--orbit-scale,.92) * .96))}100%{opacity:var(--orbit-opacity,.82);filter:blur(0);transform:translate(calc(var(--orbit-x,0px) + var(--orbit-pan-x,0px) + var(--orbit-drag-x,0px) - 50%),calc(var(--orbit-y,0px) + var(--orbit-pan-y,0px) + var(--orbit-drag-y,0px) - 50%)) scale(var(--orbit-scale,.92))}}
/* Ghost 子节点：画布拖动方向就近 L1 节点旁浮现的 L2+ 预览（pointer-events:none，纯视觉） */
.kg-orbit-ghost-child{pointer-events:none!important;border-style:dashed!important;opacity:.55;font-size:.78em;transition:opacity .15s ease}
.kg-orbit-ghost-child[data-kg-ghost-depth="2"]{opacity:.42;font-size:.7em}
.kg-orbit-ghost-child[data-kg-ghost-depth="3"]{opacity:.30;font-size:.63em}
.kg-orbit-ghost-child.fading{opacity:0!important}
/* 持久展开子节点：热区模型驱动，可点击，全周方向 */
/* 设计契约: docs/platform/20260509_KG_PERSISTENT_EXPANSION_HOTZONE_EDGES_DESIGN.md */
@keyframes kg-expand-node-in{from{opacity:0}to{opacity:var(--kg-expand-target-opacity,.78)}}
.kg-orbit-expanded-child{border-style:dashed!important;opacity:.78;font-size:.8em;transition:opacity .2s ease,transform .2s ease;cursor:pointer;animation:kg-expand-node-in .22s ease-out forwards}
.kg-orbit-expanded-child[data-kg-expand-depth="2"]{--kg-expand-target-opacity:.55;opacity:.55;font-size:.72em}
.kg-orbit-expanded-child[data-kg-expand-depth="3"]{--kg-expand-target-opacity:.38;opacity:.38;font-size:.64em}
.kg-orbit-expanded-child[data-kg-expand-depth="4"]{--kg-expand-target-opacity:.25;opacity:.25;font-size:.58em}
.kg-orbit-expanded-child:hover{opacity:1!important;z-index:10}
/* 展开边线 SVG overlay */
.kg-expand-edges-overlay{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:visible}
.kg-expand-edge{fill:none;stroke:rgba(95,85,214,.28);stroke-width:1.5px;stroke-dasharray:4 3;stroke-linecap:round}
.kg-ghost-edges-overlay{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:visible}
.kg-ghost-edge{fill:none;stroke:rgba(139,130,234,.32);stroke-width:1.2px;stroke-dasharray:3 4;stroke-linecap:round;opacity:0.7}
/* 节点 hover 知识摘要弹窗 */
.kg-node-popover{position:fixed;z-index:9999;max-width:240px;min-width:160px;background:rgba(255,255,255,.96);border:1.5px solid rgba(95,85,214,.22);border-radius:12px;padding:10px 13px;box-shadow:0 8px 28px rgba(95,85,214,.14),0 2px 8px rgba(0,0,0,.08);backdrop-filter:blur(6px);font-size:12px;line-height:1.5;pointer-events:auto;transition:opacity .12s ease}
.kg-node-popover-title{font-weight:700;font-size:13px;color:#1a1a19;margin-bottom:2px}
.kg-node-popover-domain{font-size:10px;color:#8a7fd4;letter-spacing:.05em;margin-bottom:4px}
.kg-node-popover-summary{color:#44443f;margin:0 0 6px}
.kg-node-popover-tags{display:flex;flex-wrap:wrap;gap:3px}
.kg-node-popover-tag{background:rgba(95,85,214,.08);color:#5f55d6;border-radius:6px;padding:1px 6px;font-size:10px}
.kg-node-popover-source{font-size:10px;color:#b0ada8;margin-top:4px;word-break:break-all}
.kg-cube-overlay.kg-nav-transitioning .kg-face-band-item{opacity:.72}
.kg-cube-overlay.kg-nav-transitioning .kg-webgl-cube-canvas{filter:saturate(.96) brightness(1.02);transition:filter .18s ease}
@media (prefers-reduced-motion:reduce){.kg-orbit-node{animation:none}.kg-cube-status-badge,.kg-face-band-item{transition:none}}
.kg-selection-box{fill:rgba(95,85,214,.08);stroke:#5f55d6;stroke-width:1;stroke-dasharray:4 3;pointer-events:none}
.kg-map-title-card{position:absolute;top:8px;left:50%;z-index:9;transform:translateX(-50%);min-width:440px;max-width:min(760px,calc(100% - 360px));padding:12px 14px 10px;border:1px solid rgba(230,228,223,.88);border-radius:22px;background:rgba(255,255,255,.90);box-shadow:0 12px 30px rgba(31,31,29,.06);text-align:center;pointer-events:auto;backdrop-filter:blur(14px)}
.kg-map-title-main{display:block;font-size:13px;font-weight:840;color:#5f55d6;letter-spacing:.02em;line-height:1.2}
.kg-map-title-sub{font-size:12px;color:var(--kg-sub)}
.kg-map-title-nav-row{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:6px;flex-wrap:nowrap;min-height:24px}
.kg-nav-breadcrumb{display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;overflow:visible;min-height:24px}
.kg-nav-breadcrumb button{border:0;border-radius:999px;background:transparent;color:#5f55d6;font:inherit;font-weight:720;padding:2px 7px;cursor:pointer;transition:background .15s ease,color .15s ease}
.kg-nav-breadcrumb button:hover,.kg-nav-breadcrumb button:focus{background:#f0effb;color:#3f36b8;outline:none}
.kg-nav-breadcrumb span{color:var(--kg-sub);overflow:hidden;text-overflow:ellipsis}
.kg-nav-current{font-weight:720;color:var(--kg-text)}
.kg-source-switch{display:flex;justify-content:center;gap:6px;margin-top:7px;margin-bottom:8px;white-space:nowrap;overflow:visible;align-items:center}
.kg-source-switch::before{content:"图谱源";font-size:10px;color:#a19d94;margin-right:1px}
.kg-source-switch button{border:1px solid rgba(216,213,244,.86);border-radius:10px;background:#fff;color:var(--kg-sub);font-size:11px;padding:5px 9px;cursor:pointer;text-align:left}
.kg-source-switch button.active{background:#f0effb;color:#5f55d6;border-color:#aaa4ea}
.kg-source-switch button[disabled]{cursor:not-allowed;opacity:.54}
.kg-source-switch small{font-size:9px;color:#a19d94;margin-left:3px}
.kg-source-dropdown{position:relative;display:inline-flex}
.kg-source-dropdown>summary{list-style:none;display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(216,213,244,.88);border-radius:999px;background:rgba(255,255,255,.82);padding:5px 11px;color:#4b4943;cursor:pointer}
.kg-source-dropdown>summary::-webkit-details-marker{display:none}
.kg-source-dropdown>summary span{font-size:10px;color:#a19d94}.kg-source-dropdown>summary b{font-size:12px;color:#5f55d6}.kg-source-dropdown>summary i{font-style:normal;color:#8c86d9}
.kg-source-dropdown[open]>summary{background:#f0effb;border-color:#aaa4ea}
.kg-nav-dropdown{position:relative;display:inline-flex;align-items:center;gap:2px}
.kg-nav-dropdown>summary{list-style:none;cursor:pointer;border:1px solid rgba(216,213,244,.82);border-radius:999px;background:rgba(255,255,255,.72);color:#5f55d6;font-size:10px;line-height:1;padding:3px 6px}
.kg-nav-dropdown>summary::-webkit-details-marker{display:none}
.kg-nav-dropdown[open]>summary{background:#f0effb;border-color:#aaa4ea}
.kg-nav-menu{position:absolute;left:50%;top:calc(100% + 6px);z-index:50;transform:translateX(-50%);display:grid;gap:4px;min-width:156px;max-height:220px;overflow:auto;padding:7px;border:1px solid rgba(216,213,244,.88);border-radius:12px;background:rgba(255,255,255,.96);box-shadow:0 18px 48px rgba(31,31,29,.14);text-align:left}
.kg-nav-menu button{width:100%;border:0;border-radius:8px;background:transparent;color:#4b4943;padding:7px 8px;font-size:11px;text-align:left}
.kg-nav-menu button:hover,.kg-nav-menu button.active{background:#f0effb;color:#5f55d6}
.kg-top-explorer-bar{display:none!important}
.kg-top-current{min-width:0;border:1px solid rgba(230,228,223,.88);border-radius:13px;background:rgba(247,247,245,.78);padding:6px 9px;line-height:1.22}
.kg-top-current span{display:block;color:#8c86d9;font-size:10px;font-weight:760;letter-spacing:.04em}
.kg-top-current b{display:block;color:var(--kg-text);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kg-top-current em{display:block;color:var(--kg-sub);font-size:10px;font-style:normal;margin-top:2px}
.kg-top-pins{display:flex;align-items:center;gap:5px;min-width:0;overflow:hidden;pointer-events:auto}
.kg-top-pins span{color:var(--kg-sub);font-size:11px;white-space:nowrap}
.kg-top-pin{max-width:118px;border:1px solid rgba(216,213,244,.86);border-radius:999px;background:#fff;color:#5f55d6;font-size:11px;padding:5px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.kg-top-pin:hover{background:#f0effb;border-color:#aaa4ea}
.kg-cockpit-flow{display:none!important}
.kg-cockpit-flow-main{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid rgba(230,228,223,.78);border-radius:999px;background:rgba(255,255,255,.76);padding:5px 10px}
.kg-cockpit-flow-main b{font-size:12px;color:var(--kg-text)}
.kg-cockpit-flow-main span{font-size:11px;color:var(--kg-sub)}
.kg-cockpit-view-tabs{display:flex;gap:6px;flex-wrap:wrap}
.kg-cockpit-view-tabs button{border:1px solid rgba(216,213,206,.9);border-radius:999px;background:#fff;padding:3px 9px;font-size:11px;color:#4b4943}
.kg-cockpit-view-tabs button.active{border-color:#5f55d6;color:#4c46b6;background:#f3f1ff}
.kg-map-help{display:none!important}
/* portal pair #7: 交互HUD容器穿透→控件交互 */ .kg-interaction-hud{position:absolute;top:var(--kg-interaction-top);right:var(--kg-right-rail-right);z-index:9;display:grid;gap:6px;width:min(258px,var(--kg-right-rail-width));border:1px solid rgba(216,213,244,.82);border-radius:16px;background:rgba(255,255,255,.86);box-shadow:0 16px 40px rgba(31,31,29,.08);backdrop-filter:blur(12px);padding:10px;pointer-events:var(--kg-pe-overlay);opacity:0;transform:translateY(6px);transition:opacity .18s ease,transform .18s ease}
.kg-interaction-hud.is-visible{opacity:1;transform:translateY(0)}
.kg-interaction-hud.is-disabled{display:none}
.kg-interaction-hud-title{font-size:12px;font-weight:820;color:#5f55d6;letter-spacing:.04em}
/* portal pair #7 child: 控件交互 */ .kg-interaction-hud-controls{display:flex;align-items:center;justify-content:space-between;gap:6px;pointer-events:var(--kg-pe-interactive)}
.kg-interaction-hud-modes{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.kg-interaction-hud-chip{border:1px solid rgba(216,213,244,.82);border-radius:999px;background:#fff;color:#6f6d68;font-size:10px;line-height:1;padding:4px 7px;cursor:pointer}
.kg-interaction-hud-chip.active{background:rgba(95,85,214,.12);border-color:rgba(95,85,214,.45);color:#4c46aa}
.kg-interaction-hud-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
.kg-interaction-hud kbd{display:inline-flex;align-items:center;justify-content:center;min-width:30px;border:1px solid rgba(216,213,244,.92);border-radius:8px;background:rgba(245,244,255,.9);box-shadow:inset 0 -1px 0 rgba(31,31,29,.06);color:#4c46aa;font:700 11px/1.1 ui-monospace,SFMono-Regular,Consolas,monospace;padding:4px 6px}
.kg-interaction-hud span{display:flex;align-items:center;gap:5px;color:var(--kg-sub);font-size:11px;line-height:1.25;white-space:nowrap}
.kg-interaction-hud[data-kg-hud-mode="minimal"] .kg-interaction-hud-grid span:nth-child(n+5){display:none}
.kg-interaction-hud[data-kg-hud-mode="mouse"] [data-kg-hud-device="trackpad"]{display:none}
.kg-interaction-hud[data-kg-hud-mode="trackpad"] [data-kg-hud-device="mouse"]{display:none}
.kg-drawer-title{font-size:15px;font-weight:700;color:var(--kg-text);margin-bottom:4px}
.kg-drawer-subtitle{font-size:12px;color:var(--kg-sub);margin-bottom:10px}
.kg-gate-row{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.kg-gate-pill.ok{background:#f5f7f2;color:#49633a;border-color:#d8dfcf}
.kg-gate-pill.warn{background:#fbf2ef;color:#8f3f3f;border-color:#ead1ca}
.kg-chip.warn{background:#fbf2ef;color:#8f3f3f;border-color:#ead1ca}
.kg-timeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.kg-timeline-item{border:1px solid var(--kg-line);border-radius:10px;padding:9px;background:#fbfbfa;font-size:12px;color:var(--kg-sub)}
.kg-timeline-item b{display:block;color:var(--kg-text);margin-bottom:4px}
.kg-ask-panel{border:1px solid rgba(216,213,206,.32);border-radius:12px;background:rgba(255,255,255,.2);padding:10px;box-shadow:0 0 0 1px rgba(255,255,255,.28)}
.kg-ask-stream{position:absolute;left:14px;top:82px;bottom:238px;z-index:14;width:286px;display:flex;flex-direction:column;gap:8px}
.kg-ask-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:0}
.kg-ask-title{font-size:15px;font-weight:700;color:var(--kg-text);margin-bottom:4px}
.kg-current-slice-card{margin-top:8px;border:1px solid rgba(216,213,244,.82);border-radius:12px;background:rgba(245,244,255,.72);padding:9px;color:var(--kg-text);font-size:12px}
.kg-current-slice-card.kg-right-rail-card{display:none}
.kg-current-slice-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.kg-current-slice-label{font-size:11px;color:#5f55d6;font-weight:720}
.kg-current-slice-title{font-size:13px;font-weight:780;line-height:1.35}
.kg-current-slice-copy{margin-top:5px;color:var(--kg-sub);line-height:1.5}
.kg-current-slice-metrics,.kg-current-slice-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}
.kg-current-slice-metrics span{border:1px solid rgba(216,213,206,.9);border-radius:999px;background:rgba(255,255,255,.72);padding:2px 7px;color:var(--kg-sub);font-size:11px}
.kg-current-slice-pins{margin-top:8px;border-top:1px solid rgba(216,213,244,.72);padding-top:7px;color:var(--kg-sub)}
.kg-current-slice-pins b{display:block;color:var(--kg-text);font-size:11px;margin-bottom:5px}
.kg-current-slice-pin-actions{display:flex;gap:4px;flex-wrap:wrap}
.kg-current-slice-pin-actions .s-btn[aria-pressed="true"]{background:rgba(95,85,214,.14);border-color:rgba(95,85,214,.45);color:#3a2fa3}
.kg-current-slice-id{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;background:rgba(95,85,214,.06)!important;color:#3a2fa3!important;border-color:rgba(95,85,214,.22)!important;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kg-pinned-group{margin-top:6px}
.kg-pinned-group:first-child{margin-top:0}
.kg-pinned-group b{display:block;color:var(--kg-text);font-size:11px;margin-bottom:4px}
.kg-pinned-group-list{display:flex;flex-wrap:wrap;gap:4px}
.kg-slice-pin{border:1px solid rgba(216,213,244,.82);border-radius:999px;background:rgba(255,255,255,.74);color:#5f55d6;font-size:11px;padding:3px 7px;margin:0 5px 5px 0;cursor:pointer}
.kg-slice-favorite{border:1px solid rgba(244,180,90,.62);border-radius:999px;background:rgba(255,247,232,.85);color:#a36a18;font-size:11px;padding:3px 7px;margin:0 5px 5px 0;cursor:pointer}
.kg-slice-favorite:hover{background:rgba(255,239,210,.95);color:#824f0c}
.kg-ask-log{display:flex;flex-direction:column;gap:8px;flex:1;min-height:0;overflow:auto;padding:4px;background:transparent}
.kg-ask-empty-card{border:1px dashed rgba(216,213,206,.95);border-radius:10px;padding:10px;background:rgba(255,255,255,.66)}
.kg-ask-msg{max-width:100%;border:1px solid rgba(230,228,223,.9);border-radius:10px;padding:8px 9px;font-size:12px;line-height:1.6;background:rgba(255,255,255,.78);color:var(--kg-text)}
.kg-ask-msg.user{align-self:flex-end;background:rgba(244,243,240,.8)}
.kg-ask-msg.assistant{align-self:flex-start}
.kg-ask-msg.preview{align-self:stretch;border-color:#d8d5f4;background:rgba(245,244,255,.82)}
.kg-ask-msg.preview .kg-chip-row{margin-top:6px}
.kg-ask-card-title{font-weight:700;margin-bottom:4px}
.kg-ask-card-list{margin:6px 0 0 0;padding-left:18px;color:var(--kg-sub)}
.kg-ask-msg.driver{border-color:#d8d5f4;background:rgba(245,244,255,.82)}
.kg-ask-quick-row,.kg-ask-trust-strip{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.kg-ask-trust-strip span{border:1px solid #d8dfcf;border-radius:999px;padding:3px 8px;font-size:11px;color:#49633a;background:#f5f7f2}
.kg-ask-composer{display:flex;gap:8px;margin-top:10px;align-items:center}
.kg-ask-dock{position:fixed;left:calc(196px + (100vw - 196px)/2);bottom:16px;z-index:60;transform:translateX(-50%);width:min(760px,calc(100vw - 292px));margin:0;padding:8px 10px;border:1px solid rgba(216,213,206,.32);border-radius:14px;background:rgba(255,255,255,.5);box-shadow:0 0 0 1px rgba(255,255,255,.28)}
.settings-container.settings-sidebar-collapsed .kg-ask-dock{left:calc(58px + (100vw - 58px)/2);width:min(760px,calc(100vw - 154px))}
.kg-ask-input{flex:1;min-height:34px;max-height:42px;resize:none;overflow:auto}
.kg-ask-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}
.kg-view-3d-toggle{position:absolute;right:14px;bottom:52px;z-index:5;min-width:36px;height:30px;border:1px solid rgba(216,213,206,.9);border-radius:999px;background:rgba(255,255,255,.86);color:var(--kg-text);font-size:11px;font-weight:600;cursor:pointer;padding:0 10px}
.kg-view-3d-toggle:hover{background:#f2f1ee}
.kg-view-3d-toggle.active{background:var(--kg-accent);color:#fff;border-color:var(--kg-accent)}
.kg-zoom-rail{position:absolute;left:14px;bottom:16px;z-index:5;display:flex;gap:6px;align-items:center;padding:7px;border:1px solid rgba(230,228,223,.82);border-radius:999px;background:rgba(255,255,255,.76);box-shadow:0 12px 32px rgba(31,31,29,.07);backdrop-filter:blur(12px)}
.kg-zoom-btn{min-width:32px;height:30px;border:1px solid rgba(216,213,206,.9);border-radius:999px;background:rgba(255,255,255,.86);color:var(--kg-text);font-size:12px;cursor:pointer}
.kg-zoom-btn[data-kg-zoom="reset"],.kg-zoom-btn[data-kg-zoom="fit"]{font-size:10px;padding:0 8px}
.kg-zoom-btn:hover{background:#f2f1ee}
.kg-zoom-level{min-width:46px;text-align:center;font-size:11px;color:var(--kg-sub)}
.kg-graph-panel .react-flow__minimap{display:none!important}
.kg-graph-panel .react-flow__minimap svg{width:100%;height:100%;display:block}
.kg-context-menu{position:fixed;z-index:90;min-width:150px;padding:6px;border:1px solid rgba(230,228,223,.9);border-radius:12px;background:rgba(255,255,255,.94);box-shadow:0 18px 42px rgba(31,31,29,.14);backdrop-filter:blur(14px)}
.kg-context-menu[hidden]{display:none}
.kg-context-menu button{display:block;width:100%;border:0;background:transparent;border-radius:8px;padding:8px 10px;text-align:left;color:var(--kg-text);font-size:12px;cursor:pointer}
.kg-context-menu button:hover{background:#f2f1ee}
.kg-context-menu .kg-menu-header{font-size:11px;color:#8c8c8c;padding:6px 10px 2px;border-top:1px solid rgba(230,228,223,.6);margin-top:4px;cursor:default}
.kg-context-menu .kg-menu-header:first-child{border-top:0;margin-top:0}
/* CP5 · 底部工具栏：view-lens-bar + depth-banner 合并 */
.kg-bottom-toolbar{position:absolute;bottom:74px;left:50%;transform:translateX(-50%);z-index:7;display:flex;align-items:center;gap:4px;padding:4px 8px;border:1px solid rgba(230,228,223,.92);border-radius:999px;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);box-shadow:0 4px 16px rgba(31,31,29,.08);pointer-events:auto}
.kg-bottom-toolbar:empty{display:none}
.kg-bottom-toolbar-sep{width:1px;height:20px;background:rgba(230,228,223,.6);margin:0 4px;flex-shrink:0}
/* P0-B · KG 深度展开横幅（已移入底部工具栏 → 无 absolute 定位） */
.kg-depth-banner{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid rgba(230,228,223,.85);border-radius:20px;background:rgba(255,255,255,.88);box-shadow:0 4px 12px rgba(31,31,29,.06);backdrop-filter:blur(8px);font-size:11px;color:#595959;line-height:1;pointer-events:auto}
.kg-depth-banner-hint{display:none}
.kg-depth-banner-sep{margin:0 2px;color:#d9d9d9}
.kg-depth-banner-label{color:#8c8c8c}
.kg-depth-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;border-radius:9px;background:#5f55d6;color:#fff;font-size:10px;font-weight:600;padding:0 5px}
.kg-symbol-count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;border-radius:8px;background:#60a5fa;color:#fff;font-size:9px;font-weight:600;padding:0 4px;vertical-align:middle;margin-left:2px}
html[data-kg-symbol-level="0"] .kg-symbol-count-badge{display:none}
.kg-depth-banner-actions{display:inline-flex;gap:2px}
.kg-depth-btn{border:1px solid #d9d9d9;border-radius:10px;background:#fbfbfa;color:#595959;font-size:10px;padding:2px 7px;cursor:pointer;line-height:1.4}
.kg-depth-btn:hover{border-color:#b3b3b3;background:#f0f0f0}
.kg-depth-btn.active{background:#5f55d6;border-color:#5f55d6;color:#fff}
.kg-governance-queue{position:absolute;right:14px;top:92px;bottom:148px;z-index:6;width:310px;border:1px solid rgba(230,228,223,.9);border-radius:14px;background:rgba(255,255,255,.9);box-shadow:0 18px 48px rgba(31,31,29,.12);padding:10px;overflow:auto}
.kg-governance-queue[hidden]{display:none}
.kg-queue-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px}
.kg-queue-title{font-size:14px;font-weight:720;color:var(--kg-text)}
.kg-queue-sub{font-size:11px;color:var(--kg-sub);line-height:1.55;margin-top:2px}
.kg-queue-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.kg-queue-tabs button,.kg-queue-close{border:1px solid var(--kg-line);border-radius:999px;background:#fbfbfa;color:var(--kg-sub);font-size:11px;padding:4px 8px;cursor:pointer}
.kg-queue-tabs button.active{background:#f0effb;color:#5f55d6;border-color:#d8d5f4}
.kg-queue-list{display:flex;flex-direction:column;gap:8px}
.kg-queue-item{border:1px solid var(--kg-line);border-radius:10px;background:#fbfbfa;padding:8px}
.kg-queue-item b{display:block;color:var(--kg-text);font-size:12px;margin-bottom:3px}
.kg-queue-actions{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.kg-queue-actions button{border:1px solid var(--kg-line);border-radius:999px;background:#fff;color:var(--kg-sub);font-size:11px;padding:3px 7px;cursor:pointer}
.kg-onion-panel{position:absolute;right:14px;bottom:136px;z-index:5;width:312px;border:1px solid rgba(230,228,223,.9);border-radius:14px;background:rgba(255,255,255,.82);box-shadow:0 18px 48px rgba(31,31,29,.10);padding:10px;backdrop-filter:blur(14px)}
.kg-onion-panel.compact{width:var(--kg-right-rail-width);max-width:calc(100% - 28px);left:auto;right:var(--kg-right-rail-right);top:var(--kg-onion-top);bottom:auto;transform:none;padding:10px}
.kg-onion-panel.merged{background:rgba(255,255,255,.74);box-shadow:0 12px 34px rgba(31,31,29,.08)}
.kg-onion-title{font-size:14px;font-weight:720;color:var(--kg-text)}
.kg-onion-panel.compact .kg-onion-title{display:block}
.kg-onion-sub{font-size:11px;color:var(--kg-sub);line-height:1.55;margin-top:3px}
.kg-onion-panel.compact .kg-onion-sub{margin:3px 0 7px;text-align:left}
.kg-onion-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:9px}
.kg-onion-panel.compact .kg-onion-grid{display:flex;flex-wrap:wrap;gap:6px;margin-top:0}
.kg-onion-btn{border:1px solid var(--kg-line);border-radius:10px;background:#fbfbfa;color:var(--kg-text);font-size:11px;line-height:1.35;text-align:left;padding:7px 8px;cursor:pointer}
.kg-onion-btn b{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:12px;margin-bottom:2px}
.kg-onion-btn span{display:block;color:var(--kg-sub)}
.kg-onion-panel.compact .kg-onion-btn{border-radius:999px;padding:5px 9px}.kg-onion-panel.compact .kg-onion-btn span{display:none}.kg-onion-panel.compact .kg-onion-btn b{font-size:11px;margin:0}
.kg-onion-btn.active,.kg-onion-btn:hover{background:#f0effb;border-color:#d8d5f4;color:#5f55d6}
.kg-onion-slices{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.kg-onion-panel.compact .kg-onion-slices{display:none}
.kg-onion-slices button{border:1px solid var(--kg-line);border-radius:999px;background:rgba(255,255,255,.9);color:var(--kg-sub);font-size:11px;padding:4px 8px;cursor:pointer}
.kg-onion-slices button.active,.kg-onion-slices button:hover{background:#f0effb;color:#5f55d6;border-color:#d8d5f4}
.kg-slice-richness{margin-top:10px;border-top:1px solid var(--kg-line);padding-top:9px}
.kg-onion-panel.compact .kg-slice-richness{display:none}
.kg-slice-richness-title{font-size:13px;font-weight:720;color:var(--kg-text)}
.kg-slice-richness-copy{font-size:11px;color:var(--kg-sub);line-height:1.55;margin-top:3px}
.kg-slice-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:7px}
.kg-slice-metric{border:1px solid var(--kg-line);border-radius:9px;background:#fbfbfa;padding:5px;text-align:center}
.kg-slice-metric b{display:block;color:var(--kg-text);font-size:12px}
.kg-slice-metric span{display:block;color:var(--kg-sub);font-size:10px;margin-top:2px}
.kg-slice-section{margin-top:8px}
.kg-slice-section b{display:block;color:var(--kg-text);font-size:11px;margin-bottom:4px}
.kg-slice-list{display:flex;flex-wrap:wrap;gap:5px}
.kg-slice-list span{border:1px solid var(--kg-line);border-radius:999px;background:#fff;color:var(--kg-sub);font-size:10px;padding:3px 6px}
.kg-slice-list span.warn{background:#fbf2ef;color:#8f3f3f;border-color:#ead1ca}
.s-section{border:1px solid var(--kg-line);border-radius:12px;background:var(--kg-surface);box-shadow:none}
.s-row{border-color:var(--kg-line)}
.s-btn,.s-select,.s-input{border-color:var(--kg-line);box-shadow:none}
@media (max-width: 1100px){.kg-graph-panel{--kg-right-rail-width:280px;--kg-right-rail-start:112px}.kg-map-hud{max-width:calc(100% - 28px);grid-template-columns:repeat(2,max-content)}.kg-map-title-card{top:104px}.kg-cockpit-flow{top:150px;width:min(760px,calc(100% - 120px))}.kg-map-help{top:214px}.kg-map-toolbar{left:14px;bottom:104px;right:auto;top:auto;max-width:420px}.kg-engine-row{flex-wrap:wrap}.kg-ask-stream{top:230px;width:260px}.kg-onion-panel{right:14px;bottom:136px;width:280px}.kg-onion-panel.compact{left:auto;right:var(--kg-right-rail-right);top:var(--kg-onion-top);bottom:auto;width:var(--kg-right-rail-width);transform:none}.kg-ask-dock{width:calc(100vw - 288px);left:auto;right:16px;transform:none}}
@media (max-width: 960px){.kg-metric-strip{grid-template-columns:repeat(3,max-content)}.kg-timeline{grid-template-columns:1fr 1fr}.kg-mini-bar{grid-template-columns:96px 1fr 36px}.kg-top-explorer-bar{top:146px;left:14px;right:14px;transform:none;max-width:none;grid-template-columns:1fr}.kg-map-canvas{height:680px}.kg-ask-stream{left:14px;right:14px;top:190px;bottom:232px;width:auto}.kg-graph-panel .react-flow__minimap{display:none}.kg-ask-dock{left:14px;right:14px;bottom:14px;width:auto;transform:none;flex-direction:column;align-items:stretch}.kg-zoom-rail{bottom:104px}}

/* S1 节点九维卡 v2 — kg_orbit_shell.v2 渲染样式 */
.kg-v2-section{margin-top:12px;padding:10px;border:1px solid var(--kg-line);border-radius:8px;background:#fafbf6}
.kg-v2-section[data-schema="v2"]::before{content:"V2 九维卡";display:inline-block;font-size:10px;color:#5b6c4d;background:#eef1e3;padding:2px 6px;border-radius:4px;margin-bottom:6px}
.kg-v2-line{font-size:12px;color:var(--kg-text);margin:4px 0;line-height:1.5}
.kg-iron-lamp{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;margin-right:4px;border:1px solid var(--kg-line)}
.kg-iron-lamp.green{background:#e9f4d8;color:#3a6b1f;border-color:#bcd497}
.kg-iron-lamp.yellow{background:#fdf3d2;color:#8c6f1c;border-color:#e6d28f}
.kg-iron-lamp.red{background:#fbe2dc;color:#a13a2c;border-color:#e9b6a8}
.kg-chip.kg-can-on{background:#e9f4d8;color:#3a6b1f;border-color:#bcd497}
.kg-chip.kg-can-mid{background:#fdf3d2;color:#8c6f1c;border-color:#e6d28f}
.kg-chip.kg-can-off{background:#fbe2dc;color:#a13a2c;border-color:#e9b6a8}
.kg-chip.kg-can-na{background:#f4f4f1;color:#7a7a72;border-color:#dad9cd}
.kg-chip.kg-diag-ok{background:#e9f4d8;color:#3a6b1f}
.kg-chip.kg-diag-info{background:#e6effa;color:#36588b}
.kg-chip.kg-diag-warn{background:#fdf3d2;color:#8c6f1c}
.kg-chip.kg-diag-error{background:#fbe2dc;color:#a13a2c}
/* S2 视图镜头切换器（已移入底部工具栏 → 无 absolute 定位 · 圆角矩形和聊天输入一致） */
.kg-view-lens-bar{display:inline-flex;gap:3px;padding:4px 6px;border:1px solid rgba(230,228,223,.92);border-radius:14px;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);box-shadow:0 4px 16px rgba(31,31,29,.08);pointer-events:auto}
.kg-view-lens-bar:empty{display:none}
.kg-view-lens-btn{border:none;border-radius:999px;background:transparent;color:var(--kg-sub,#888);font-size:11px;font-weight:640;padding:5px 12px;cursor:pointer;transition:background .16s,color .16s;white-space:nowrap;line-height:1}
.kg-view-lens-btn:hover{background:#f0effb;color:#5f55d6}
.kg-view-lens-btn.active{background:#5f55d6;color:#fff}
@media (max-width:960px){.kg-bottom-toolbar{bottom:136px}}

/* S6 推理引擎 */
.kg-reason-bar{position:absolute;top:54px;left:50%;transform:translateX(-50%);z-index:12;display:flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid rgba(95,85,214,.38);border-radius:999px;background:rgba(255,255,255,.95);box-shadow:0 4px 20px rgba(95,85,214,.15);backdrop-filter:blur(14px);white-space:nowrap}
.kg-reason-bar[hidden]{display:none!important}
.kg-reason-bar-label{font-size:11px;font-weight:600;color:var(--kg-accent);margin-right:4px}
.kg-reason-btn{height:26px;padding:0 10px;border:1px solid rgba(95,85,214,.3);border-radius:999px;background:rgba(95,85,214,.06);color:#5f55d6;font-size:11px;font-weight:500;cursor:pointer;transition:background .15s}
.kg-reason-btn:hover{background:rgba(95,85,214,.16)}
.kg-reason-btn.loading{opacity:.55;cursor:default}
.kg-reason-bar-close{width:22px;height:22px;border:none;border-radius:50%;background:transparent;color:var(--kg-sub);font-size:14px;cursor:pointer;padding:0;line-height:1;margin-left:2px}
.kg-reason-bar-close:hover{background:rgba(0,0,0,.06)}
.kg-reason-drawer{position:absolute;top:0;right:0;width:340px;height:100%;background:rgba(255,255,255,.97);border-left:1px solid rgba(230,228,223,.9);box-shadow:-4px 0 24px rgba(31,31,29,.08);z-index:14;display:flex;flex-direction:column;overflow:hidden}
.kg-reason-drawer[hidden]{display:none!important}
.kg-reason-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;border-bottom:1px solid rgba(230,228,223,.85)}
.kg-reason-drawer-title{font-size:13px;font-weight:600;color:var(--kg-text)}
.kg-reason-drawer-close{width:26px;height:26px;border:1px solid rgba(216,213,206,.9);border-radius:50%;background:transparent;color:var(--kg-sub);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.kg-reason-drawer-close:hover{background:#f2f1ee}
.kg-reason-drawer-body{flex:1;overflow-y:auto;padding:14px 16px}
.kg-reason-placeholder{font-size:12px;color:var(--kg-sub);line-height:1.7}
.kg-reason-block{margin-bottom:14px;padding:10px 12px;border:1px solid rgba(230,228,223,.85);border-radius:10px;background:#faf9f7}
.kg-reason-block-title{font-size:11px;font-weight:700;color:#5f55d6;margin-bottom:6px;letter-spacing:.03em;text-transform:uppercase}
.kg-reason-block-text{font-size:12px;color:var(--kg-text);line-height:1.65;white-space:pre-wrap}
.kg-reason-block-meta{font-size:10px;color:var(--kg-sub);margin-top:6px}
.kg-reason-chip{display:inline-block;padding:1px 7px;border-radius:999px;font-size:10px;margin:2px 2px 0 0}
.kg-reason-chip.ok{background:#dcfce7;color:#15803d}
.kg-reason-chip.warn{background:#fef9c3;color:#854d0e}
.kg-reason-chip.critical{background:#fee2e2;color:#dc2626}
.kg-reason-spinner{text-align:center;padding:20px;color:var(--kg-sub);font-size:12px}

/* S8 地图搜索 */
/* S8 地图搜索条样式已移至 S3-LAYERS 块中（标题卡下方居中定位） */
.kg-map-search-input{width:100%;height:30px;border:1px solid rgba(216,213,206,.9);border-radius:999px;background:rgba(255,255,255,.92);color:var(--kg-text);font-size:12px;padding:0 14px;box-sizing:border-box;backdrop-filter:blur(12px);outline:none}
.kg-map-search-input:focus{border-color:rgba(95,85,214,.5);box-shadow:0 0 0 2px rgba(95,85,214,.1)}
.kg-map-search-results{position:absolute;top:34px;left:0;right:0;background:rgba(255,255,255,.97);border:1px solid rgba(216,213,206,.9);border-radius:10px;box-shadow:0 8px 24px rgba(31,31,29,.1);max-height:200px;overflow-y:auto;z-index:15}
.kg-map-search-result-item{padding:8px 14px;cursor:pointer;font-size:12px;color:var(--kg-text);border-bottom:1px solid rgba(230,228,223,.6)}
.kg-map-search-result-item:last-child{border-bottom:none}
.kg-map-search-result-item:hover{background:rgba(95,85,214,.06);color:#5f55d6}
.kg-map-search-result-item b{color:#5f55d6}
.kg-map-search-empty{padding:10px 14px;font-size:11px;color:var(--kg-sub)}
/* S3-FAV 收藏星标 */
.kg-fav-star{font-size:10px;fill:#f59e0b;pointer-events:none;dominant-baseline:auto;text-anchor:middle}
/* S3-LAYERS 图层菜单 */
.kg-layer-btn{height:24px;border:1px solid rgba(216,213,206,.8);border-radius:999px;background:rgba(255,255,255,.92);color:var(--kg-text);font-size:11px;padding:0 9px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:border-color .18s}
.kg-layer-btn:hover{border-color:rgba(95,85,214,.5);color:#5f55d6}
.kg-layer-menu{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);min-width:200px;background:rgba(255,255,255,.97);border:1px solid rgba(216,213,206,.9);border-radius:12px;box-shadow:0 8px 24px rgba(31,31,29,.12);z-index:20;padding:6px 0;display:none}
.kg-layer-menu.open{display:block}
.kg-layer-menu-item{display:flex;align-items:center;gap:8px;padding:7px 14px;cursor:pointer;font-size:12px;color:var(--kg-text);transition:background .15s}
.kg-layer-menu-item:hover{background:rgba(95,85,214,.06)}
.kg-layer-menu-item input[type=checkbox]{accent-color:#5f55d6;cursor:pointer}
.kg-layer-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
/* kg-layer-wrap: inline wrapper in breadcrumb row */
.kg-layer-wrap{position:relative;display:inline-flex;align-items:center}
/* 面包屑行分隔与工具按钮 */
.kg-nav-tool-sep{display:inline-block;width:1px;height:14px;background:rgba(216,213,206,.7);margin:0 4px;vertical-align:middle}
.kg-search-toggle{border:0;border-radius:999px;background:transparent;color:#5f55d6;font:inherit;font-size:13px;line-height:1;padding:2px 5px;cursor:pointer;transition:background .15s}
.kg-search-toggle:hover,.kg-search-toggle:focus{background:#f0effb;outline:none}
/* S8 地图搜索条：标题卡正下方居中弹出 */
.kg-map-search-bar{position:absolute;top:90px;left:50%;transform:translateX(-50%);z-index:12;width:260px}
/* W3-A 九可健康仪表盘（由九可胶囊触发） */
/* kg-nine-can-toggle 已废弃，样式保留但不显示（从右下角迁移到三胶囊）*/
.kg-nine-can-toggle{display:none}
.kg-nine-can-panel{position:absolute;bottom:200px;left:14px;z-index:20;width:260px;background:rgba(255,255,255,.97);border:1px solid rgba(216,213,206,.9);border-radius:14px;box-shadow:0 8px 28px rgba(31,31,29,.14);backdrop-filter:blur(14px);overflow:hidden;max-height:min(380px,calc(100vh - 280px));overflow-y:auto}
.kg-nine-can-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px 8px;border-bottom:1px solid rgba(216,213,206,.7)}
.kg-nine-can-title{font-size:12px;font-weight:700;color:var(--kg-accent)}
.kg-nine-can-close{width:20px;height:20px;border:none;border-radius:50%;background:transparent;color:var(--kg-sub);font-size:15px;cursor:pointer;padding:0;line-height:1}
.kg-nine-can-close:hover{background:rgba(0,0,0,.06)}
.kg-nine-can-body{padding:10px 14px 12px;display:flex;flex-direction:column;gap:6px}
.kg-nine-can-row{display:flex;align-items:center;gap:8px}
.kg-nine-can-label{width:52px;font-size:10px;color:var(--kg-sub);flex-shrink:0;text-align:right}
.kg-nine-can-bar-wrap{flex:1;height:6px;background:rgba(216,213,206,.7);border-radius:3px;overflow:hidden}
.kg-nine-can-bar{height:100%;border-radius:3px;background:#5f55d6;transition:width .35s cubic-bezier(.4,0,.2,1)}
.kg-nine-can-bar.warn{background:#f59e0b}
.kg-nine-can-bar.danger{background:#ef4444}
.kg-nine-can-pct{width:30px;font-size:10px;color:var(--kg-text);text-align:right}
.kg-nine-can-section{font-size:10px;font-weight:700;color:var(--kg-sub);margin-top:4px;margin-bottom:2px}
/* W3-A2 三维度健康胶囊 + 弹出卡片 */
.kg-health-capsules{display:flex;gap:6px;padding:6px 0 4px;border-bottom:1px solid rgba(216,213,206,.55);margin-bottom:6px}
.kg-health-capsule{height:24px;padding:0 10px;border:1px solid rgba(216,213,206,.9);border-radius:999px;background:rgba(255,255,255,.88);color:var(--kg-text);font-size:11px;font-weight:700;cursor:pointer;transition:border-color .18s,background .18s;backdrop-filter:blur(10px)}
.kg-health-capsule:hover,.kg-health-capsule.active{border-color:rgba(95,85,214,.55);background:rgba(240,239,251,.9);color:#5f55d6}
/* 知识/治理视角切换按钮 */
.kg-view-mode-btn{height:24px;padding:0 10px;border:1px solid rgba(216,213,206,.9);border-radius:999px;background:rgba(255,255,255,.88);color:var(--kg-text);font-size:11px;font-weight:700;cursor:pointer;transition:border-color .18s,background .18s,color .18s;backdrop-filter:blur(10px)}
.kg-view-mode-btn.governance-mode{border-color:rgba(237,180,60,.7);background:rgba(255,249,230,.9);color:#b45309}
.kg-view-mode-btn:hover{border-color:rgba(95,85,214,.55);background:rgba(240,239,251,.9)}
/* 治理视角时节点颜色切换 */
.kg-view-governance .kg-orbit-node[data-kg-health="high"]{background:rgba(209,250,229,.92)}
.kg-view-governance .kg-orbit-node[data-kg-health="medium"]{background:rgba(254,243,199,.92)}
.kg-view-governance .kg-orbit-node[data-kg-health="low"]{background:rgba(254,226,226,.92)}
/* 节点选中的治理标签 */
.kg-node-governance-badge{font-size:10px;color:#8a7fd4;padding:2px 8px;letter-spacing:.04em;text-align:right}
.kg-health-card{position:absolute;left:14px;bottom:200px;z-index:20;width:260px;background:rgba(255,255,255,.97);border:1px solid rgba(216,213,206,.9);border-radius:14px;box-shadow:0 8px 28px rgba(31,31,29,.14);backdrop-filter:blur(14px);overflow:hidden;max-height:min(380px,calc(100vh - 280px));overflow-y:auto}
.kg-health-card-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px 8px;border-bottom:1px solid rgba(216,213,206,.7)}
.kg-health-card-title{font-size:11px;font-weight:700;color:var(--kg-accent);flex:1;line-height:1.3}
.kg-health-card-close{width:20px;height:20px;border:none;border-radius:50%;background:transparent;color:var(--kg-sub);font-size:15px;cursor:pointer;padding:0;line-height:1;flex-shrink:0}
.kg-health-card-close:hover{background:rgba(0,0,0,.06)}
.kg-health-card-body{padding:10px 14px 12px;display:flex;flex-direction:column;gap:6px}
.kg-health-card-row{display:flex;align-items:center;gap:8px}
.kg-health-card-label{width:56px;font-size:10px;color:var(--kg-sub);flex-shrink:0;text-align:right}
.kg-health-card-bar-wrap{flex:1;height:6px;background:rgba(216,213,206,.7);border-radius:3px;overflow:hidden}
.kg-health-card-bar{height:100%;border-radius:3px;background:#5f55d6;transition:width .35s cubic-bezier(.4,0,.2,1)}
.kg-health-card-bar.warn{background:#f59e0b}
.kg-health-card-bar.danger{background:#ef4444}
.kg-health-card-pct{width:30px;font-size:10px;color:var(--kg-text);text-align:right}
.kg-health-card-section{font-size:10px;font-weight:700;color:var(--kg-sub);margin-top:4px;margin-bottom:2px}
/* 治理仪表盘弹窗（左上角"待处理"胶囊触发） */
.kg-gov-dashboard-card{position:absolute;top:62px;left:14px;z-index:25;width:300px;bottom:auto;max-height:min(420px,calc(100vh - 200px))}
.kg-gov-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.kg-gov-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:12px 8px;border:1px solid rgba(216,213,206,.8);border-radius:10px;background:rgba(255,255,255,.7);cursor:pointer;transition:all .2s}
.kg-gov-cell:hover{background:rgba(95,85,214,.06);border-color:rgba(95,85,214,.35)}
.kg-gov-num{font-size:18px;font-weight:720;color:var(--kg-text);line-height:1;letter-spacing:-.02em}
.kg-gov-label{font-size:10px;color:var(--kg-sub);white-space:nowrap}
.kg-gov-cell[data-kg-queue-filter="symbolic_conflict"] .kg-gov-num:empty::before,
.kg-gov-num.has-value{color:#b83232}
.kg-gov-summary-strip{display:flex;gap:14px;justify-content:center;padding-top:10px;margin-top:10px;border-top:1px solid rgba(216,213,206,.6)}
.kg-gov-summary-item{font-size:11px;color:var(--kg-sub)}
.kg-gov-summary-item em{font-style:normal;font-weight:700;color:var(--kg-text)}
/* W3-B 节点内联编辑 modal */
.kg-node-edit-overlay{position:fixed;inset:0;z-index:9000;background:rgba(31,31,29,.32);display:flex;align-items:center;justify-content:center}
.kg-node-edit-modal{background:#fff;border-radius:16px;box-shadow:0 16px 48px rgba(31,31,29,.18);width:360px;padding:22px 24px 18px}
.kg-node-edit-title{font-size:14px;font-weight:700;color:var(--kg-accent);margin-bottom:14px}
.kg-node-edit-field{margin-bottom:10px}
.kg-node-edit-field label{display:block;font-size:11px;color:var(--kg-sub);margin-bottom:4px}
.kg-node-edit-field input,.kg-node-edit-field select{width:100%;height:32px;border:1px solid rgba(216,213,206,.9);border-radius:8px;padding:0 10px;font-size:12px;color:var(--kg-text);background:#fff;box-sizing:border-box;outline:none}
.kg-node-edit-field input:focus,.kg-node-edit-field select:focus{border-color:rgba(95,85,214,.5);box-shadow:0 0 0 2px rgba(95,85,214,.1)}
.kg-node-edit-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.kg-node-edit-btn{height:32px;padding:0 16px;border-radius:8px;font-size:12px;cursor:pointer;border:1px solid transparent}
.kg-node-edit-btn.primary{background:#5f55d6;color:#fff;border-color:#5f55d6}
.kg-node-edit-btn.primary:hover{background:#4f46c8}
.kg-node-edit-btn.cancel{background:transparent;color:var(--kg-sub);border-color:rgba(216,213,206,.9)}
.kg-node-edit-btn.cancel:hover{background:rgba(0,0,0,.04)}
.kg-node-edit-note{font-size:10px;color:var(--kg-sub);margin-top:8px;line-height:1.5}
/* edited 徽标 */
.kg-map-node.edited circle{stroke:#5f55d6;stroke-dasharray:3 2}
.kg-map-node .kg-edited-dot{fill:#5f55d6;pointer-events:none}

/* ── W2-2 · 节点领域色（cluster color ring）
   设计契约: docs/platform/20260509_KG_LENS_INTEGRATION_DOMAIN_COLOR_DESIGN.md §2.3
   --kg-cluster-color 由 renderKgOrbitCluster() 的 kgClusterColor() 动态注入 style 属性 */
.kg-orbit-node[data-kg-cluster]{border-color:var(--kg-cluster-color,rgba(95,85,214,.4))}
/* 治理视角下健康度色覆盖领域色（健康度优先级更高，已有规则保持在前） */
.kg-view-governance .kg-orbit-node[data-kg-cluster]{border-color:inherit}

/* ── W2-5 · 节点类型图标（S5 · ::after 角标）
   设计契约: docs/platform/20260509_KG_S5_S8_ICONS_SEARCH_DESIGN.md §1.2
   data-kg-orbit-type 属性由 renderKgOrbitCluster() 写入 */
.kg-orbit-node::after{position:absolute;top:2px;right:5px;font-size:10px;line-height:1;opacity:.65;pointer-events:none}
.kg-orbit-node[data-kg-orbit-type="feature"]::after{content:"⚙"}
.kg-orbit-node[data-kg-orbit-type="api"]::after{content:"↗"}
.kg-orbit-node[data-kg-orbit-type="code_file"]::after{content:"{}";font-size:9px}
.kg-orbit-node[data-kg-orbit-type="document"]::after{content:"📄";font-size:9px}
.kg-orbit-node[data-kg-orbit-type="test"]::after{content:"✓"}
.kg-orbit-node[data-kg-orbit-type="evidence"]::after{content:"🔗";font-size:9px}
.kg-orbit-node[data-kg-orbit-type="decision"]::after{content:"⚖"}
.kg-orbit-node[data-kg-orbit-type="report"]::after{content:"📊";font-size:9px}
.kg-orbit-node[data-kg-orbit-type="log_event"]::after{content:"⏱"}
.kg-orbit-node[data-kg-orbit-type="time_event"]::after{content:"🕐";font-size:9px}

/* ── W2-4 · 节点卡片渲染器样式（kg_node_card_renderer.js 生成的 HTML）
   设计契约: docs/platform/20260509_KG_NODE_CARD_RENDERER_DESIGN.md */
.kg-node-card{font-size:12px;line-height:1.5;color:var(--kg-text,#1a1a19)}
.kg-node-card--compact{padding:0}
.kg-nc-header{display:flex;align-items:center;gap:5px;margin-bottom:4px}
.kg-nc-type-icon{font-size:13px;opacity:.8;flex-shrink:0}
.kg-nc-title{font-weight:700;font-size:13px;color:#1a1a19}
.kg-nc-missing-label{font-size:10px;color:#ef4444;font-weight:400;margin-left:2px}
.kg-nc-cluster-row{display:flex;align-items:center;gap:5px;margin-bottom:4px}
.kg-nc-cluster-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}
.kg-nc-cluster{font-size:10px;color:var(--kg-sub,#666);opacity:.8}
.kg-nc-desc{margin:0;font-size:12px;color:var(--kg-sub,#666);max-width:220px}
.kg-nc-tags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.kg-nc-tag{background:rgba(95,85,214,.08);border-radius:4px;padding:1px 6px;font-size:10px;color:rgba(95,85,214,.9)}
.kg-nc-score-row{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:11px;color:var(--kg-sub)}
.kg-nc-score-bar{flex:1;height:6px;background:rgba(0,0,0,.08);border-radius:3px;overflow:hidden}
.kg-nc-score-bar span{display:block;height:100%;border-radius:3px;transition:width .3s}
.kg-nc-gov-section{margin-bottom:8px}
.kg-nc-gov-label{font-size:10px;font-weight:700;color:var(--kg-sub,#666);margin-bottom:4px}
.kg-nc-gov-dim,.kg-nc-iron{display:inline-block;margin:2px;padding:2px 6px;border-radius:4px;font-size:10px;background:rgba(0,0,0,.06);color:rgba(0,0,0,.4);transition:all .2s}
.kg-nc-gov-dim.satisfied,.kg-nc-iron.satisfied{background:rgba(72,187,120,.15);color:rgba(72,187,120,.9);font-weight:700}

/* Phase 1: ReactFlow 集成样式 */
.kg-map-canvas{position:relative}
.kg-map-canvas .react-flow{background:transparent}
.kg-rf-node-wrapper{cursor:pointer}
.react-flow__attribution{display:none}

/* ── M3-3 · 测距 DISTANCE 高亮样式 ── */
.kg-measure-active { cursor: crosshair !important; }
.kg-measure-active .kg-map-node { transition: filter 0.15s ease; }
.kg-measure-active .kg-map-node[data-kg-measure-origin="true"] circle { stroke: #5f55d6; stroke-width: 2.5px; filter: drop-shadow(0 0 6px rgba(95,85,214,.4)); }
.kg-measure-active .kg-map-node:not([data-kg-measure-origin="true"]) { filter: opacity(0.65); }
.kg-measure-active .kg-map-node:not([data-kg-measure-origin="true"]):hover { filter: opacity(0.9) drop-shadow(0 0 4px rgba(95,85,214,.3)); }

/* ── M4 · 驾驶台常驻卡 ALWAYS-ON COCKPIT ── */
.kg-cockpit-always-on {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    padding: 8px 12px;
    margin-bottom: 8px;
    border: 1px solid rgba(216,213,244,.82);
    border-radius: 12px;
    background: rgba(245,244,255,.72);
    font-size: 12px;
    line-height: 1.4;
    color: var(--kg-text,#1a1a19);
    transition: border-color .18s ease, background .18s ease;
}
.kg-cockpit-always-on:empty {
    display: none;
}
.kg-cockpit-always-on .kg-cockpit-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    flex: 1 1 auto;
    min-width: 0;
}
.kg-cockpit-always-on .kg-cockpit-slice-kind {
    font-weight: 700;
    font-size: 12px;
    color: var(--kg-accent,#5f55d6);
    white-space: nowrap;
}
.kg-cockpit-always-on .kg-cockpit-slice-title {
    font-weight: 640;
    color: var(--kg-text,#1a1a19);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 140px;
}
.kg-cockpit-always-on .kg-cockpit-slice-metric {
    color: var(--kg-sub,#666);
    font-size: 11px;
    white-space: nowrap;
}
.kg-cockpit-always-on .kg-cockpit-slice-id {
    font-family: ui-monospace,SFMono-Regular,Menlo,monospace;
    font-size: 10px;
    background: rgba(95,85,214,.06);
    color: #3a2fa3;
    border-radius: 5px;
    padding: 1px 6px;
    max-width: 130px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.kg-cockpit-always-on .kg-cockpit-actions {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
}
.kg-cockpit-always-on .kg-cockpit-btn {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    height: 26px;
    padding: 0 9px;
    border: 1px solid rgba(216,213,206,.9);
    border-radius: 999px;
    background: rgba(255,255,255,.86);
    color: var(--kg-text,#1a1a19);
    font-size: 11px;
    font-weight: 500;
    cursor: pointer;
    transition: border-color .15s, background .15s, color .15s;
    white-space: nowrap;
    line-height: 1;
}
.kg-cockpit-always-on .kg-cockpit-btn:hover {
    background: #f0effb;
    border-color: #aaa4ea;
    color: #5f55d6;
}
.kg-cockpit-always-on .kg-cockpit-btn[aria-pressed="true"] {
    background: rgba(95,85,214,.14);
    border-color: rgba(95,85,214,.45);
    color: #3a2fa3;
}
.kg-cockpit-always-on .kg-cockpit-btn.kg-cockpit-btn-fav {
    color: #a36a18;
    border-color: rgba(244,180,90,.55);
    background: rgba(255,247,232,.78);
}
.kg-cockpit-always-on .kg-cockpit-btn.kg-cockpit-btn-fav[aria-pressed="true"] {
    background: rgba(255,224,150,.85);
    border-color: rgba(244,180,90,.75);
    color: #824f0c;
}
.kg-cockpit-always-on .kg-cockpit-gap-flag {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    padding: 2px 8px;
    border-radius: 999px;
    background: #fbf2ef;
    color: #8f3f3f;
    font-size: 10px;
    font-weight: 650;
    white-space: nowrap;
}
.kg-cockpit-always-on .kg-cockpit-gap-flag.clean {
    background: #f5f7f2;
    color: #49633a;
}
/* 全屏/紧凑态 still show */
.kg-first-screen.kg-fullscreen-mode .kg-cockpit-always-on {
    background: rgba(245,244,255,.65);
    border-color: rgba(216,213,244,.55);
    padding: 5px 10px;
    font-size: 11px;
    gap: 4px 8px;
}
.kg-first-screen.kg-fullscreen-mode .kg-cockpit-always-on .kg-cockpit-slice-title {
    max-width: 100px;
}

/* WAVE-F · F5 (2026-05-14) 图谱源 preview 状态视觉示弱 */
[data-kg-source-dropdown] button[data-kg-graph-source].preview {
    opacity: .68;
    border-style: dashed;
    background: linear-gradient(135deg, rgba(255,255,255,.7) 0%, rgba(245,244,255,.5) 100%);
}
[data-kg-source-dropdown] button[data-kg-graph-source].preview:hover {
    opacity: .9;
    background: #f3f1ff;
}
[data-kg-source-dropdown] button[data-kg-graph-source][disabled] {
    opacity: .45;
    cursor: not-allowed;
    background: #f7f7f5;
}
[data-kg-source-dropdown] button[data-kg-graph-source] small {
    margin-left: 4px;
    padding: 1px 5px;
    border-radius: 999px;
    background: rgba(95,85,214,.12);
    color: #7066d0;
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: .04em;
}
/* ── Phase 3 · 知识节点样式 ── */
.kg-map-node.kg-knowledge-node circle {
    fill: var(--kg-knowledge-color, #9CA3AF);
    stroke: var(--kg-knowledge-color, #9CA3AF);
    stroke-width: 2;
    opacity: 0.9;
}
.kg-map-node.kg-knowledge-node .kg-type-icon {
    fill: #fff;
}
.kg-map-node.kg-knowledge-node text {
    fill: var(--kg-knowledge-color, #9CA3AF);
}
.kg-map-node.kg-knowledge-node.ask-highlight circle {
    stroke: var(--kg-accent);
    stroke-width: 2.6;
}
.kg-map-node.kg-knowledge-node.selected circle {
    stroke: var(--kg-accent);
    stroke-width: 3;
    filter: drop-shadow(0 0 6px rgba(95,85,214,.22));
}
.kg-knowledge-node .kg-type-icon {
    font-size: 10px;
    font-weight: 700;
    fill: #fff;
    pointer-events: none;
    dominant-baseline: central;
    text-anchor: middle;
}
/* 知识面/治理面切换胶囊 */
.kg-view-toggle-bar {
    display: flex;
    gap: 4px;
    align-items: center;
    padding: 2px 4px;
    border-radius: 8px;
    background: var(--kg-bg-sub, #f3f4f6);
}
.kg-view-toggle-btn {
    font-size: 11px;
    padding: 3px 10px;
    border-radius: 6px;
    border: none;
    background: transparent;
    color: var(--kg-sub);
    cursor: pointer;
    transition: background .15s, color .15s;
}
.kg-view-toggle-btn.active {
    background: #fff;
    color: var(--kg-text);
    box-shadow: 0 1px 3px rgba(0,0,0,.08);
}
.kg-view-toggle-btn:hover:not(.active) {
    background: rgba(0,0,0,.04);
}

/* ===== candidates tab ===== */
.kg-candidates-panel { padding: 24px; max-width: 1200px; margin: 0 auto; }
.kg-candidates-header h2 { margin: 0 0 4px; font-size: 18px; color: var(--kg-text); }
.kg-candidates-sub { margin: 0 0 16px; font-size: 13px; color: var(--kg-sub); }
.kg-candidates-toolbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; flex-wrap: wrap; gap: 8px; }
.kg-candidates-batch-info { font-size: 12px; color: var(--kg-sub); }
.kg-candidates-actions { display: flex; gap: 6px; }
.kg-candidates-table-wrap { background: var(--kg-surface); border: 1px solid var(--kg-line); border-radius: 8px; overflow: auto; }
.kg-candidates-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.kg-candidates-table th { background: var(--kg-muted); text-align: left; padding: 8px 10px; font-weight: 600; color: var(--kg-sub); font-size: 11px; white-space: nowrap; border-bottom: 1px solid var(--kg-line); }
.kg-candidates-table td { padding: 8px 10px; border-bottom: 1px solid var(--kg-line); color: var(--kg-text); vertical-align: middle; }
.kg-candidates-table tr:last-child td { border-bottom: none; }
.kg-candidates-table tr:hover { background: #fafafa; }
.kg-candidates-empty { text-align: center; color: var(--kg-sub); padding: 32px !important; }
.kg-cand-type-tag { display: inline-block; padding: 2px 6px; border-radius: 4px; font-size: 10px; font-weight: 600; letter-spacing: 0.3px; }
.type-section { background: #ede9fe; color: #5b21b6; }
.type-document { background: #dbeafe; color: #1d4ed8; }
.type-system { background: #d1fae5; color: #047857; }
.type-metric { background: #fef3c7; color: #92400e; }
.cand-state-badge { display: inline-block; padding: 2px 6px; border-radius: 4px; font-size: 10px; font-weight: 600; }
.cand-pending { background: #fef9c3; color: #854d0e; }
.cand-confirmed { background: #d1fae5; color: #065f46; }
.cand-rejected { background: #fee2e2; color: #991b1b; }
.kg-cand-date { font-size: 11px; color: var(--kg-sub); white-space: nowrap; }
.kg-cand-name { max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.kg-candidates-dialog-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.4); z-index: 1000; display: flex; align-items: center; justify-content: center; }
.kg-candidates-dialog { background: #fff; border-radius: 12px; padding: 24px; min-width: 400px; max-width: 600px; max-height: 80vh; overflow-y: auto; box-shadow: 0 16px 36px rgba(0,0,0,0.2); }
.kg-candidates-dialog-title { font-size: 16px; font-weight: 600; color: #1f1f1d; margin-bottom: 12px; }
.kg-candidates-dialog-body { font-size: 14px; color: #4b5563; margin-bottom: 16px; }
.kg-candidates-dialog-body ul { padding-left: 20px; margin: 8px 0; }
.kg-candidates-dialog-body li { font-size: 13px; padding: 2px 0; }
.kg-candidates-dialog-actions { display: flex; gap: 8px; justify-content: flex-end; }

/* ── KG Loading V2 · AI Thinking 步骤可视化（浅色主题 · 2026-06-02）── */
@keyframes kg-think-pulse {
    0%, 80%, 100% { opacity: .3; transform: scale(.75); }
    40% { opacity: 1; transform: scale(1.15); }
}
@keyframes kg-think-dots {
    0% { opacity: .8; }
    25% { opacity: .3; }
    50% { opacity: .1; }
    75% { opacity: .3; }
    100% { opacity: .8; }
}
@keyframes kg-dot-pulse {
    0%, 100% { opacity: .55; transform: scale(.82); }
    50% { opacity: 1; transform: scale(1.22); }
}

/* ── ADR-0210: 待登记任务管理器（居中模态框） ─────────────────── */

/* 遮罩层 */
.kg-registration-overlay {
    position: fixed; inset: 0; z-index: 10200;
    background: rgba(31,31,29,.42);
    display: flex; align-items: center; justify-content: center;
    backdrop-filter: blur(3px);
    animation: kg-reg-fadein .18s ease-out;
}
.kg-registration-overlay[hidden] { display: none; }
@keyframes kg-reg-fadein { from { opacity: 0; } to { opacity: 1; } }

/* 模态框 */
.kg-registration-modal {
    background: #fff; border-radius: 18px;
    box-shadow: 0 24px 64px rgba(31,31,29,.22), 0 0 0 1px rgba(216,213,206,.6);
    width: min(820px, 94vw); max-height: 88vh;
    display: flex; flex-direction: column;
    overflow: hidden;
    animation: kg-reg-slideup .22s cubic-bezier(.4,0,.2,1);
}
@keyframes kg-reg-slideup {
    from { opacity: 0; transform: translateY(16px); }
    to { opacity: 1; transform: translateY(0); }
}

/* 头部 */
.kg-registration-header {
    display: flex; justify-content: space-between; align-items: flex-start;
    padding: 20px 24px 14px; border-bottom: 1px solid rgba(216,213,206,.7);
}
.kg-registration-header-info { flex: 1; min-width: 0; }
.kg-registration-title { font-size: 18px; font-weight: 720; color: #1a1a19; margin: 0 0 4px; line-height: 1.3; }
.kg-registration-sub { font-size: 12px; color: #6b6b68; line-height: 1.5; margin: 0; }
.kg-registration-header-actions { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
.kg-registration-btn-ghost {
    height: 32px; padding: 0 14px; border-radius: 8px;
    border: 1px solid rgba(216,213,206,.9); background: #fff;
    color: #6b6b68; font-size: 12px; cursor: pointer;
    transition: all .15s;
}
.kg-registration-btn-ghost:hover { background: #f8f8f7; color: #1a1a19; }
.kg-registration-close {
    width: 32px; height: 32px; border-radius: 8px;
    border: 1px solid rgba(216,213,206,.6); background: transparent;
    color: #999; font-size: 20px; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    transition: all .15s; line-height: 1;
}
.kg-registration-close:hover { background: rgba(0,0,0,.05); color: #1a1a19; }

/* 统计条 */
.kg-registration-stats {
    display: flex; gap: 0; padding: 0;
    border-bottom: 1px solid rgba(216,213,206,.5);
}
.kg-registration-stat {
    flex: 1; text-align: center;
    padding: 12px 8px;
    border-right: 1px solid rgba(216,213,206,.4);
}
.kg-registration-stat:last-child { border-right: none; }
.kg-registration-stat-val {
    display: block; font-size: 22px; font-weight: 720;
    line-height: 1; margin-bottom: 3px;
    letter-spacing: -.02em;
}
.kg-registration-stat-val.total { color: #1a1a19; }
.kg-registration-stat-val.candidate { color: #b45309; }
.kg-registration-stat-val.confirmed { color: #059669; }
.kg-registration-stat-val.rejected { color: #dc2626; }
.kg-registration-stat-label { font-size: 10px; color: #999; white-space: nowrap; }

/* 标签页 */
.kg-registration-tabs {
    display: flex; gap: 6px; padding: 12px 24px;
    border-bottom: 1px solid rgba(216,213,206,.4);
    overflow-x: auto; scrollbar-width: none;
}
.kg-registration-tabs::-webkit-scrollbar { display: none; }
.kg-registration-tab {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 7px 14px; border-radius: 999px;
    border: 1px solid rgba(216,213,206,.8);
    background: #fafaf9; font-size: 12px;
    cursor: pointer; color: #6b6b68; white-space: nowrap;
    transition: all .15s; flex-shrink: 0;
}
.kg-registration-tab:hover { background: #f0effb; color: #5f55d6; }
.kg-registration-tab.active {
    background: #f0effb; color: #5f55d6;
    border-color: #d8d5f4; font-weight: 600;
}
.kg-registration-tab-badge {
    display: inline-block; min-width: 18px; height: 18px;
    padding: 0 5px; border-radius: 9px;
    background: rgba(0,0,0,.06); color: inherit;
    font-size: 10px; font-weight: 700;
    line-height: 18px; text-align: center;
}
.kg-registration-tab.active .kg-registration-tab-badge {
    background: rgba(95,85,214,.15); color: #5f55d6;
}

/* 工具栏 */
.kg-registration-toolbar {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 24px; background: #fafaf9;
    border-bottom: 1px solid rgba(216,213,206,.4);
}
.kg-registration-select-all-wrap {
    display: flex; align-items: center; gap: 6px;
    font-size: 12px; color: #6b6b68; cursor: pointer;
    user-select: none;
}
.kg-registration-select-all-wrap input[type="checkbox"] { cursor: pointer; accent-color: #5f55d6; }
.kg-registration-batch-actions { display: flex; gap: 6px; }
.kg-registration-btn-confirm {
    height: 30px; padding: 0 14px; border-radius: 7px;
    border: 1px solid #5f55d6; background: #5f55d6;
    color: #fff; font-size: 11px; font-weight: 600;
    cursor: pointer; transition: all .15s;
}
.kg-registration-btn-confirm:hover:not(:disabled) { background: #4f46c8; }
.kg-registration-btn-confirm:disabled { opacity: .4; cursor: not-allowed; }
.kg-registration-btn-reject {
    height: 30px; padding: 0 14px; border-radius: 7px;
    border: 1px solid #dc2626; background: #fff;
    color: #dc2626; font-size: 11px; font-weight: 600;
    cursor: pointer; transition: all .15s;
}
.kg-registration-btn-reject:hover:not(:disabled) { background: #fef2f2; }
.kg-registration-btn-reject:disabled { opacity: .4; cursor: not-allowed; }
.kg-registration-btn-auto {
    height: 30px; padding: 0 14px; border-radius: 7px;
    border: 1px solid #d97706; background: #fffbeb;
    color: #92400e; font-size: 11px; font-weight: 600;
    cursor: pointer; transition: all .15s;
}
.kg-registration-btn-auto:hover:not(:disabled):not([hidden]) { background: #fef3c7; }
.kg-registration-btn-auto:disabled { opacity: .4; cursor: not-allowed; }
.kg-registration-selected-count {
    margin-left: auto; font-size: 11px; color: #999;
}

/* 列表区 */
.kg-registration-list {
    flex: 1; overflow-y: auto; padding: 12px 24px;
    display: flex; flex-direction: column; gap: 8px;
    min-height: 180px; max-height: calc(88vh - 340px);
    scrollbar-width: thin;
}
.kg-registration-list::-webkit-scrollbar { width: 5px; }
.kg-registration-list::-webkit-scrollbar-thumb { background: rgba(0,0,0,.12); border-radius: 3px; }

/* 列表项 */
.kg-registration-item {
    display: flex; align-items: flex-start; gap: 12px;
    padding: 14px 16px; border: 1px solid rgba(216,213,206,.7);
    border-radius: 10px; background: #fafaf9;
    transition: all .12s; cursor: default;
}
.kg-registration-item:hover { background: #f5f5f4; border-color: rgba(216,213,206,.9); }
.kg-registration-item.selected {
    background: rgba(95,85,214,.04); border-color: rgba(95,85,214,.3);
}
.kg-registration-item.processing { opacity: .6; pointer-events: none; }
.kg-registration-item-check {
    flex-shrink: 0; display: flex; align-items: center; margin-top: 2px;
}
.kg-registration-item-checkbox {
    flex-shrink: 0; margin-top: 2px;
    cursor: pointer; accent-color: #5f55d6;
}
.kg-registration-item-body { flex: 1; min-width: 0; }
.kg-registration-item-name {
    font-size: 13px; font-weight: 600; color: #1a1a19;
    margin-bottom: 4px; line-height: 1.4;
    word-break: break-all;
}
.kg-registration-item-meta {
    font-size: 11px; color: #8c8c89; line-height: 1.5;
    margin-bottom: 8px;
}
.kg-registration-item-meta .kg-ri-reason { color: #b45309; }
.kg-registration-item-title {
    font-size: 13px; font-weight: 600; color: #1a1a19;
    margin-bottom: 4px; line-height: 1.5;
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
    word-break: break-all;
}
.kg-reg-type-badge {
    display: inline-block; padding: 1px 7px; border-radius: 4px;
    font-size: 10px; font-weight: 600; line-height: 1.5;
    background: rgba(95,85,214,.08); color: #5f55d6;
    white-space: nowrap; flex-shrink: 0;
}
.kg-reg-auto-badge {
    display: inline-block; padding: 1px 7px; border-radius: 4px;
    font-size: 10px; font-weight: 600; line-height: 1.5;
    background: #fef3c7; color: #92400e;
    white-space: nowrap; flex-shrink: 0;
}
.kg-registration-item-reason {
    font-size: 11px; color: #b45309; line-height: 1.5;
    margin-bottom: 4px;
}
.kg-registration-item-tags {
    display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 6px;
}
.kg-reg-missing-tag {
    display: inline-block; padding: 1px 6px; border-radius: 3px;
    font-size: 10px; line-height: 1.5;
    background: rgba(180,69,69,.06); color: #b45353;
    border: 1px solid rgba(180,69,69,.12);
}
.kg-registration-item-btn {
    height: 24px; padding: 0 8px; border-radius: 5px;
    border: 1px solid rgba(216,213,206,.8);
    background: #fff; font-size: 10px; cursor: pointer;
    color: #6b6b68; transition: all .12s;
}
.kg-registration-item-btn:hover { background: #f8f8f7; color: #1a1a19; }
.kg-registration-item-ops {
    display: flex; gap: 4px; flex-shrink: 0; align-items: flex-start; margin-top: 2px;
}
.kg-registration-op-confirm, .kg-registration-op-reject {
    height: 26px; padding: 0 10px; border-radius: 6px;
    font-size: 11px; cursor: pointer; transition: all .12s;
    border: 1px solid rgba(216,213,206,.8); background: #fff; color: #6b6b68;
}
.kg-registration-op-confirm {
    background: #5f55d6; color: #fff; border-color: #5f55d6;
}
.kg-registration-op-confirm:hover { background: #4f46c8; }
.kg-registration-op-reject {
    color: #dc2626; border-color: rgba(220,38,38,.3);
}
.kg-registration-op-reject:hover { background: #fef2f2; }
.kg-registration-item-actions {
    display: flex; gap: 5px; flex-wrap: wrap;
}
.kg-registration-item-actions button {
    height: 26px; padding: 0 10px; border-radius: 6px;
    border: 1px solid rgba(216,213,206,.8);
    background: #fff; font-size: 11px; cursor: pointer;
    color: #6b6b68; transition: all .12s;
}
.kg-registration-item-actions button:hover { background: #f8f8f7; color: #1a1a19; }
.kg-registration-item-actions .btn-confirm {
    background: #5f55d6; color: #fff; border-color: #5f55d6;
}
.kg-registration-item-actions .btn-confirm:hover { background: #4f46c8; }
.kg-registration-item-actions .btn-reject {
    color: #dc2626; border-color: rgba(220,38,38,.3);
}
.kg-registration-item-actions .btn-reject:hover { background: #fef2f2; }
.kg-registration-item-status {
    flex-shrink: 0; padding: 3px 9px; border-radius: 999px;
    font-size: 10px; font-weight: 600; white-space: nowrap;
    line-height: 1.4;
}
.kg-registration-item-status.candidate { background: #fef3c7; color: #92400e; }
.kg-registration-item-status.confirmed { background: #d1fae5; color: #065f46; }
.kg-registration-item-status.rejected { background: #fee2e2; color: #991b1b; }

/* 空状态 */
.kg-registration-empty {
    text-align: center; padding: 40px 24px;
    color: #999; font-size: 13px;
}
.kg-registration-empty-icon { font-size: 28px; margin-bottom: 8px; opacity: .5; }

/* Phase A: 已自动消化统计标记 */
.kg-registration-stat-value.auto-digest { color: #16a34a; }

/* Phase B+C: 自动消化摘要横幅 + 折叠区 */
.kg-auto-digest-banner {
    margin-top: 16px; padding: 12px 16px;
    background: linear-gradient(135deg, rgba(22,163,74,.08) 0%, rgba(22,163,74,.04) 100%);
    border: 1px solid rgba(22,163,74,.2);
    border-radius: 10px;
}
.kg-auto-digest-banner-header {
    display: flex; align-items: center; gap: 8px;
    cursor: pointer; user-select: none;
}
.kg-auto-digest-icon { font-size: 16px; }
.kg-auto-digest-text { font-size: 13px; color: #16a34a; font-weight: 500; }
.kg-auto-digest-audit {
    margin-left: auto; font-size: 11px; color: #9ca3af;
    padding: 2px 8px; border-radius: 4px;
    background: rgba(156,163,175,.1);
}
.kg-auto-digest-arrow { font-size: 12px; color: #6b7280; }
.kg-auto-digest-detail { margin-top: 12px; padding-top: 12px; border-top: 1px dashed rgba(22,163,74,.2); }
.kg-auto-digest-desc { font-size: 12px; color: #6b6b68; line-height: 1.5; margin-bottom: 12px; }
.kg-auto-digest-desc code {
    padding: 1px 6px; border-radius: 4px;
    background: rgba(0,0,0,.06); font-size: 11px;
}

/* Phase C: 灰显折叠项 */
.kg-auto-digest-items { margin-top: 8px; }
.kg-registration-item.kg-reg-item-auto {
    opacity: .5; border-left: 3px solid rgba(22,163,74,.3);
    padding: 8px 12px; margin-bottom: 4px;
    border-radius: 6px; background: rgba(22,163,74,.03);
}
.kg-registration-item.kg-reg-item-auto:hover { opacity: .7; }
.kg-reg-type-auto { opacity: .6; }
.kg-reg-auto-op-label {
    font-size: 10px; color: #16a34a;
    padding: 2px 6px; border-radius: 3px;
    background: rgba(22,163,74,.1);
    margin-left: 8px;
}
.kg-auto-digest-more { text-align: center; padding: 8px 0; }
.kg-auto-digest-expand-btn {
    font-size: 12px; color: #5f55d6;
    background: none; border: none; cursor: pointer;
    padding: 4px 12px; border-radius: 4px;
}
.kg-auto-digest-expand-btn:hover { background: rgba(95,85,214,.08); }

/* 底部分页 */
.kg-registration-footer {
    display: flex; justify-content: center; align-items: center; gap: 4px;
    padding: 12px 24px 16px; border-top: 1px solid rgba(216,213,206,.4);
}
.kg-registration-page-btn {
    min-width: 30px; height: 30px; padding: 0 8px;
    border-radius: 7px; border: 1px solid rgba(216,213,206,.7);
    background: #fff; color: #6b6b68;
    font-size: 12px; cursor: pointer;
    transition: all .12s;
}
.kg-registration-page-btn:hover { background: #f5f5f4; color: #1a1a19; }
.kg-registration-page-btn.active { background: #5f55d6; color: #fff; border-color: #5f55d6; }
.kg-registration-page-btn:disabled { opacity: .3; cursor: not-allowed; }
.kg-registration-page-info {
    margin: 0 10px; font-size: 11px; color: #999;
}
.kg-registration-pagination {
    display: flex; align-items: center; gap: 4px; flex-wrap: wrap;
}
.kg-registration-page-nav {
    height: 30px; padding: 0 10px; border-radius: 7px;
    border: 1px solid rgba(216,213,206,.7);
    background: #fff; color: #6b6b68;
    font-size: 11px; cursor: pointer; transition: all .12s;
}
.kg-registration-page-nav:hover:not(:disabled) { background: #f5f5f4; color: #1a1a19; }
.kg-registration-page-nav:disabled { opacity: .3; cursor: not-allowed; }

/* Toast */
.kg-registration-toast {
    position: fixed; top: 24px; left: 50%; transform: translateX(-50%);
    z-index: 10300; padding: 10px 20px; border-radius: 8px;
    background: #1a1a19; color: #fff; font-size: 13px;
    box-shadow: 0 8px 24px rgba(0,0,0,.18);
    animation: kg-toast-fadein .2s ease-out;
    pointer-events: none;
}
.kg-registration-toast.success { background: #059669; }
.kg-registration-toast.error { background: #dc2626; }
@keyframes kg-toast-fadein { from { opacity: 0; transform: translateX(-50%) translateY(-8px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } }

/* ── ADR-0210 END ── */
