* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    -webkit-tap-highlight-color: transparent;
}

@keyframes circleIn {
    0% {
        transform: scale(0);
        opacity: 0;
    }
    70% {
        transform: scale(1.1);
        opacity: 1;
    }
    100% {
        transform: scale(1);
        opacity: 1;
    }
}

@keyframes drawCheck {
    0% {
        stroke-dashoffset: 45;
    }
    100% {
        stroke-dashoffset: 0;
    }
}

@keyframes drawX {
    0% {
        stroke-dashoffset: 40;
    }
    100% {
        stroke-dashoffset: 0;
    }
}

@keyframes modalFadeIn {
    0% {
        transform: scale(0.9);
        opacity: 0;
    }
    100% {
        transform: scale(1);
        opacity: 1;
    }
}

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

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.custom-modal, .progress-modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    justify-content: center;
    align-items: center;
    z-index: 2000;
    padding: 20px;
}

.alert-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto;
}

.alert-icon .circle,
.alert-icon .circle-error {
    transform-origin: center;
    animation: circleIn 0.4s ease-out forwards;
}

.alert-icon .check {
    animation: drawCheck 0.5s linear forwards;
    animation-delay: 0.35s;
}

.alert-icon .x-line {
    animation: drawX 0.4s linear forwards;
}
