/* 概念包关系图 */
.igs-nv-cgraph {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  margin: 0 0 0.75rem;
  padding: 0.65rem 0.75rem 0.7rem;
  border-radius: 14px;
  border: 1px solid rgba(120, 90, 60, 0.12);
  background:
    radial-gradient(90% 80% at 8% 0%, rgba(196, 120, 72, 0.06), transparent 50%),
    linear-gradient(180deg, rgba(255, 252, 247, 0.95), rgba(245, 238, 228, 0.88));
}
.igs-nv-cgraph.is-collapsed {
  gap: 0;
  padding: 0.5rem 0.7rem;
}
.igs-nv-cgraph.is-collapsed .igs-nv-cgraph__hd {
  align-items: center;
}
.igs-nv-cgraph.is-fullscreen {
  position: fixed;
  inset: 0;
  z-index: 9400;
  margin: 0;
  border-radius: 0;
  border: none;
  padding: 0.85rem 1rem 1rem;
  gap: 0.5rem;
  background:
    radial-gradient(70% 50% at 10% 0%, rgba(196, 120, 72, 0.08), transparent 55%),
    linear-gradient(180deg, #fffcf8, #efe4d6);
  box-shadow: none;
}
.igs-nv-cgraph.is-fullscreen .igs-nv-cgraph__host {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
  border-radius: 14px;
}
.igs-nv-cgraph__hd {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.5rem;
}
.igs-nv-cgraph__hd strong {
  font-size: 0.98rem;
  letter-spacing: 0.01em;
}
.igs-nv-cgraph__hd .igs-muted-sm {
  margin: 0.15rem 0 0;
}
.igs-nv-cgraph__acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
}
.igs-nv-cgraph__acts .is-on {
  border-color: rgba(170, 100, 50, 0.5);
  background: rgba(196, 120, 72, 0.12);
}
.igs-nv-cgraph__focus {
  display: flex;
  flex-wrap: wrap;
  gap: 0.28rem;
  align-items: center;
}
.igs-nv-cgraph__focus-btn {
  appearance: none;
  border: 1px solid rgba(120, 90, 60, 0.14);
  background: rgba(255, 252, 247, 0.9);
  color: rgba(70, 52, 36, 0.88);
  border-radius: 999px;
  padding: 0.22rem 0.65rem;
  font-size: 0.72rem;
  cursor: pointer;
  line-height: 1.3;
}
.igs-nv-cgraph__focus-btn.is-on {
  border-color: rgba(170, 100, 50, 0.55);
  background: rgba(196, 120, 72, 0.16);
  font-weight: 650;
}
.igs-nv-cgraph__legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 0.85rem;
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 0.68rem;
  color: rgba(70, 55, 40, 0.62);
}
.igs-nv-cgraph__legend li {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
}
.igs-nv-cgraph__legend i {
  display: inline-block;
  width: 0.7rem;
  height: 0.7rem;
  border-radius: 3px;
  border: 1px solid rgba(80, 60, 40, 0.18);
}
.igs-nv-cgraph__legend i.is-hub { background: linear-gradient(#fff6eb, #f0dcc4); }
.igs-nv-cgraph__legend i.is-sat { background: linear-gradient(#f3f8f4, #d9ebe0); }
.igs-nv-cgraph__legend i.is-land { background: linear-gradient(#f2f6fa, #d8e4f0); }
.igs-nv-cgraph__legend i.is-down {
  background: linear-gradient(#f8f5f0, #e8e0d4);
  border-style: dashed;
}
.igs-nv-cgraph__host {
  position: relative;
  min-height: 240px;
  height: min(46vh, 440px);
  border-radius: 12px;
  border: 1px solid rgba(120, 90, 60, 0.1);
  overflow: hidden;
  background: linear-gradient(165deg, #fffdf9, #f3ebe0);
}
.igs-nv-cgraph__host canvas {
  display: block;
  width: 100%;
  height: 100%;
  touch-action: none;
  cursor: grab;
}
.igs-nv-cgraph__host canvas:active { cursor: grabbing; }
.igs-nv-cgraph__hint {
  position: absolute;
  left: 0.55rem;
  bottom: 0.4rem;
  margin: 0;
  padding: 0.18rem 0.5rem;
  border-radius: 999px;
  background: rgba(255, 252, 247, 0.88);
  border: 1px solid rgba(120, 90, 60, 0.1);
  font-size: 0.66rem;
  color: rgba(70, 55, 40, 0.55);
  pointer-events: none;
}
.igs-nv-cgraph__float {
  position: absolute;
  z-index: 5;
  max-height: 72%;
  overflow: auto;
  padding: 0.6rem 0.7rem 0.7rem;
  border-radius: 12px;
  border: 1px solid rgba(120, 90, 60, 0.16);
  background: rgba(255, 253, 248, 0.97);
  box-shadow: 0 12px 28px rgba(40, 28, 16, 0.12);
  backdrop-filter: blur(6px);
}
.igs-nv-cgraph__float-hd {
  display: flex;
  justify-content: space-between;
  gap: 0.45rem;
  align-items: flex-start;
  margin-bottom: 0.4rem;
}
.igs-nv-cgraph__float-hd strong {
  display: block;
  font-size: 0.9rem;
}
.igs-nv-cgraph__float-body {
  font-size: 0.76rem;
  line-height: 1.45;
  color: rgba(50, 40, 30, 0.88);
}
.igs-nv-cgraph__float-body p { margin: 0 0 0.3rem; }
.igs-nv-cgraph__float-body b { color: rgba(80, 60, 40, 0.72); font-weight: 650; }
.igs-nv-cgraph__float-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.45rem;
}

body.igs-nv-cgraph-fs-lock {
  overflow: hidden;
}

@media (max-width: 720px) {
  .igs-nv-cgraph__host { height: min(42vh, 320px); }
  .igs-nv-cgraph.is-fullscreen .igs-nv-cgraph__host { height: auto; }
}
