
/* NOVA v14 – CLEAN scroll reveal.
   No Elementor JSON contains scripts or style blocks.
   Content is visible by default, so a JS error can never blank the page. */

.nova-scroll-section,
.nova-scroll-card {
  opacity: 1;
  visibility: visible;
}

.nova-scroll-section.nova-scroll-prepared,
.nova-scroll-card.nova-scroll-prepared {
  opacity: 0;
  transform: translate3d(0, 46px, 0);
  transition:
    opacity .78s cubic-bezier(.22,.61,.36,1),
    transform .78s cubic-bezier(.22,.61,.36,1);
  will-change: opacity, transform;
}

.nova-scroll-section.nova-scroll-prepared.nova-scroll-visible,
.nova-scroll-card.nova-scroll-prepared.nova-scroll-visible {
  opacity: 1;
  transform: translate3d(0,0,0);
}

.nova-delay-1 { transition-delay: .08s !important; }
.nova-delay-2 { transition-delay: .16s !important; }
.nova-delay-3 { transition-delay: .24s !important; }

/* Never allow an old Elementor entrance animation to blank published content. */
body:not(.elementor-editor-active) .elementor-invisible {
  visibility: visible !important;
}

@media (hover:hover) and (pointer:fine) {
  .elementor-widget-button .elementor-button,
  .nova-cta,
  .btn {
    transition:
      transform .25s ease,
      box-shadow .25s ease,
      background-color .25s ease,
      color .25s ease;
  }

  .elementor-widget-button .elementor-button:hover,
  .nova-cta:hover,
  .btn:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 28px rgba(0,0,0,.24);
  }

  .work,
  .service,
  .portfolio-item,
  .project-card,
  .nova-project-card {
    transition:
      transform .32s ease,
      border-color .32s ease,
      box-shadow .32s ease;
  }

  .work:hover,
  .service:hover,
  .portfolio-item:hover,
  .project-card:hover,
  .nova-project-card:hover {
    transform: translateY(-6px);
    border-color: #d7ad4d;
    box-shadow: 0 18px 38px rgba(0,0,0,.22);
  }
}

.elementor-editor-active .nova-scroll-section,
.elementor-editor-active .nova-scroll-card {
  opacity: 1 !important;
  transform: none !important;
  visibility: visible !important;
}

@media (prefers-reduced-motion: reduce) {
  .nova-scroll-section,
  .nova-scroll-card {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}
