/* ----------------------메인 모션 ---------------------------------------- */
@keyframes float-y {
    0%   { transform: translateY(0); }
    50%  { transform: translateY(-12px); }
    100% { transform: translateY(0); }
}
.float_y {animation: float-y 2.6s ease-in-out infinite;}
.float_y.fade_in_main {
    animation: float-y 2.6s ease-in-out infinite,
                fadeIn 1s ease-out forwards;
}


@keyframes float-y-offset {
    0%   { transform: translateY(-12px); }
    50%  { transform: translateY(0); }
    100% { transform: translateY(-12px); }
}
.float_y_off  { animation: float-y-offset 2.6s ease-in-out infinite; }
.float_y_off.fade_in_main {
    animation: float-y-offset 2.6s ease-in-out infinite,
                fadeIn 1s ease-out forwards;
}



@keyframes double-click-bounce {
    0%   { transform: scale(1); }
    3%   { transform: scale(1); }
    6%   { transform: scale(0.95); }
    9%   { transform: scale(1); }   /* 첫 번째 클릭 */
    12%  { transform: scale(1); }
    15%  { transform: scale(0.95); }
    18%  { transform: scale(1); }   /* 두 번째 클릭 */
    100% { transform: scale(1); } 
}
.double-click-bounce {
    animation: double-click-bounce 2.6s ease-in-out infinite;
}
.double-click-bounce.fade_in_main {
    animation: double-click-bounce 2.6s ease-in-out infinite,
                fadeIn 1s ease-out forwards;
}




.fade_in_main {opacity: 0; animation: fadeIn 1s ease-out forwards;}
.fade_in_main.show {animation: fadeIn 1s ease-out forwards;}
@keyframes fadeIn {
    to {opacity: 1;}
}




/* ---------------------------------스크롤 모션 ------------------------------ */
.fade_up {opacity: 0; transform: translateY(30px);}
.fade_up.show {animation: fadeUp 1s cubic-bezier(0.2, 0.8, 0.2, 1.2) forwards;}
@keyframes fadeUp {
    0% {opacity: 0; transform: translateY(30px);}
    100% {opacity: 1; transform: translateY(0);}
}


.fade_down {opacity: 0; transform: translateY(-30px);}
.fade_down.show {animation: fadeDown 1s cubic-bezier(0.2, 0.8, 0.2, 1.2) forwards;}
@keyframes fadeDown {
    0% {opacity: 0; transform: translateY(-30px);}
    100% {opacity: 1; transform: translateY(0);}
}


.slide_down {  opacity: 0; transform: translateY(-140px);}
.slide_down.show { animation: slideDown 0.5s ease-out forwards;}
@keyframes slideDown {
    to {opacity: 1;transform: translateY(0);}
}

.fade_in {opacity: 0;}
.fade_in.show {animation: fadeIn 1s ease-out forwards;}
@keyframes fadeIn {
    to {opacity: 1;}
}

.pop_in { opacity: 0;transform: scale(0.5);}
.pop_in.show {animation: popIn 0.6s ease-out forwards;}
@keyframes popIn {
    80% {opacity: 1;transform: scale(1.05);}
    100% {opacity: 1; transform: scale(1);}
}


/* 좌에서 우로 */
@keyframes ltr-in {
    from { transform: translateX(-40px); opacity: 0; filter: blur(2px); }
    to   { transform: translateX(0);      opacity: 1; filter: blur(0); }
}
.ltr_in {
    transform: translateX(-40px); opacity: 0; filter: blur(2px); 
}
.ltr_in.show {
    animation: ltr-in .8s cubic-bezier(.22,.61,.36,1) both;
}



/* 우에서 좌로 */
@keyframes rtr-in-reverse {
    from { transform: translateX(40px); opacity: 0; filter: blur(2px); }
    to   { transform: translateX(0);      opacity: 1; filter: blur(0); }
}
.rtr_in {
    transform: translateX(40px); opacity: 0; filter: blur(2px); 
}
.rtr_in.show {
    animation: rtr-in-reverse .8s cubic-bezier(.22,.61,.36,1) both;
}

