
/* JB Scientific Pro Motion — editable Elementor pages */
:root{
  --jb-blue:#2437C5;
  --jb-dark:#071923;
  --jb-ease:cubic-bezier(.19,1,.22,1);
}
html{scroll-behavior:smooth}
body{overflow-x:hidden}

.jb-pro-page{
  position:relative;
}
.jb-pro-page .elementor-element{
  transition:transform .45s var(--jb-ease), box-shadow .45s var(--jb-ease);
}
.jb-pro-page .jb-reveal{
  opacity:0;
  transform:translateY(50px);
  filter:blur(7px);
  transition:opacity .9s ease, transform .95s var(--jb-ease), filter .95s var(--jb-ease);
}
.jb-pro-page .jb-reveal.jb-visible{
  opacity:1;
  transform:none;
  filter:none;
}
.jb-pro-page .jb-stagger > .e-con,
.jb-pro-page .jb-stagger > .elementor-element{
  opacity:0;
  transform:translateY(28px);
  transition:opacity .7s ease, transform .8s var(--jb-ease);
}
.jb-pro-page .jb-stagger.jb-visible > :nth-child(1){transition-delay:.04s}
.jb-pro-page .jb-stagger.jb-visible > :nth-child(2){transition-delay:.12s}
.jb-pro-page .jb-stagger.jb-visible > :nth-child(3){transition-delay:.20s}
.jb-pro-page .jb-stagger.jb-visible > :nth-child(4){transition-delay:.28s}
.jb-pro-page .jb-stagger.jb-visible > :nth-child(5){transition-delay:.36s}
.jb-pro-page .jb-stagger.jb-visible > :nth-child(6){transition-delay:.44s}
.jb-pro-page .jb-stagger.jb-visible > .e-con,
.jb-pro-page .jb-stagger.jb-visible > .elementor-element{
  opacity:1;
  transform:none;
}

.jb-pro-page .e-con,
.jb-pro-page .elementor-widget-container{
  backface-visibility:hidden;
}

@media (hover:hover) and (pointer:fine){
  .jb-pro-page .jb-hover-lift:hover{
    transform:translateY(-10px) scale(1.012);
    box-shadow:0 18px 40px rgba(16,42,56,.14);
  }
}

#jb-scroll-progress{
  position:fixed;left:0;top:0;height:3px;width:0;
  background:linear-gradient(90deg,#2437C5,#7c86ff);
  z-index:99999;pointer-events:none;
}

.jb-cursor-glow{
  position:fixed;
  width:320px;height:320px;border-radius:50%;
  pointer-events:none;z-index:1;opacity:0;
  background:radial-gradient(circle,rgba(65,84,255,.09),transparent 68%);
  transform:translate(-50%,-50%);
  transition:opacity .2s ease;
}
body.jb-cursor-active .jb-cursor-glow{opacity:1}

@media(max-width:900px){
  .jb-cursor-glow{display:none}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .jb-pro-page .jb-reveal,
  .jb-pro-page .jb-stagger > .e-con,
  .jb-pro-page .jb-stagger > .elementor-element{
    opacity:1!important;transform:none!important;filter:none!important;transition:none!important
  }
}


/* ==========================================================
   Elementor editor mode — keep every editable item visible.
   Front-end motion remains unchanged.
   ========================================================== */
.elementor-editor-active [data-jb-reveal],
.elementor-editor-active .jb-reveal,
.elementor-editor-active .jb-fade-up,
.elementor-editor-active .jb-fade-in,
.elementor-editor-active .jb-scale-in,
.elementor-editor-active .jb-stagger > *,
body.elementor-editor-active [data-jb-reveal],
body.elementor-editor-active .jb-reveal,
body.elementor-editor-active .jb-fade-up,
body.elementor-editor-active .jb-fade-in,
body.elementor-editor-active .jb-scale-in,
body.elementor-editor-active .jb-stagger > * {
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  filter: none !important;
  clip-path: none !important;
  animation: none !important;
  transition: none !important;
}


/* ==========================================================
   v1.0.3 frontend-safe motion baseline
   Content is visible by default. Reveal hiding starts only
   after JavaScript marks the page as motion-ready.
   ========================================================== */
.jb-pro-page .jb-reveal,
.jb-pro-page .jb-fade-up,
.jb-pro-page .jb-fade-in,
.jb-pro-page .jb-scale-in,
.jb-pro-page .jb-stagger > * {
  opacity: 1;
  visibility: visible;
  transform: none;
  filter: none;
}

.jb-pro-page.jb-motion-ready .jb-reveal:not(.jb-visible),
.jb-pro-page.jb-motion-ready .jb-fade-up:not(.jb-visible),
.jb-pro-page.jb-motion-ready .jb-fade-in:not(.jb-visible),
.jb-pro-page.jb-motion-ready .jb-scale-in:not(.jb-visible) {
  opacity: 0;
  transform: translateY(42px);
  filter: blur(6px);
}

.jb-pro-page.jb-motion-ready .jb-stagger:not(.jb-visible) > * {
  opacity: 0;
  transform: translateY(26px);
}

.jb-pro-page .jb-reveal.jb-visible,
.jb-pro-page .jb-fade-up.jb-visible,
.jb-pro-page .jb-fade-in.jb-visible,
.jb-pro-page .jb-scale-in.jb-visible,
.jb-pro-page .jb-stagger.jb-visible > * {
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
}
