/* Nova Connexions – Partners Map (v1.3) */

.nvpm-wrap{position:relative;}

/* No background: let Divi section color show through */
.nvpm-graph{position:relative;width:100%;border-radius:18px;overflow:hidden;background:transparent;}

/* Optional toolbar (hidden by default via shortcode) */
.nvpm-toolbar{display:flex;justify-content:flex-end;gap:10px;margin:0 0 10px;}
.nvpm-select{min-width:220px;max-width:100%;padding:10px 12px;border:1px solid rgba(0,0,0,.12);border-radius:12px;background:#fff;}

/* SVG */
.nvpm-svg{width:100%;height:100%;display:block;}
.nvpm-edge{stroke:rgba(11,34,74,.22);stroke-width:2;}
.nvpm-node{cursor:pointer;}
.nvpm-node--center{cursor:default;}

.nvpm-node-ring{fill:#ffffff;stroke:rgba(11,34,74,.15);stroke-width:2;filter: drop-shadow(0 10px 24px rgba(0,0,0,.10));}
.nvpm-node-label{font-family:inherit;font-weight:600;fill:#0b224a;}

/* Modal (centered rectangle + blur backdrop)
   NOTE: We use a very high z-index because Divi/headers can have huge stacking contexts.
*/
.nvpm-modal{position:fixed;inset:0;z-index:2147483647;display:none;}
.nvpm-modal.is-open{display:block;}
.nvpm-modal__backdrop{position:absolute;inset:0;background:rgba(0,0,0,.52);backdrop-filter: blur(10px);-webkit-backdrop-filter: blur(10px);}

.nvpm-modal__panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(860px, calc(100vw - 36px));
  max-height:min(82vh, 720px);
  overflow:auto;
  background:#fff;border-radius:18px;
  box-shadow:0 24px 60px rgba(0,0,0,.25);
  padding:22px 22px 18px;
}

.nvpm-modal__close{position:absolute;top:12px;right:12px;width:38px;height:38px;border:0;background:#f3f4f6;border-radius:12px;font-size:22px;line-height:38px;cursor:pointer;}

.nvpm-modal__header{display:flex;align-items:center;gap:14px;padding-right:46px;}
.nvpm-modal__logo{width:64px;height:64px;border-radius:16px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid rgba(0,0,0,.08);}
.nvpm-modal__logo img{max-width:86%;max-height:86%;object-fit:contain;display:block;}

.nvpm-modal__name{font-size:22px;font-weight:800;line-height:1.2;color:#0b224a;}
.nvpm-modal__slogan{margin-top:4px;font-size:14px;color:rgba(11,34,74,.72);}

.nvpm-modal__desc{margin-top:14px;font-size:15px;line-height:1.55;color:rgba(0,0,0,.82);}

.nvpm-modal__actions{margin-top:16px;display:flex;gap:10px;flex-wrap:wrap;}
.nvpm-btn{display:inline-flex;align-items:center;justify-content:center;padding:11px 14px;border-radius:12px;text-decoration:none;font-weight:700;}
.nvpm-btn--primary{background:#0b224a;color:#fff;}

.nvpm-modal__socials{margin-top:14px;display:flex;gap:10px;flex-wrap:wrap;}
.nvpm-social{width:40px;height:40px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;background:#f3f4f6;color:#0b224a;text-decoration:none;font-weight:800;}
.nvpm-social[hidden]{display:none !important;}

/* If social icons are configured as PNG, they are rendered inside the same anchor */
.nvpm-social img{width:18px;height:18px;object-fit:contain;display:block;}

@media (max-width:520px){
  .nvpm-modal__panel{padding:18px 16px 14px;}
  .nvpm-modal__name{font-size:19px;}
}

html.nvpm-lock, body.nvpm-lock{overflow:hidden;}



/* ===== Animations (v1.6) ===== */
.nvpm-graph .nvpm-node{transform-box: fill-box; transform-origin:center;}
.nvpm-graph .nvpm-node.nvpm-in{opacity:0; transform:scale(.92);}
.nvpm-graph.nvpm-has-anim .nvpm-node.nvpm-in{
  animation: nvpmFadeScale .55s cubic-bezier(.2,.8,.2,1) var(--nvpm-delay,0ms) forwards;
}
@keyframes nvpmFadeScale{
  to { opacity:1; transform:scale(1); }
}

/* Hover focus: dim others + highlight target */
.nvpm-node.is-dim{opacity:.28;}
.nvpm-edge.is-dim{opacity:.18;}
.nvpm-node.is-active .nvpm-node-ring{stroke: rgba(198,166,100,.95); stroke-width:3;}
.nvpm-edge.is-active{stroke: rgba(198,166,100,.65); stroke-width:3;}

/* Center halo pulse */
.nvpm-center-halo{
  fill: rgba(198,166,100,.16);
  opacity: .16;
  transform-box: fill-box;
  transform-origin: center;
  animation: nvpmHalo 5.8s ease-in-out infinite;
}
@keyframes nvpmHalo{
  0%,100%{ transform:scale(.98); opacity:.12; }
  50%{ transform:scale(1.08); opacity:.22; }
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce){
  .nvpm-graph.nvpm-has-anim .nvpm-node.nvpm-in{animation:none; opacity:1; transform:none;}
  .nvpm-center-halo{animation:none;}
}

