/* Static-mirror fixes.
   Elementor plays entrance animations via scroll waypoints that never fire in a
   static copy, leaving sections stuck at opacity:0. Force the *final* state so
   the page matches what the live site shows once animated in. */
.elementor-invisible,
.elementor-element.elementor-invisible,
.elementor-widget.elementor-invisible{
  opacity:1 !important;
  visibility:visible !important;
  animation:none !important;
}
[class*="animated"]{animation:none !important;opacity:1 !important}
/* lazy-loaded backgrounds occasionally keep their placeholder state */
.elementor-motion-effects-element,
.elementor-widget-container{opacity:1 !important}

/* The theme also ships `.text-effectN` reveal classes that start at opacity:0
   and depend on theme JS that never runs in a static copy — same failure as
   .elementor-invisible above, different class name. Seen on /articles/ where
   13 widgets stayed permanently invisible. Force the resolved state. */
[class*="text-effect"]{
  opacity:1 !important;
  visibility:visible !important;
  animation:none !important;
  transform:none !important;
}
