/* ========================================================
   css/v22-6.css — V22.6 波次 1 新增样式
   (本文件不动 V22.5 任何已有 css，避免污染主 DEMO 视觉)

   仅包含：
   1. 场景占位卡片 (.v22-6-placeholder-card)
   2. 顶部业务工作台下拉 (.v22-6-workbench-*)
   3. 首页六座能力底座占位区 (.v22-6-foundation-zone)
   ======================================================== */

/* ============================================================
   1. 场景占位卡片（4 个新业务大类点击触发）
   ============================================================ */
.v22-6-placeholder-card {
  position: fixed; inset: 0;
  display: none;
  background: rgba(4, 8, 18, 0.65);
  z-index: 9999;
  align-items: center; justify-content: center;
  backdrop-filter: blur(4px);
  animation: ph-fade-in 0.2s ease;
}
.v22-6-placeholder-card.show { display: flex; }
@keyframes ph-fade-in {
  from { opacity: 0; } to { opacity: 1; }
}

.v22-6-placeholder-card .ph-card-inner {
  position: relative;
  width: 520px; max-width: 92vw;
  background: linear-gradient(180deg, rgba(15, 28, 48, 0.98), rgba(10, 20, 36, 0.98));
  border: 1px solid rgba(0, 212, 255, 0.30);
  border-radius: 14px;
  padding: 32px 36px 28px;
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6);
  text-align: center;
  color: #d8e4f5;
  font-size: 13px;
  line-height: 1.6;
  animation: ph-pop 0.25s cubic-bezier(.2,.9,.3,1);
}
@keyframes ph-pop {
  from { transform: translateY(20px) scale(0.95); opacity: 0; }
  to   { transform: translateY(0)    scale(1);    opacity: 1; }
}

.v22-6-placeholder-card .ph-card-close {
  position: absolute; top: 12px; right: 14px;
  width: 26px; height: 26px;
  background: transparent; border: 0;
  color: #7a93b8; font-size: 16px;
  cursor: pointer; border-radius: 4px;
  transition: all 0.15s;
}
.v22-6-placeholder-card .ph-card-close:hover {
  color: #fff; background: rgba(255, 255, 255, 0.08);
}

.v22-6-placeholder-card .ph-card-cat {
  font-size: 12px;
  color: #00d4ff;
  letter-spacing: 0.14em;
  margin-bottom: 18px;
  font-weight: 600;
}

.v22-6-placeholder-card .ph-card-icon {
  font-size: 32px;
  color: #a855f7;
  margin-bottom: 6px;
  text-shadow: 0 0 12px rgba(168, 85, 247, 0.5);
}

.v22-6-placeholder-card .ph-card-h {
  font-size: 17px;
  font-weight: 700;
  color: #e6efff;
  margin-bottom: 14px;
}

.v22-6-placeholder-card .ph-card-body {
  font-size: 12.5px;
  color: #95aacb;
  margin-bottom: 8px;
  line-height: 1.7;
}

.v22-6-placeholder-card .ph-card-actions {
  display: flex;
  gap: 10px;
  justify-content: center;
  margin-top: 22px;
}

.v22-6-placeholder-card .ph-card-btn {
  padding: 9px 22px;
  font-size: 12px;
  border-radius: 18px;
  border: 1px solid rgba(0, 212, 255, 0.32);
  background: rgba(0, 212, 255, 0.08);
  color: #d8e4f5;
  cursor: pointer;
  transition: all 0.18s;
}
.v22-6-placeholder-card .ph-card-btn:hover {
  background: rgba(0, 212, 255, 0.18);
}
.v22-6-placeholder-card .ph-card-btn-primary {
  background: linear-gradient(135deg, #a855f7, #00d4ff);
  border-color: transparent;
  color: #fff;
  font-weight: 600;
  box-shadow: 0 4px 14px rgba(168, 85, 247, 0.35);
}
.v22-6-placeholder-card .ph-card-btn-primary:hover {
  box-shadow: 0 6px 20px rgba(168, 85, 247, 0.5);
  transform: translateY(-1px);
}

/* ============================================================
   2. 顶部业务工作台下拉占位
   ============================================================ */
.v22-6-workbench-divider {
  width: 1px; height: 22px;
  background: rgba(0, 212, 255, 0.22);
  margin: 0 10px;
  align-self: center;
}

.v22-6-workbench-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
}

.v22-6-workbench-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 13px;
  background: linear-gradient(135deg, rgba(168, 85, 247, 0.16), rgba(0, 212, 255, 0.16));
  border: 1px solid rgba(168, 85, 247, 0.32);
  border-radius: 6px;
  color: #e7d8ff;
  font-size: 12px;
  cursor: pointer;
  transition: all 0.15s;
}
.v22-6-workbench-btn:hover {
  background: linear-gradient(135deg, rgba(168, 85, 247, 0.28), rgba(0, 212, 255, 0.28));
  box-shadow: 0 4px 14px rgba(168, 85, 247, 0.28);
}
.v22-6-workbench-btn .wb-icon { font-size: 14px; }
.v22-6-workbench-btn .wb-arrow {
  font-size: 9px; opacity: 0.7; margin-left: 2px;
  transition: transform 0.18s;
}
.v22-6-workbench-wrap.open .wb-arrow { transform: rotate(180deg); }

.v22-6-workbench-menu {
  position: absolute;
  top: 100%;
  right: 0;
  margin-top: 6px;
  width: 240px;
  background: rgba(7, 16, 31, 0.97);
  border: 1px solid rgba(0, 212, 255, 0.28);
  border-radius: 10px;
  box-shadow: 0 18px 40px rgba(0, 0, 0, 0.55);
  z-index: 1000;
  backdrop-filter: blur(10px);
  padding: 10px 0 6px;
  animation: wb-menu-in 0.18s ease;
}
.v22-6-workbench-menu[hidden] { display: none !important; }

