/* js animation */
.js-fade-01,
.js-fade-02,
.js-fade-03 {
 opacity: 0;
 transform: translateY(20px);
 transition: opacity 0.5s ease-in-out, transform 0.5s ease-in-out;
}
.js-fade-01.show,
.js-fade-02.show,
.js-fade-03.show {
 opacity: 1 !important;
 transform: translateY(0);
 z-index: 2;
}

span.js-char {
 display: inline-block;
 opacity: 0;
 transform: scale(0.8);
}

span.js-char.active {
 animation: popIn 0.5s ease forwards;
}

@keyframes popIn {
 0% {
  opacity: 0;
  transform: scale(0.8);
 }
 50% {
  opacity: 1;
  transform: scale(1.2);
 }
 100% {
  opacity: 1;
  transform: scale(1);
 }
}

.js-up {
 opacity: 0;
 transform: translateY(30px);
 transition: 0.8s ease-in-out;
}
.js-up.on {
 opacity: 1;
 transform: translateY(0);
}

.js-down {
 opacity: 0;
 transform: translateY(-30px);
 transition: 0.8s ease-in-out;
}
.js-down.on {
 opacity: 1;
 transform: translateY(0);
}

.js-left {
 filter: alpha(opacity=0);
 opacity: 0;
 transform: translateX(-30px);
 transition: 0.8s ease-in-out;
}
.js-left.on {
 filter: alpha(opacity=100);
 opacity: 1;
 transform: translateX(0);
}

.js-right {
 filter: alpha(opacity=0);
 opacity: 0;
 transform: translateX(30px);
 transition: 0.8s ease-in-out;
}
.js-right.on {
 filter: alpha(opacity=100);
 opacity: 1;
 transform: translateX(0);
}

.puff-in-center,
.scale-up-center,
.scale-in-center {
 opacity: 0;
}

.puff-in-center.on {
 -webkit-animation: puff-in-center 0.9s cubic-bezier(0.47, 0, 0.745, 0.715) both;
 animation: puff-in-center 0.9s cubic-bezier(0.47, 0, 0.745, 0.715) both;
}
/**
 * ----------------------------------------
 * animation puff-in-center
 * ----------------------------------------
 */
@-webkit-keyframes puff-in-center {
 0% {
  -webkit-filter: blur(4px);
  -webkit-transform: scale(2);
  filter: blur(4px);
  opacity: 0;
  transform: scale(2);
 }
 100% {
  -webkit-filter: blur(0px);
  -webkit-transform: scale(1);
  filter: blur(0px);
  opacity: 1;
  transform: scale(1);
 }
}
@keyframes puff-in-center {
 0% {
  -webkit-filter: blur(4px);
  -webkit-transform: scale(2);
  filter: blur(4px);
  opacity: 0;
  transform: scale(2);
 }
 100% {
  -webkit-filter: blur(0px);
  -webkit-transform: scale(1);
  filter: blur(0px);
  opacity: 1;
  transform: scale(1);
 }
}

.scale-up-center.on {
 -webkit-animation: scale-up-center 0.8s cubic-bezier(0.39, 0.575, 0.565, 1) both;
 animation: scale-up-center 0.8s cubic-bezier(0.39, 0.575, 0.565, 1) both;
 opacity: 1;
}

/* ----------------------------------------------
 * Generated by Animista on 2025-7-18 16:31:21
 * Licensed under FreeBSD License.
 * See http://animista.net/license for more info.
 * w: http://animista.net, t: @cssanimista
 * ---------------------------------------------- */

/**
 * ----------------------------------------
 * animation scale-up-center
 * ----------------------------------------
 */
@-webkit-keyframes scale-up-center {
 0% {
  -webkit-transform: scale(0.5);
  transform: scale(0.5);
 }
 100% {
  -webkit-transform: scale(1);
  transform: scale(1);
 }
}
@keyframes scale-up-center {
 0% {
  -webkit-transform: scale(0.5);
  transform: scale(0.5);
 }
 100% {
  -webkit-transform: scale(1);
  transform: scale(1);
 }
}

.scale-in-center {
 -webkit-animation: scale-in-center 1.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
 animation: scale-in-center 1.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}
/* ----------------------------------------------
 * Generated by Animista on 2025-7-18 16:56:24
 * Licensed under FreeBSD License.
 * See http://animista.net/license for more info.
 * w: http://animista.net, t: @cssanimista
 * ---------------------------------------------- */

/**
 * ----------------------------------------
 * animation scale-in-center
 * ----------------------------------------
 */
@-webkit-keyframes scale-in-center {
 0% {
  opacity: 1;
  transform: scale(0);
  -webkit-transform: scale(0);
 }
 100% {
  opacity: 1;
  transform: scale(1);
  -webkit-transform: scale(1);
 }
}
@keyframes scale-in-center {
 0% {
  opacity: 1;
  transform: scale(0);
  -webkit-transform: scale(0);
 }
 100% {
  opacity: 1;
  transform: scale(1);
  -webkit-transform: scale(1);
 }
}