/*----------------------------------------*/
/*  2.5 Custom Animation
/*----------------------------------------*/

.tpFadeInUp {
  opacity: 0; /* Start invisible */
  animation: tpFadeInUp 2s ease-out forwards; /* 2 seconds duration, ease-out effect */
}
@keyframes tpFadeInUp {
  0% {
      opacity: 0;
      transform: translateY(30px); /* Start slightly below */
  }
  100% {
      opacity: 1;
      transform: translateY(0); /* End at original position */
  }
}


@keyframes tpslideInUp {
    from {
      transform: translateY(100%);
      opacity: 0;
    }
    to {
      transform: translateY(0);
      opacity: 1;
    }
  }

  .tpfadeInLeft {
    opacity: 0; /* Start invisible */
    animation: tpfadeInLeft 2s ease-out forwards; /* 2 seconds duration, ease-out effect */
  }
  @keyframes tpfadeInLeft {
    0% {
        opacity: 0;
        transform: translateX(-20px); /* Start slightly to the left */
    }
    100% {
        opacity: 1;
        transform: translateX(0); /* End at original position */
    }
}

  .tpSkillInLeft {
    opacity: 0; /* Start invisible */
    animation: tpSkillInLeft 2s ease-out forwards; /* 2 seconds duration, ease-out effect */
  }
  @keyframes tpSkillInLeft {
    0% {
        opacity: 0;
        transform: translateX(-300px); /* Start slightly to the left */
    }
    100% {
        opacity: 1;
        transform: translateX(0); /* End at original position */
    }
}



  .slideinup{
    -webkit-animation-name:slideinup;
    animation-name:slideinup
}
@keyframes slideinup {
    0% {
      opacity: 0;
      transform: translateY(70px);
    }
    100% {
      transform: translateY(0);
    }
  }
  @keyframes slideinright {
    0% {
      opacity: 0;
      transform: translateX(70px);
    }
    100% {
      transform: translateX(0);
    }
  }
  @keyframes slideindown {
    0% {
      opacity: 0;
      transform: translateY(-70px);
    }
    100% {
      transform: translateY(0);
    }
  }

.slideinleft{
    -webkit-animation-name:slideinleft;
    animation-name:slideinleft
}
  @keyframes slideinleft {
    0% {
      opacity: 0;
      transform: translateX(-70px);
    }
    100% {
      transform: translateX(0);
    }
  }
  @keyframes slidebottomright {
    0% {
      opacity: 0;
      transform: translateX(100px) translateY(100px);
    }
    100% {
      transform: translateX(0) translateY(0);
    }
  }
  @keyframes slidetopleft {
    0% {
      opacity: 0;
      transform: translateX(-100px) translateY(-100px);
    }
    100% {
      transform: translateX(0) translateY(0);
    }
  }
  @keyframes rotate {
    from {
      transform: rotate(0deg);
    }
    to {
      transform: rotate(360deg);
    }
    0% {
      border-right-color: transparent;
      border-bottom-color: transparent;
      border-top-color: transparent;
      border-left-color: transparent;
    }
    75% {
      border-top-color: #fff;
      border-left-color: #fff;
      border-right-color: #fff;
      border-bottom-color: transparent;
    }
    100% {
      border-right-color: transparent;
      border-bottom-color: transparent;
      border-top-color: transparent;
      border-left-color: transparent;
    }
  }
  /*img-animation**********************/
  .img-custom-anim-right {
    animation: img-anim-right 1.3s forwards cubic-bezier(0.645, 0.045, 0.355, 1) 0.4s;
    opacity: 0;
  }
  
  @keyframes img-anim-right {
    0% {
      transform: translateX(5%);
      clip-path: inset(0 0 0 100%);
      opacity: 0;
    }
    100% {
      transform: translateX(0);
      clip-path: inset(0 0 0 0);
      opacity: 1;
    }
  }
  .img-custom-anim-left {
    animation: img-anim-left 1.3s forwards cubic-bezier(0.645, 0.045, 0.355, 1) 0.4s;
    opacity: 0;
  }
  
  @keyframes img-anim-left {
    0% {
      transform: translateX(-5%);
      clip-path: inset(0 100% 0 0);
      opacity: 0;
    }
    100% {
      transform: translateX(0);
      clip-path: inset(0 0 0 0);
      opacity: 1;
    }
  }
  .img-custom-anim-top {
    animation: img-anim-top 1.3s forwards cubic-bezier(0.645, 0.045, 0.355, 1);
    opacity: 0;
  }
  
  @keyframes img-anim-top {
    0% {
      transform: translateY(-5%);
      clip-path: inset(0 0 100% 0);
      opacity: 0;
    }
    100% {
      transform: translateY(0);
      clip-path: inset(0 0 0 0);
      opacity: 1;
    }
  }