/* ==========================================================================
   SCROLL ANIMATIONS (solo frontend)
   ========================================================================== */
/*
[class*="scroll-"] {
  will-change: transform, opacity;
  transition:
    opacity 1.5s cubic-bezier(0.16, 1, 0.3, 1),
    transform 1.5s cubic-bezier(0.16, 1, 0.3, 1),
    filter 1.5s cubic-bezier(0.16, 1, 0.3, 1);
}

/* ── Estados iniciales (ocultos) ── */
/*
.scroll-fade-up    { opacity: 0; transform: translateY(40px); }
.scroll-fade-down  { opacity: 0; transform: translateY(-40px); }
.scroll-fade-left  { opacity: 0; transform: translateX(-40px); }
.scroll-fade-right { opacity: 0; transform: translateX(40px); }
.scroll-zoom-in    { opacity: 0; transform: scale(0.9); }
.scroll-blur-in    { opacity: 0; filter: blur(8px); }

/* ── Estado visible (aplicado por JS) ── */
/*
.scroll-fade-up.is-visible,
.scroll-fade-down.is-visible,
.scroll-fade-left.is-visible,
.scroll-fade-right.is-visible {
  opacity: 1;
  transform: translate(0);
}

.scroll-zoom-in.is-visible {
  opacity: 1;
  transform: scale(1);
}

.scroll-blur-in.is-visible {
  opacity: 1;
  filter: blur(0);
}

/* ── Delays escalonados para grids ── */
/*
.scroll-delay-1 { transition-delay: 0.1s; }
.scroll-delay-2 { transition-delay: 0.2s; }
.scroll-delay-3 { transition-delay: 0.3s; }
.scroll-delay-4 { transition-delay: 0.4s; }
.scroll-delay-5 { transition-delay: 0.5s; }
.scroll-delay-6 { transition-delay: 0.6s; }

/* ── Variantes de velocidad ── */
/*
.scroll-fast  { transition-duration: 0.4s; }
.scroll-slow  { transition-duration: 1.1s; }
*/
/* ── Accesibilidad: respetar preferencia de movimiento reducido ── */
/*
@media (prefers-reduced-motion: reduce) {
  [class*="scroll-"] {
    transition-duration: 0.01ms !important;
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
  }
}
*/
/* animations */
.animate-fade-in-scroll.fade-in, body .fade-in {
  -webkit-transition: opacity .7s ease-in-out,-webkit-transform .7s ease-in-out;
  transition: opacity .7s ease-in-out,-webkit-transform .7s ease-in-out;
  -o-transition: opacity .7s ease-in-out,-o-transform .7s ease-in-out;
  transition: opacity .7s ease-in-out,transform .7s ease-in-out;
  transition: opacity .7s ease-in-out,transform .7s ease-in-out,-webkit-transform .7s ease-in-out,-o-transform .7s ease-in-out;
  opacity: 1;
  -webkit-transform: translateZ(0);
  transform: translateZ(0); }

.animate-fade-in-scroll,
.animate-left-on-scroll1,
.animate-left-on-scroll2,
.animate-left-on-scroll3,
.animate-left-on-scroll4,
.animate-left-on-scroll5,
.animate-left-on-scroll6,
.animate-left-on-scroll7 {
  opacity: 0;
  -webkit-transform: translate3d(0, 40px, 0);
  transform: translate3d(0, 40px, 0); }

.fadeInLeft {
  -webkit-animation-name: fadeInLeft;
  animation-name: fadeInLeft;
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes fadeInLeft {
  0% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0); }
  100% {
    opacity: 1;
    -webkit-transform: none;
    transform: none; } }
@keyframes fadeInLeft {
  0% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0); }
  100% {
    opacity: 1;
    -webkit-transform: none;
    transform: none; } }
.fadeInRight {
  -webkit-animation-name: fadeInRight;
  animation-name: fadeInRight;
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes fadeInRight {
  0% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0); }
  100% {
    opacity: 1;
    -webkit-transform: none;
    transform: none; } }
@keyframes fadeInRight {
  0% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0); }
  100% {
    opacity: 1;
    -webkit-transform: none;
    transform: none; } }

    .animate-column {
      opacity: 0;
      transform: translateY(30px);
      transition: all 0.6s ease; }
    
    .animate-column.fade-in {
      opacity: 1;
      transform: translateY(0); }
    
    /* Animación fade-in general */
    .animate-fade-in-scroll {
      opacity: 0;
      transform: translateY(20px);
      transition: all 0.8s ease; }
    
    .animate-fade-in-scroll.fade-in {
      opacity: 1;
      transform: translateY(0); }
/* */