@keyframes wb-menu-in {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

.wb-menu-head {
  padding: 8px 14px 10px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  font-size: 11px;
  color: #00d4ff;
  letter-spacing: 0.12em;
  border-bottom: 1px solid rgba(0, 212, 255, 0.14);
  margin-bottom: 6px;
}

.wb-menu-title {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  white-space: nowrap;
  font-weight: 700;
}

.wb-menu-title-icon {
  color: #22d3ee;
  font-size: 12px;
}

/* V22.7 优化：业务工作台下拉面板"全屏演示 / 退出全屏"按钮 */
.wb-fullscreen-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  height: 28px;
  padding: 0 10px;
  border-radius: 7px;
  border: 1px solid rgba(0, 212, 255, 0.34);
  background: linear-gradient(135deg, rgba(0, 212, 255, 0.13), rgba(168, 85, 247, 0.16));
  color: #d9f7ff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.03em;
  font-family: inherit;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}

.wb-fullscreen-btn:hover {
  border-color: rgba(0, 212, 255, 0.68);
  background: linear-gradient(135deg, rgba(0, 212, 255, 0.22), rgba(168, 85, 247, 0.24));
  box-shadow: 0 0 14px rgba(0, 212, 255, 0.18);
  transform: translateY(-1px);
}

.wb-fullscreen-btn.is-fullscreen {
  border-color: rgba(168, 85, 247, 0.70);
  background: linear-gradient(135deg, rgba(168, 85, 247, 0.26), rgba(0, 212, 255, 0.14));
  color: #f3e8ff;
}

.wb-fs-icon { font-size: 12px; line-height: 1; }
.wb-fs-text { line-height: 1; }

.wb-menu-group { padding: 4px 0; }
.wb-menu-group + .wb-menu-group { border-top: 1px dashed rgba(255, 255, 255, 0.06); }
.wb-menu-group-h {
  padding: 4px 16px;
  font-size: 10.5px;
  color: #7a93b8;
  letter-spacing: 0.1em;
}

.wb-menu-item {
  display: block;
  padding: 7px 16px 7px 26px;
  font-size: 12px;
  color: #d8e4f5;
  text-decoration: none;
  cursor: pointer;
  transition: all 0.12s;
}
.wb-menu-item:hover {
  background: rgba(0, 212, 255, 0.08);
  color: #fff;
  padding-left: 30px;
}

.wb-menu-foot {
  padding: 8px 16px 4px;
  margin-top: 6px;
  border-top: 1px solid rgba(0, 212, 255, 0.10);
  font-size: 10.5px;
  color: #5b7196;
  text-align: center;
}

/* ============================================================
   3. 首页六座能力底座占位区
   ============================================================ */
.v22-6-foundation-zone {
  margin: 24px 16px 16px;
  padding: 16px 20px 18px;
  background: linear-gradient(180deg, rgba(15, 28, 48, 0.65), rgba(10, 22, 40, 0.65));
  border: 1px dashed rgba(168, 85, 247, 0.35);
  border-radius: 12px;
}

