@keyframes marqueeX {
    from {
        transform: translateX(0);
    }

    to {
        transform: translateX(-100%);
    }
}

@keyframes marqueeX_r {
    from {
        transform: translateX(0);
    }

    to {
        transform: translateX(100%);
    }
}

.image_sd_wrap {
    overflow: hidden;
}

.image_sd .absol {
    left: 100%;
}

.image_sd_r .absol {
    right: 100%;
}

.image_sd {
    animation: marqueeX 20s infinite linear;
}

.image_sd_r {
    animation: marqueeX_r 20s infinite linear;
}

/* 연기 모션 (연기 이미지 공통) */
@keyframes smoke {
    0% {
        transform: translate(0, 10%);
        opacity: 0;
    }

    25% {
        opacity: 0.8;
    }

    50% {
        opacity: 1;
    }

    75% {
        opacity: 0.8;
    }

    100% {
        opacity: 0;
    }
}

.smoke {
    animation: smoke infinite 5s ease-in-out;
}

/* 노드 scope — 흰점에서 퍼지는 초록원 (con05_07a 대체) */
@keyframes scale_opa {
    0% {
        transform: scale(0.5);
        opacity: 0;
    }

    20% {
        opacity: 1;
    }
    80% {
        opacity: 1;
    }

    100% {
        transform: scale(1);
        opacity: 0;
    }
}

.scop {
    animation: scale_opa infinite 2s;
}

/* 전골 회전 (con02 된장/수육 접시 · 같은방향 동시) */
@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

/* 매출숫자 그라데이션 shine (con03 .con03_num)
   — 좌우대칭 그라데이션 + alternate 왕복으로 툭 끊김 없이 부드럽게 (con03_05 색은 참고만) */
@keyframes shy_sweep {
    0% {
        background-position: 200% 0;
    }

    100% {
        background-position: -200% 0;
    }
}

.txt_shy {
    background: linear-gradient(80deg,
            #0c6048 0%,
            #17805f 30%,
            #5fd6ab 50%,
            #17805f 70%,
            #0c6048 100%);
    background-size: 200% auto;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
    animation: shy_sweep 3s infinite alternate linear;
}

/* con10 "완성" — "1분"(txt_shy)과 sweep 타이밍을 반주기 어긋내 복붙 느낌 제거 (색·클립은 txt_shy 상속) */
.txt_shy2 {
    animation-delay: -1.5s;
}

/* 금색 텍스트 shine (con08 .con08_point) — txt_shy 금색 버전, shy_sweep 재사용 */
.txt_gold {
    background: linear-gradient(80deg,
            #a8873a 0%,
            #d4c07d 30%,
            #f7edc4 50%,
            #d4c07d 70%,
            #a8873a 100%);
    background-size: 200% auto;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
    animation: shy_sweep 3s infinite alternate linear;
}

/* con07 박스 초록 글로우 — 커지며 진해졌다 작아지며 연해짐 (부드럽게) */
@keyframes box_sdw {
    0%,
    100% {
        box-shadow: 0 0 calc(var(--px) * 28) calc(var(--px) * 2) rgba(16, 161, 118, 0.22);
    }

    50% {
        box-shadow: 0 0 calc(var(--px) * 66) calc(var(--px) * 12) rgba(16, 161, 118, 0.5);
    }
}

/* con17 원형 뱃지 뒤 확산 펄스 (con17_pulse) — 원 크기에서 바깥으로 번지며 사라지는 금색 halo.
   scale_opa(con05 노드용)와 달리 1→1.4 확산형이라 신규 추가 */
@keyframes scale_opa2 {
    0% {
        transform: scale(1);
        opacity: 0;
    }

    30% {
        opacity: 0.5;
    }

    100% {
        transform: scale(1.2);
        opacity: 0;
    }
}

.scop2 {
    animation: scale_opa2 2.6s infinite ease-out;
}