@keyframes backgroundSweep {
    0% {
        left: -100%;
    }

    100% {
        left: 100%;
    }
}

.ct-judgment {
    position: relative;
    overflow: hidden;
    min-height:90px;
}




.start-animation::after {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.8) 50%, rgba(255, 255, 255, 0) 100%);
    animation: backgroundSweep 0.7s forwards;
    z-index: 1;
}

/*.start-animation::after {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 200%;
    height: 100%;
    background: linear-gradient(to right, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0));
    animation: backgroundSweep 1s forwards;
}
*/
/*.start-animation {
    animation: backgroundSweep 1s forwards;
}
*/


@keyframes flash {
    0%, 100% {
        background-color: transparent;
    }

    25%, 75% {
        background-color: #d1aa6759;
    }
    /* 연한 붉은색 */
}

.flash-row {
    animation: flash 0.3s ease-in-out 4;
}



@keyframes flashadd {
    0%, 100% {
        background-color: transparent;
    }

    25%, 75% {
        background-color: #67d17759;
    }
    /* 연한 붉은색 */
}


.flash-add-row {
    animation: flashadd 0.3s ease-in-out 4;
}


/* 1. 부모 요소 설정 */
/*.effect-shine {
    position: relative;
    overflow: hidden !important;
}*/

    /* 2. 빛의 역할을 할 가상 레이어 */
    /*.effect-shine::after {
        content: "";
        position: absolute;
        top: 0;
        left: -150%;*/ /* 왼쪽 밖에 숨겨둠 */
        /*width: 100%;
        height: 100%;
        background: linear-gradient( 90deg, rgba(255, 0, 0, 0) 0%,*/ /* 시작은 투명하게 */
        /*rgba(255, 0, 0, 0.4) 50%,*/ /* 중간은 선명한 빨강 */
        /*rgba(255, 0, 0, 0) 100%*/ /* 끝은 다시 투명하게 */
        /*);
        transform: skewX(-25deg);*/ /* 약간 사선으로 꺾어야 예쁨 */
        /*pointer-events: none;*/ /* 클릭 방해 금지 */
    /*}*/

/* 3. 애니메이션 실행 클래스 */
/*.shine-active::after {
    animation: shine-anim 1s ease-out;
}

@keyframes shine-anim {
    0% {
        left: -150%;
    }

    100% {
        left: 150%;
    }
}*/

.effect-shine {
    position: relative;
    overflow: hidden !important; /* 선이 박스 밖으로 새 나가지 않게 차단 */
}

/* 2. 500ms(0.5초) 정밀 스캔 애니메이션 */
.shine-active {
    background-image: linear-gradient(90deg, transparent 0%, transparent 49.8%, /* 1px 선을 위해 범위를 극도로 좁힘 */
    rgb(236, 92, 92) 50%, transparent 50.2%, /* 0.4% 구간만 색상을 가짐 */
    transparent 100% ), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M0 96h32v320H0V96zm64 0h64v320H64V96zm96 0h32v320h-32V96zm64 0h32v320h-32V96zm64 0h64v320h-64V96zm96 0h32v320h-32V96zm64 0h32v320h-32V96zm64 0h32v320h-32V96z'/%3E%3C/svg%3E") !important;
    /* 배경 사이즈: 빨간선이 너무 넓게 잡히지 않도록 150% 정도로 조정 */
    background-size: 200% 100%, 16px 16px !important;
    background-repeat: no-repeat !important;
    /* 1초(1000ms) 동안 아주 부드럽게 이동 */
    animation: barcode-red-scan 0.3s linear forwards;
}

@keyframes barcode-red-scan {
    0% {
        /* 이동 거리를 너무 크게 잡으면 끊겨 보이므로 적정 수준으로 조정 */
        background-position: 100% 0, 10px center;
    }

    100% {
        background-position: 0% 0, 10px center;
    }
}