.v22-6-fz-h {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-bottom: 12px;
  margin-bottom: 14px;
  border-bottom: 1px dashed rgba(255, 255, 255, 0.08);
}
.v22-6-fz-tag {
  font-size: 10px;
  padding: 2.5px 8px;
  background: linear-gradient(135deg, #a855f7, #00d4ff);
  color: #061520;
  border-radius: 4px;
  font-weight: 700;
  letter-spacing: 0.1em;
}
.v22-6-fz-title {
  font-size: 13px;
  color: #e6efff;
  font-weight: 600;
}
.v22-6-fz-note {
  font-size: 10.5px;
  color: #5b7196;
  margin-left: auto;
}

.v22-6-fz-body {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 28px;
  align-items: center;
}

.v22-6-fz-center {
  display: flex;
  justify-content: center;
}
.v22-6-fz-center-card {
  padding: 16px 22px;
  background: linear-gradient(135deg, rgba(168, 85, 247, 0.22), rgba(0, 212, 255, 0.18));
  border: 1.5px solid rgba(168, 85, 247, 0.45);
  border-radius: 10px;
  text-align: center;
  box-shadow: 0 6px 20px rgba(168, 85, 247, 0.25);
}
.v22-6-fz-center-title {
  font-size: 14px;
  font-weight: 700;
  color: #fff;
  letter-spacing: 0.1em;
}
.v22-6-fz-center-sub {
  font-size: 10.5px;
  color: #c4d4ec;
  margin-top: 4px;
}

.v22-6-fz-rings {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  position: relative;
}
/* 连接线（占位形式：仅一道斜线，正式关系图在波次 3）*/
.v22-6-fz-rings::before {
  content: '';
  position: absolute;
  left: -32px; top: 50%;
  width: 28px; height: 1px;
  background: rgba(0, 212, 255, 0.35);
}

.v22-6-fz-ring {
  padding: 11px 14px;
  background: rgba(0, 212, 255, 0.06);
  border: 1px solid rgba(0, 212, 255, 0.18);
  border-radius: 8px;
}
.v22-6-fz-ring-deploy {
  background: rgba(46, 204, 113, 0.06);
  border-color: rgba(46, 204, 113, 0.22);
}
.v22-6-fz-ring-h {
  font-size: 11px;
  color: #00d4ff;
  font-weight: 600;
  letter-spacing: 0.12em;
  margin-bottom: 8px;
}
.v22-6-fz-ring-deploy .v22-6-fz-ring-h { color: #2ecc71; }

.v22-6-fz-ring-items {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.v22-6-fz-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 9px;
  font-size: 11.5px;
  color: #d8e4f5;
  background: rgba(255, 255, 255, 0.02);
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.12s;
}
.v22-6-fz-item:hover {
  background: rgba(0, 212, 255, 0.10);
  color: #fff;
}
.v22-6-fz-ring-deploy .v22-6-fz-item:hover {
  background: rgba(46, 204, 113, 0.10);
}
.v22-6-fz-code {
  display: inline-block;
  min-width: 22px;
  text-align: center;
  padding: 1.5px 0;
  font-size: 10px;
  color: #00d4ff;
  background: rgba(0, 212, 255, 0.12);
  border-radius: 3px;
  font-family: -apple-system, monospace;
  letter-spacing: 0.04em;
}
.v22-6-fz-ring-deploy .v22-6-fz-code {
  color: #2ecc71;
  background: rgba(46, 204, 113, 0.12);
}

@media (max-width: 1280px) {
  .v22-6-fz-body { grid-template-columns: 1fr; gap: 16px; }
  .v22-6-fz-rings::before { display: none; }
}

/* ============================================================
   V22.6 波次 2 新增：演示参考场景顶部提示条(路径甲免责标识)
   ============================================================ */
.demo-notice-banner {
  background: linear-gradient(90deg, rgba(255, 181, 46, 0.18) 0%, rgba(255, 181, 46, 0.06) 100%);
  border-left: 3px solid var(--accent-amber);
  padding: 8px 14px;
  margin: 0 0 12px 0;
  border-radius: 4px;
  font-size: 12px;
  color: var(--accent-amber);
  font-weight: 500;
  letter-spacing: 0.3px;
}

.demo-notice-banner::before {
  content: '⚠ ';
  margin-right: 4px;
  font-weight: bold;
}

/* 4 个新场景的推荐说明卡 · 末尾"演示数据"标识 */
.ai-recommend-card .demo-data-tag {
  display: inline-block;
  margin-top: 6px;
  padding: 2px 8px;
  font-size: 10px;
  color: var(--purple);
  background: rgba(168, 127, 232, 0.12);
  border-radius: 3px;
  letter-spacing: 0.3px;
}

/* ============================================================
   V22.6 波次 2 新增：4 个新场景的完整场景预览面板
   ============================================================ */
.v22-6-scenario-panel {
  position: fixed; inset: 56px 0 0 0;  /* 避开顶栏 */
  display: none;
  background: rgba(4, 8, 18, 0.98);
  z-index: 9000;
  overflow-y: auto;
  flex-direction: column;
}
.v22-6-scenario-panel.show { display: flex; }

.vsp-header {
  position: sticky; top: 0;
  background: linear-gradient(180deg, rgba(15, 28, 48, 0.98), rgba(10, 22, 40, 0.98));
  border-bottom: 1px solid rgba(0, 212, 255, 0.22);
  padding: 12px 22px;
  display: flex; align-items: center; justify-content: space-between;
  z-index: 10;
  backdrop-filter: blur(8px);
}
.vsp-h-left { display: flex; align-items: center; gap: 12px; }
.vsp-cat {
  font-size: 11px;
  padding: 3px 9px;
  background: linear-gradient(135deg, #a855f7, #00d4ff);
  color: #061520;
  border-radius: 4px;
  font-weight: 700;
  letter-spacing: 0.1em;
}
.vsp-title {
  font-size: 16px;
  font-weight: 700;
  color: #e6efff;
}
.vsp-light-tag {
  font-size: 10px;
  padding: 2px 7px;
  background: rgba(255, 181, 46, 0.18);
  color: var(--accent-amber);
  border-radius: 3px;
  letter-spacing: 0.2px;
}
.vsp-h-right { display: flex; align-items: center; gap: 10px; }

.vsp-btn {
  padding: 7px 16px;
  font-size: 12px;
  border-radius: 14px;
  background: rgba(0, 212, 255, 0.10);
  border: 1px solid rgba(0, 212, 255, 0.35);
  color: #d8e4f5;
  cursor: pointer;
  transition: all 0.15s;
}
.vsp-btn:hover { background: rgba(0, 212, 255, 0.18); }
.vsp-btn-secondary {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.12);
}
.vsp-btn-close {
  width: 28px; height: 28px;
  border-radius: 4px;
  background: transparent;
  border: 0;
  color: var(--text-tertiary);
  cursor: pointer;
  font-size: 16px;
}
.vsp-btn-close:hover { background: rgba(255, 255, 255, 0.08); color: #fff; }

.vsp-body {
  padding: 14px 22px 24px;
  display: grid;
  grid-template-columns: 380px 1fr;
  gap: 18px;
}
@media (max-width: 1180px) {
  .vsp-body { grid-template-columns: 1fr; }
}

.vsp-section + .vsp-section { margin-top: 16px; }
.vsp-section-h {
  font-size: 12px;
  color: var(--accent-cyan, #00d4ff);
  letter-spacing: 0.14em;
  font-weight: 600;
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px dashed rgba(0, 212, 255, 0.18);
}

.vsp-prompt-box {
  padding: 11px 14px;
  background: rgba(0, 212, 255, 0.06);
  border: 1px solid rgba(0, 212, 255, 0.20);
  border-radius: 6px;
  font-size: 13px;
  color: #d8e4f5;
  line-height: 1.7;
}

.vsp-chain {
  display: flex; flex-wrap: wrap; align-items: center; gap: 4px;
}
.vsp-chain-node {
  padding: 5px 11px;
  font-size: 11.5px;
  background: rgba(168, 85, 247, 0.12);
  border: 1px solid rgba(168, 85, 247, 0.30);
  color: #c084fc;
  border-radius: 12px;
}
.vsp-chain-arrow {
  color: var(--text-tertiary);
  font-size: 11px;
  margin: 0 2px;
}

.vsp-steps {
  display: flex; flex-direction: column; gap: 8px;
}
.vsp-step {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 9px 12px;
  background: rgba(255, 255, 255, 0.02);
  border-left: 2px solid rgba(0, 212, 255, 0.45);
  border-radius: 0 6px 6px 0;
}
.vsp-step-num {
  flex-shrink: 0;
  width: 22px; height: 22px;
  background: linear-gradient(135deg, #a855f7, #00d4ff);
  color: #fff;
  border-radius: 50%;
  display: grid; place-items: center;
  font-size: 11.5px;
  font-weight: 700;
}
.vsp-step-name { font-size: 12.5px; color: #e6efff; font-weight: 600; }
.vsp-step-desc { font-size: 11px; color: var(--text-secondary, #95aacb); margin-top: 2px; line-height: 1.5; }

.vsp-obj-list, .vsp-agent-list {
  display: flex; flex-direction: column; gap: 5px;
}
.vsp-obj-row {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 10px;
  background: rgba(255, 255, 255, 0.02);
  border-radius: 4px;
  font-size: 11.5px;
}
.vsp-obj-type {
  flex-shrink: 0;
  min-width: 42px;
  padding: 1.5px 5px;
  background: rgba(0, 212, 255, 0.12);
  color: var(--accent-cyan);
  border-radius: 3px;
  font-size: 10px;
  text-align: center;
}
.vsp-obj-name { flex: 1; color: #d8e4f5; }
.vsp-obj-level {
  flex-shrink: 0;
  padding: 1.5px 6px;
  font-size: 10px;
  border-radius: 3px;
}
.vsp-level-high        { background: rgba(231, 76, 60, 0.18);  color: #ff8a7a; }
.vsp-level-medium-high { background: rgba(255, 181, 46, 0.18); color: #ffc870; }
.vsp-level-medium      { background: rgba(241, 196, 15, 0.18); color: #ffe27a; }
.vsp-level-low         { background: rgba(46, 204, 113, 0.18); color: #7fe2a8; }

.vsp-agent-row {
  display: flex; align-items: baseline; gap: 10px;
  padding: 6px 10px;
  background: rgba(168, 85, 247, 0.06);
  border-left: 2px solid rgba(168, 85, 247, 0.35);
  border-radius: 0 4px 4px 0;
  font-size: 11.5px;
}
.vsp-agent-name { color: #c084fc; font-weight: 600; min-width: 100px; }
.vsp-agent-role { color: var(--text-secondary, #95aacb); flex: 1; }

.vsp-report-box {
  padding: 14px;
  background: rgba(15, 28, 48, 0.50);
  border: 1px solid rgba(0, 212, 255, 0.16);
  border-radius: 6px;
  max-height: 540px;
  overflow-y: auto;
  font-size: 13px;
  line-height: 1.75;
}

.vsp-plan-tabs, .vsp-mat-tabs {
  display: flex; gap: 4px;
  border-bottom: 1px solid rgba(0, 212, 255, 0.18);
  margin-bottom: 10px;
}
.vsp-plan-tab, .vsp-mat-tab {
  padding: 7px 16px;
  font-size: 12px;
  background: transparent;
  border: 0;
  color: var(--text-secondary, #95aacb);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all 0.12s;
}
.vsp-plan-tab:hover, .vsp-mat-tab:hover { color: #fff; }
.vsp-plan-tab.active, .vsp-mat-tab.active {
  color: var(--accent-cyan);
  border-bottom-color: var(--accent-cyan);
  font-weight: 600;
}

.vsp-plan-content { padding: 10px 0; }
.vsp-plan-tag {
  display: inline-block;
  padding: 4px 12px;
  font-size: 12px;
  font-weight: 700;
  border-radius: 4px;
  margin-bottom: 10px;
}
.vsp-plan-tag[data-tone="A"] { background: rgba(231, 76, 60, 0.20); color: #ff8a7a; }
.vsp-plan-tag[data-tone="B"] { background: rgba(255, 181, 46, 0.20); color: #ffc870; }
.vsp-plan-tag[data-tone="C"] { background: rgba(46, 204, 113, 0.20); color: #7fe2a8; }

.vsp-metric-table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 12px;
}
.vsp-metric-table td {
  padding: 7px 12px;
  font-size: 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.vsp-m-k { color: var(--text-secondary, #95aacb); width: 35%; }
.vsp-m-v { font-weight: 700; }
.vsp-bad { color: #ff8a7a; }
.vsp-warn { color: #ffc870; }
.vsp-win { color: #7fe2a8; }

.vsp-cmd-h {
  font-size: 11.5px;
  color: var(--accent-cyan);
  margin: 12px 0 6px;
  letter-spacing: 0.1em;
}
.vsp-cmd-list {
  padding-left: 22px;
  margin: 0;
}
.vsp-cmd-list li {
  font-size: 12px;
  color: #d8e4f5;
  line-height: 1.7;
  margin-bottom: 4px;
}
.vsp-cmd-desc {
  padding: 10px 12px;
  background: rgba(0, 212, 255, 0.05);
  border-radius: 4px;
  font-size: 12px;
  color: #d8e4f5;
  line-height: 1.7;
}

.vsp-brief-box {
  margin-top: 12px;
  padding: 10px 12px;
  background: rgba(168, 85, 247, 0.08);
  border-left: 2px solid rgba(168, 85, 247, 0.45);
  border-radius: 0 4px 4px 0;
  font-size: 11.5px;
  color: #d8e4f5;
  line-height: 1.65;
}

.vsp-mat-content { padding: 8px 0; }
.vsp-mat-box {
  padding: 11px 14px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 6px;
  font-size: 12.5px;
  color: #d8e4f5;
  line-height: 1.75;
  max-height: 460px;
  overflow-y: auto;
}

.vsp-recommend-box {
  padding: 12px 14px;
  background: linear-gradient(135deg, rgba(168, 85, 247, 0.10), rgba(0, 212, 255, 0.06));
  border: 1px dashed rgba(168, 85, 247, 0.32);
  border-radius: 6px;
  font-size: 12px;
  color: #d8e4f5;
  line-height: 1.75;
  white-space: pre-wrap;
}

/* ============================================================
   V22.6 波次 2.5 新增:子场景能力卡 toast 样式
   ============================================================ */
.ssi-toast-overlay {
  position: fixed; inset: 0; z-index: 9999;
  background: rgba(5, 10, 20, 0.65);
  backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
}
.ssi-toast-card {
  background: linear-gradient(135deg, #0a1828 0%, #0f1d33 100%);
  border: 1px solid rgba(0, 212, 255, 0.4);
  border-radius: 8px;
  width: 520px; max-width: 92vw;
  box-shadow: 0 12px 60px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(0, 212, 255, 0.15);
  font-family: 'Microsoft YaHei', 'PingFang SC', sans-serif;
  color: #d8e4f5;
}
.ssi-toast-h {
  position: relative;
  padding: 16px 20px 12px;
  border-bottom: 1px solid rgba(0, 212, 255, 0.18);
}
.ssi-toast-cat {
  font-size: 11px;
  color: var(--accent-cyan, #00d4ff);
  letter-spacing: 1.5px;
  font-weight: 600;
  text-transform: uppercase;
}
.ssi-toast-title {
  font-size: 18px;
  font-weight: 700;
  color: #ffffff;
  margin-top: 4px;
  letter-spacing: 0.5px;
}
.ssi-toast-close {
  position: absolute; right: 12px; top: 12px;
  background: transparent;
  border: none;
  color: #7a8aa3;
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
  padding: 4px 8px;
}
.ssi-toast-close:hover { color: #d8e4f5; }
.ssi-toast-body {
  padding: 16px 20px;
}
.ssi-toast-row {
  display: flex;
  align-items: flex-start;
  margin-bottom: 12px;
  font-size: 12.5px;
  line-height: 1.7;
}
.ssi-toast-row:last-child { margin-bottom: 0; }
.ssi-toast-label {
  flex: 0 0 64px;
  color: var(--accent-cyan, #00d4ff);
  font-weight: 600;
  margin-right: 12px;
}
.ssi-toast-val {
  flex: 1;
  color: #d8e4f5;
}
.ssi-toast-val.ssi-toast-uplineTarget {
  color: #a855f7;
}
.ssi-toast-footer {
  padding: 12px 20px 16px;
  border-top: 1px solid rgba(0, 212, 255, 0.12);
  text-align: right;
}
.ssi-toast-ok {
  background: linear-gradient(90deg, rgba(0, 212, 255, 0.2) 0%, rgba(0, 212, 255, 0.1) 100%);
  border: 1px solid rgba(0, 212, 255, 0.5);
  color: #ffffff;
  padding: 6px 18px;
  font-size: 12px;
  letter-spacing: 0.5px;
  border-radius: 4px;
  cursor: pointer;
}
.ssi-toast-ok:hover {
  background: rgba(0, 212, 255, 0.25);
  border-color: rgba(0, 212, 255, 0.7);
}

/* ============================================================
   V22.6 波次 2.6 新增:子场景"部分就绪"按钮样式(fog / typhoon)
   ============================================================ */
.scene-btn.scene-partial {
  /* 比"建设中"亮一档,比"已就绪"弱一档 */
  position: relative;
  border-color: rgba(0, 200, 255, 0.45);
  box-shadow: inset 0 0 12px rgba(0, 200, 255, 0.08);
}
.scene-btn.scene-partial:hover {
  border-color: rgba(0, 200, 255, 0.75);
  background: rgba(0, 200, 255, 0.06);
}
.scene-partial-mark {
  position: absolute;
  top: 4px;
  right: 6px;
  color: rgba(0, 200, 255, 0.85);
  font-size: 11px;
  line-height: 1;
  font-weight: 600;
  text-shadow: 0 0 4px rgba(0, 200, 255, 0.4);
}

/* ============================================================
   V22.7 优化：顶部主导航精修（v2 — 修复对右侧时间/置信度的遮挡）
   原则：
   1. 不改 .topbar 高度（仍 64px），不破坏 .main { height: calc(100vh - 64px) }
   2. .mode-switcher 仅做轻量包裹，去除会向右"外溢"的 box-shadow
   3. .mode-tab 不强制 min-width，避免在中等宽度屏将 center-info/right-info 挤出可视区
   4. 右侧 center-info / right-info 增加明确的左外间距，与菜单栏脱开
   ============================================================ */
.topbar {
  background:
    radial-gradient(circle at 50% -40%, rgba(0, 212, 255, 0.10), transparent 38%),
    linear-gradient(180deg, #071425 0%, #0b172b 100%);
  border-bottom: 1px solid rgba(0, 212, 255, 0.18);
}

/* logo 区不再吃掉过多宽度 */
.topbar .logo { min-width: 460px; }
.topbar .title-block { width: auto; min-width: 420px; }

.mode-switcher {
  height: 44px;
  padding: 3px;
  gap: 1px;
  align-items: center;
  border-radius: 4px;
  border: 1px solid rgba(93, 139, 190, 0.28);
  background:
    linear-gradient(180deg, rgba(13, 32, 58, 0.78), rgba(7, 18, 35, 0.78));
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04),
    inset 0 -1px 0 rgba(0, 0, 0, 0.24);
  position: relative;
  overflow: visible;
  flex-shrink: 0;
}

.mode-switcher::before {
  content: '';
  position: absolute;
  left: 10px;
  right: 10px;
  top: -1px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(0, 212, 255, 0.40), transparent);
  opacity: 0.6;
  pointer-events: none;
}

.mode-tab {
  height: 38px;
  min-width: 0;
  padding: 0 14px;
  border-right: 1px solid rgba(93, 139, 190, 0.16);
  border-radius: 2px;
  color: rgba(191, 209, 235, 0.84);
  font-size: 12.5px;
  letter-spacing: 0.04em;
  font-weight: 700;
  background: transparent;
  transition: background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
}

.mode-tab:hover {
  color: #f3fbff;
  background: rgba(0, 212, 255, 0.07);
}

.mode-tab.active {
  color: #18e1ff;
  background:
    linear-gradient(180deg, rgba(0, 212, 255, 0.20), rgba(0, 118, 180, 0.12));
  box-shadow:
    inset 0 0 0 1px rgba(0, 212, 255, 0.20),
    inset 0 -2px 0 rgba(0, 212, 255, 0.55);
}

/* 用底部光带取代 layout.css 原本的顶部光带 */
.mode-tab.active::after {
  top: auto;
  bottom: 0;
  left: 12px;
  right: 12px;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, transparent, #22d3ee, transparent);
  box-shadow: 0 0 6px rgba(34, 211, 238, 0.45);
}

.mode-tab .mode-icon {
  margin-right: 6px;
  font-size: 12.5px;
  opacity: 0.9;
}

.v22-6-workbench-divider {
  height: 26px;
  width: 1px;
  margin: 0 6px 0 8px;
  background: linear-gradient(180deg, transparent, rgba(0, 212, 255, 0.30), transparent);
}

.v22-6-workbench-btn {
  height: 38px;
  padding: 0 14px;
  border-radius: 3px;
  border: 1px solid rgba(168, 85, 247, 0.42);
  background:
    linear-gradient(180deg, rgba(78, 51, 138, 0.36), rgba(32, 28, 72, 0.50));
  color: #efe7ff;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.02em;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.v22-6-workbench-btn:hover,
.v22-6-workbench-wrap.open .v22-6-workbench-btn {
  border-color: rgba(168, 85, 247, 0.72);
  background:
    linear-gradient(180deg, rgba(108, 72, 178, 0.50), rgba(42, 34, 92, 0.66));
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.04);
}

/* 关键：让 center-info / right-info 与菜单栏拉开距离，避免视觉遮挡 */
.topbar .center-info {
  margin-left: 18px;
  padding-right: 10px;
}
.topbar .right-info {
  margin-left: 8px;
}

@media (max-width: 1600px) {
  .topbar .logo { min-width: 420px; }
  .topbar .title-block { min-width: 380px; }
  .topbar .title { font-size: 15px; }
  .mode-tab { padding: 0 11px; font-size: 12px; }
  .v22-6-workbench-btn { padding: 0 12px; font-size: 12px; }
}

@media (max-width: 1440px) {
  .topbar .logo { min-width: 380px; }
  .topbar .title-block { min-width: 340px; }
  .topbar .title { font-size: 14.5px; }
  .topbar .subtitle { font-size: 9.5px; }
  .mode-tab { padding: 0 9px; font-size: 11.5px; letter-spacing: 0.02em; }
  .mode-tab .mode-icon { margin-right: 4px; font-size: 12px; }
  .v22-6-workbench-btn { padding: 0 10px; font-size: 11.5px; }
}

@media (max-width: 1280px) {
  .mode-switcher { height: 40px; padding: 2px; }
  .mode-tab { height: 36px; padding: 0 7px; font-size: 11px; letter-spacing: 0; }
  .v22-6-workbench-btn { height: 36px; padding: 0 9px; }
  .topbar .center-info { gap: 10px; }
}

/* ============================================================
   v22.8 优化：顶部主导航整体向右微调（不挤压右侧时间/置信度/预警）
   思路：只在 .mode-switcher 上加 margin-left，避免改 logo/title 宽度
   ============================================================ */
.mode-switcher {
  margin-left: clamp(18px, 1.8vw, 36px);
}
.topbar .center-info { margin-left: 20px; min-width: 150px; }
.topbar .right-info  { margin-left: 10px; }

@media (max-width: 1600px) {
  .mode-switcher { margin-left: 14px; }
}
@media (max-width: 1440px) {
  .mode-switcher { margin-left: 6px; }
}
@media (max-width: 1366px) {
  .mode-switcher { margin-left: 0; }
}

/* ============================================================
   v22.8 优化：父页面 iframe 子系统壳层
   首页处于全屏演示时，点击业务工作台 → 在父页面叠一个全屏 iframe，
   父 document 不变 → 浏览器全屏不丢失。
   ============================================================ */
.v22-8-subsystem-shell {
  position: fixed;
  inset: 0;
  z-index: 99960;
  background:
    radial-gradient(circle at 50% 0%, rgba(0, 212, 255, 0.08), transparent 42%),
    #061123;
  display: none;
}
.v22-8-subsystem-shell.is-open { display: block; }
.v22-8-subsystem-frame {
  width: 100vw;
  height: 100vh;
  border: 0;
  display: block;
  background: #061123;
}
body.v22-8-subsystem-open { overflow: hidden; }

/* ============================================================
   v22.9：顶部主菜单定位优化
   思路：宽屏（≥1600）将 .mode-switcher 从 flex 流抽出，绝对定位到
   "中偏右"区域；窄屏退回 flex 布局，由 margin-left 调度。
   ============================================================ */
.topbar { position: relative; }

@media (min-width: 1600px) {
  .mode-switcher {
    position: absolute;
    top: 10px;
    /* 1920 时约 840px；1600 时约 630px；右侧再留 ≥970px 给系统时间/置信度/预警 */
    left: clamp(620px, 44vw, calc(100vw - 970px));
    margin-left: 0 !important;
    z-index: 130;
  }
  .topbar .center-info,
  .topbar .right-info {
    position: relative;
    z-index: 120;
  }
}

@media (max-width: 1599px) {
  .mode-switcher {
    position: static;
    margin-left: clamp(24px, 4vw, 80px) !important;
  }
}
@media (max-width: 1366px) {
  .mode-switcher { margin-left: 0 !important; }
}

/* ============================================================
   v22.9：业务工作台下拉面板与"全屏/退出"按钮收紧
   ============================================================ */
.wb-fullscreen-btn {
  height: 26px;
  min-width: 58px;
  padding: 0 8px;
  gap: 4px;
  border-radius: 6px;
  font-size: 11px;
}

.v22-6-workbench-menu {
  width: 220px;
  border-radius: 9px;
  padding: 8px 0 6px;
  box-shadow:
    0 18px 42px rgba(0, 0, 0, 0.56),
    0 0 0 1px rgba(0, 212, 255, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.wb-menu-head {
  padding: 8px 12px 9px 14px;
  gap: 8px;
}

.wb-menu-group-h {
  padding: 4px 14px;
  font-size: 10px;
  color: rgba(154, 176, 210, 0.78);
}

.wb-menu-item {
  padding: 7px 14px 7px 22px;
  font-size: 12px;
}

.wb-menu-item:hover {
  padding-left: 25px;
  background: linear-gradient(90deg, rgba(0, 212, 255, 0.10), rgba(0, 212, 255, 0.02));
}

.wb-menu-foot {
  padding: 7px 12px 3px;
  font-size: 10px;
  line-height: 1.35;
}

/* ============================================================
   v22.10 补丁集（集中放在文件末尾，便于版本管理）
   1) 顶部导航位置再向右微调（含 1366-1536 防压缩）
   2) 全省态势全屏顶部黑带修复
   3) 右侧滚动条深色化
   4) :fullscreen 根节点背景兜底
   ============================================================ */

/* —— 1) 顶部主导航位置再向右微调 —— */
@media (min-width: 1600px) {
  .mode-switcher {
    /* 1920 下约右移 ~60px；1600 下约 +45px；右侧仍预留 ≥900px 给系统状态 */
    left: clamp(680px, 46.5vw, calc(100vw - 900px)) !important;
  }
}
@media (max-width: 1599px) and (min-width: 1367px) {
  .mode-switcher {
    margin-left: clamp(70px, 6vw, 120px) !important;
  }
}
@media (max-width: 1366px) {
  .mode-switcher {
    margin-left: clamp(8px, 2vw, 32px) !important;
  }
}

/* 1440-1536 偏窄宽度防右侧时间/置信度被挤 */
@media (max-width: 1536px) and (min-width: 1367px) {
  .mode-tab {
    padding-left: 10px !important;
    padding-right: 10px !important;
    font-size: 12px !important;
  }
  .v22-6-workbench-btn {
    padding-left: 10px !important;
    padding-right: 10px !important;
    font-size: 12px !important;
  }
}

/* —— 2) 全省态势顶部黑带修复 —— */
#mode-overview .ov-map-wrap {
  background:
    radial-gradient(circle at 50% 18%, rgba(35, 78, 126, 0.22), transparent 45%),
    linear-gradient(180deg, #0a182b 0%, #0b1b30 42%, #081625 100%) !important;
}
#mode-overview #ov-map {
  display: block;
  width: 100%;
  height: 100%;
  background:
    radial-gradient(circle at 50% 18%, rgba(35, 78, 126, 0.16), transparent 45%),
    linear-gradient(180deg, #0a182b 0%, #0b1b30 42%, #081625 100%);
}

/* —— 3) 全省态势右侧滚动条深色化 —— */
#mode-overview .ov-right {
  scrollbar-width: thin;
  scrollbar-color: rgba(90, 138, 184, 0.45) rgba(5, 12, 24, 0.35);
}
#mode-overview .ov-right::-webkit-scrollbar { width: 6px; }
#mode-overview .ov-right::-webkit-scrollbar-track {
  background: rgba(5, 12, 24, 0.35);
}
#mode-overview .ov-right::-webkit-scrollbar-thumb {
  background: rgba(90, 138, 184, 0.45);
  border-radius: 999px;
}
#mode-overview .ov-right::-webkit-scrollbar-thumb:hover {
  background: rgba(0, 212, 255, 0.42);
}

/* —— 4) Fullscreen API 根节点兜底，避免顶部露出浏览器/根背景黑边 —— */
html:fullscreen,
html:-webkit-full-screen {
  background: #061123 !important;
}
html:fullscreen body,
html:-webkit-full-screen body {
  margin: 0 !important;
  padding: 0 !important;
  width: 100vw !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  overflow: hidden !important;
  background: #061123 !important;
}
html:fullscreen .topbar,
html:-webkit-full-screen .topbar {
  top: 0 !important;
  margin-top: 0 !important;
}

/* ============================================================
   v22.11 收口补丁集（统一管理；后续仅在此段微调）
   ============================================================ */

/* —— 1) 顶部主导航最终定位规则（CSS 变量收口三档） —— */
:root {
  --main-nav-wide-left-min: 700px;
  --main-nav-wide-left-prefer: 47.8vw;
  --main-nav-wide-right-reserve: 820px;
}

@media (min-width: 1600px) {
  .mode-switcher {
    position: absolute;
    top: 10px;
    left: clamp(
      var(--main-nav-wide-left-min),
      var(--main-nav-wide-left-prefer),
      calc(100vw - var(--main-nav-wide-right-reserve))
    ) !important;
    margin-left: 0 !important;
    z-index: 130;
  }
}

@media (max-width: 1599px) and (min-width: 1367px) {
  .mode-switcher {
    position: static;
    margin-left: clamp(72px, 6vw, 120px) !important;
  }
}

@media (max-width: 1366px) {
  .mode-switcher {
    position: static;
    margin-left: clamp(8px, 2vw, 32px) !important;
  }
}

/* —— 2) 全省态势容器级背景兜底（防止全屏/投屏/缩放出现纯黑边） —— */
#mode-overview,
#mode-overview .ov-left {
  background:
    radial-gradient(circle at 48% 22%, rgba(35, 78, 126, 0.18), transparent 46%),
    linear-gradient(180deg, #0a182b 0%, #0b1b30 44%, #081625 100%) !important;
}

#mode-overview .ov-map-wrap {
  position: relative;
  overflow: hidden;
}
#mode-overview .ov-map-wrap::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 50% 18%, rgba(35, 78, 126, 0.22), transparent 45%),
    linear-gradient(180deg, #0a182b 0%, #0b1b30 42%, #081625 100%);
}
#mode-overview #ov-map {
  position: relative;
  z-index: 1;
}

/* —— 3) 全省态势顶部图层按钮 1440 及以下允许压缩/换行 —— */
@media (max-width: 1440px) {
  #mode-overview .ov-left-header {
    padding: 0 14px;
    gap: 10px;
  }
  #mode-overview .ov-layer-toggles {
    flex-wrap: wrap;
    justify-content: flex-end;
    row-gap: 3px;
    max-width: 620px;
  }
  #mode-overview .ov-layer-btn {
    padding: 3px 7px;
    font-size: 10.5px;
  }
}

/* ============================================================
   v22.12 优化：业务工作台下拉提高不透明度
   原 rgba(7,16,31,0.97) + backdrop-filter:blur(10px) 在地图密集区会透出
   背景，文字干扰明显。本轮改为接近纯色 + 移除 backdrop-filter。
   ============================================================ */
.v22-6-workbench-menu {
  background: #060f1e !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  border-color: rgba(0, 212, 255, 0.32) !important;
  box-shadow:
    0 22px 50px rgba(0, 0, 0, 0.66),
    0 0 0 1px rgba(0, 212, 255, 0.10),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
}

/* ============================================================
   v22.14：修复业务工作台下拉面板竖线穿透文字
   组合策略（三层兜底）：
   1) 打开态隐藏顶部导航装饰分隔线
   2) 菜单自身 isolation + ::before 实底层，彻底阻断后方线条穿透
   3) 菜单项与分组提级 z-index，确保文字始终在最上层
   ============================================================ */

/* —— 1) 打开态弱化顶部导航装饰线 —— */
.mode-switcher.workbench-open::before,
.mode-switcher.workbench-open .v22-6-workbench-divider {
  opacity: 0 !important;
}
/* v22.16：mode-tab 的 border-right 在打开态必须完全透明，
   原 rgba(...0.06) 6% 残留是竖线主要来源。 */
.mode-switcher.workbench-open .mode-tab {
  border-right-color: transparent !important;
}
/* v22.16：工作台按钮左边框在打开态也隐藏，避免按钮边框在菜单上方形成同样视觉竖线 */
.mode-switcher.workbench-open .v22-6-workbench-btn {
  border-left-color: transparent !important;
}
.mode-switcher.workbench-open .v22-6-workbench-wrap {
  z-index: 2600;
}

/* —— 2) 菜单形成独立叠层 + 实底 ::before 遮罩 —— */
.v22-6-workbench-menu {
  position: absolute;
  isolation: isolate;
  overflow: hidden;
  background: #060f1e !important;
  border-color: rgba(0, 212, 255, 0.34) !important;
}
.v22-6-workbench-menu::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: inherit;
  pointer-events: none;
  background: linear-gradient(180deg, #07172a 0%, #050d1c 100%);
}
.v22-6-workbench-menu > * {
  position: relative;
  z-index: 1;
}

/* —— 3) 菜单内文字层确保始终在最上 —— */
.v22-6-workbench-menu .wb-menu-head,
.v22-6-workbench-menu .wb-menu-foot {
  position: relative;
  z-index: 2;
}
.v22-6-workbench-menu .wb-menu-group-h {
  position: relative;
  z-index: 2;
  padding-left: 16px !important;
}
.v22-6-workbench-menu .wb-menu-item {
  position: relative;
  z-index: 2;
  padding-left: 24px !important;
  padding-right: 18px !important;
  letter-spacing: 0.02em;
  line-height: 1.25;
}

/* ============================================================
   v22.15：彻底消除业务工作台下拉中的竖线穿透
   覆盖所有已知潜在源（即使部分实际不构成线，也按"防御性"全部清零）
   1) 把 menu 的 box-shadow 1px 描边去掉（避免和 border 双层叠加产生视觉细线）
   2) 改用单一 border + background-clip 强制内容只绘制在 padding-box 内
   3) menu 内所有子孙的 border-left/border-right 强制为 0
   4) anchor 默认 outline / focus ring 彻底清零
   5) ::before 把渐变替换为纯色，杜绝渐变带形成视觉竖线
   6) 用 clip-path 强制裁剪到圆角内，阻断任何 box-shadow 外溢
   ============================================================ */
.v22-6-workbench-menu {
  background: #060f1e !important;
  background-clip: padding-box !important;
  border: 1px solid rgba(0, 212, 255, 0.32) !important;
  /* 单层柔和投影，去掉容易产生细线的 0 0 0 1px 描边 */
  box-shadow:
    0 22px 50px rgba(0, 0, 0, 0.66),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
  clip-path: inset(0 round 9px);
}

.v22-6-workbench-menu::before {
  /* 改用纯色面板，避免渐变带（哪怕概率极低）产生视觉竖线 */
  background: #060f1e !important;
}

/* 只针对菜单分组容器与菜单项清除左右 border，不影响顶部"退出/全屏"按钮 */
.v22-6-workbench-menu .wb-menu-group,
.v22-6-workbench-menu .wb-menu-group-h,
.v22-6-workbench-menu .wb-menu-item,
.v22-6-workbench-menu .wb-menu-head,
.v22-6-workbench-menu .wb-menu-foot,
.v22-6-workbench-menu .wb-menu-title {
  border-left: 0 !important;
  border-right: 0 !important;
}

/* menu 自身保留外圈 1px border（被上面 * 选择器覆盖也没关系：
   下面用 box-shadow 兜底，确保 menu 容器看起来仍有清晰外框） */
.v22-6-workbench-menu {
  box-shadow:
    0 22px 50px rgba(0, 0, 0, 0.66),
    inset 0 0 0 1px rgba(0, 212, 255, 0.32),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
  border: 0 !important;
}

/* anchor / button 默认 outline 与 focus ring 在 menu 内全部清零 */
.v22-6-workbench-menu a,
.v22-6-workbench-menu button,
.v22-6-workbench-menu .wb-menu-item,
.v22-6-workbench-menu .wb-menu-item:focus,
.v22-6-workbench-menu .wb-menu-item:focus-visible,
.v22-6-workbench-menu .wb-menu-item:active {
  outline: 0 !important;
  outline-offset: 0 !important;
  -webkit-tap-highlight-color: transparent !important;
}

/* ============================================================
   v22.17：修复 #node-drawer 未打开仍画 1px 左边框 + 24px 阴影
   现象：抽屉默认 width:0，但 border-left:1px solid + box-shadow:-8px 0 24px
   依然在 .map-container 右边界画线 + 投影，向左扩散 ~32px，
   渗入工作台下拉菜单区域，形成顽固竖线。
   方案：未 .show 时 border/shadow 全部关掉，pointer-events 也禁用
   （0 宽度抽屉本就不应该可点）。
   ============================================================ */
.node-drawer:not(.show) {
  border-left: 0 !important;
  box-shadow: none !important;
  pointer-events: none !important;
}
