/* 9senses vectormap — strict Divi flow containment.
   The animation engine is unchanged. These rules only ensure that a shortcode
   occupies its authored module position and that generated excerpts contribute
   measurable height to the document. */

/* Modern browsers can repair the Divi host before the footer script runs. The
   selector is intentionally limited to the module that actually contains a
   vectormap. It neutralises only placement properties that can take the module
   out of normal column flow; margins and padding remain under Divi's control. */
@supports selector(:has(*)) {
  .et_pb_module:has(.ns-vmap-shell):not(.ns-pd-logo){
    position:relative!important;
    inset:auto!important;
    top:auto!important;
    right:auto!important;
    bottom:auto!important;
    left:auto!important;
    float:none!important;
    clear:both!important;
    transform:none!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }
  .et_pb_module:has(.ns-vmap-shell):not(.ns-pd-logo) > .et_pb_code_inner,
  .et_pb_module:has(.ns-vmap-shell):not(.ns-pd-logo) > .et_pb_text_inner{
    position:relative!important;
    display:flow-root!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    overflow:visible!important;
  }
}

/* JS applies this class as a fallback for browsers/CSS pipelines where :has()
   is unavailable or stripped. */
.et_pb_module.ns-vmap-host-module:not(.ns-pd-logo){
  position:relative!important;
  inset:auto!important;
  top:auto!important;
  right:auto!important;
  bottom:auto!important;
  left:auto!important;
  float:none!important;
  clear:both!important;
  transform:none!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
.et_pb_module.ns-vmap-host-module:not(.ns-pd-logo) > .et_pb_code_inner,
.et_pb_module.ns-vmap-host-module:not(.ns-pd-logo) > .et_pb_text_inner{
  position:relative!important;
  display:flow-root!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:visible!important;
}

/* The shortcode root itself establishes a fresh block formatting context. It
   cannot float upward alongside earlier content, and all generated children are
   contained in the slot's measurable box. */
.ns-vmap-shell{
  position:relative!important;
  display:flow-root!important;
  float:none!important;
  clear:none!important;
  inset:auto!important;
  transform:none!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin-left:0!important;
  margin-right:0!important;
  box-sizing:border-box!important;
  overflow:visible!important;
  isolation:isolate;
}
.ns-vmap-shell > .ns-vmap{
  position:relative!important;
  display:block!important;
  float:none!important;
  clear:none!important;
  inset:auto!important;
  transform:none!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin-left:0!important;
  margin-right:0!important;
  box-sizing:border-box!important;
}

/* Side excerpt layouts are a self-contained grid at the shortcode's DOM slot.
   Legacy float declarations from landing-135.css are defeated explicitly. */
.ns-vmap-shell--split{
  display:grid!important;
  grid-template-rows:auto;
  column-gap:4%;
  align-items:start;
}
.ns-vmap-shell--right{
  grid-template-columns:minmax(0,1fr) minmax(0,var(--ns-excol,36%));
}
.ns-vmap-shell--left{
  grid-template-columns:minmax(0,var(--ns-excol,36%)) minmax(0,1fr);
}
.ns-vmap-shell--split > .ns-vmap--right,
.ns-vmap-shell--split > .ns-vmap--left,
.ns-vmap-shell--split > .ns-vmap-detail{
  float:none!important;
  clear:none!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin-top:0!important;
  box-sizing:border-box!important;
}
.ns-vmap-shell--right > .ns-vmap{grid-column:1;grid-row:1}
.ns-vmap-shell--right > .ns-vmap-detail{grid-column:2;grid-row:1}
.ns-vmap-shell--left > .ns-vmap-detail{grid-column:1;grid-row:1}
.ns-vmap-shell--left > .ns-vmap{grid-column:2;grid-row:1}
.ns-vmap-shell > .ns-vmap-clearfix{display:none!important}

/* The old engine positions every excerpt absolutely, leaving the generated
   panel with zero height. Overlay the excerpts in one grid cell instead. Hidden
   entries still determine the required panel height; only the active entry is
   visible and interactive. */
.ns-vmap-shell > .ns-vmap-detail{
  position:relative!important;
  display:grid!important;
  float:none!important;
  clear:none!important;
  inset:auto!important;
  transform:none!important;
  grid-template-columns:minmax(0,1fr);
  align-content:start;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
.ns-vmap-shell:not(.ns-vmap-shell--split) > .ns-vmap-detail{
  margin-top:24px!important;
}
.ns-vmap-shell > .ns-vmap-detail > .ns-vmap-panel-heading{
  position:relative!important;
  inset:auto!important;
  grid-column:1;
  grid-row:1;
  min-width:0;
}
.ns-vmap-shell > .ns-vmap-detail > .ns-vexcerpt{
  position:relative!important;
  inset:auto!important;
  left:auto!important;
  right:auto!important;
  top:auto!important;
  bottom:auto!important;
  transform:none!important;
  grid-column:1;
  grid-row:2;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
  visibility:hidden;
  opacity:0;
  pointer-events:none;
  /* `visibility` is toggled here (rather than display) so that inactive
     excerpts still contribute height to the shared grid cell. It is not
     interpolatable, so it must be transitioned explicitly or it would flip to
     hidden the instant .ns-on is removed and cut the opacity fade short — the
     excerpt would vanish abruptly while the panel heading, which has no
     visibility toggle, faded out normally. Holding the flip until the fade has
     finished (0s delay = FADE) keeps both in step. Duration matches
     `transition:opacity 2s` in landing-135.css and FADE in landing-135.js. */
  transition:opacity 2s ease, visibility 0s linear 2s;
}
.ns-vmap-shell:not(.ns-vmap-shell--split) > .ns-vmap-detail > .ns-vexcerpt{
  grid-row:1;
}
.ns-vmap-shell > .ns-vmap-detail > .ns-vexcerpt.ns-on{
  visibility:visible;
  opacity:1;
  pointer-events:auto;
  /* fade-IN: become visible immediately, then fade up */
  transition:opacity 2s ease, visibility 0s linear 0s;
}

@media(max-width:640px){
  .ns-vmap-shell--split{display:block!important}
  .ns-vmap-shell--split > .ns-vmap-detail{margin-top:16px!important}
  .ns-vmap-shell--split > .ns-vmap-detail > .ns-vmap-panel-heading{grid-row:1}
  .ns-vmap-shell--split > .ns-vmap-detail > .ns-vexcerpt{grid-row:2}
}
