﻿.animated-checklist {
    /*
    --bs-gray-600: unchecked;
    --bs-black: checked;

*/
    background: var(--bs-white);
    width: 100%;
    position: relative;
    box-shadow: 0 10px 30px rgba(65, 72, 86, 0.05);
    padding: 30px 45px;
    display: grid;
    grid-template-columns: 30px auto;
    align-items: center;
}

    .animated-checklist label {
        color: var(--bs-gray-600);
        position: relative;
        cursor: pointer;
        display: grid;
        align-items: center;
        width: -webkit-fit-content;
        width: -moz-fit-content;
        width: fit-content;
        transition: color 0.3s ease;
    }

        .animated-checklist label::before,
        .animated-checklist label::after {
            content: "";
            position: absolute;
        }

        .animated-checklist label::before {
            height: 2px;
            width: 8px;
            left: -27px;
            background: var(--bs-gray-600);
            border-radius: 2px;
            transition: background 0.3s ease;
        }

        .animated-checklist label::after {
            height: 4px;
            width: 4px;
            top: 8px;
            left: -25px;
            border-radius: 50%;
        }

    .animated-checklist input[type=checkbox] {
        -webkit-appearance: none;
        -moz-appearance: none;
        position: relative;
        height: 15px;
        width: 15px;
        outline: none;
        border: 0;
        margin: 0 15px 0 0;
        cursor: pointer;
        background: var(--bs-white);
        display: grid;
        align-items: center;
    }

        .animated-checklist input[type=checkbox]::before,
        .animated-checklist input[type=checkbox]::after {
            content: "";
            position: absolute;
            height: 2px;
            top: auto;
            background: var(--bs-gray-600);
            border-radius: 2px;
        }

        .animated-checklist input[type=checkbox]::before {
            width: 0px;
            right: 60%;
            transform-origin: right bottom;
        }

        .animated-checklist input[type=checkbox]::after {
            width: 0px;
            left: 40%;
            transform-origin: left bottom;
        }

        .animated-checklist input[type=checkbox]:checked::before {
            -webkit-animation: check-01 0.4s ease forwards;
            animation: check-01 0.4s ease forwards;
        }

        .animated-checklist input[type=checkbox]:checked::after {
            -webkit-animation: check-02 0.4s ease forwards;
            animation: check-02 0.4s ease forwards;
        }

        .animated-checklist input[type=checkbox]:checked + label {
            color: var(--bs-black);
            -webkit-animation: move 0.3s ease 0.1s forwards;
            animation: move 0.3s ease 0.1s forwards;
        }

            .animated-checklist input[type=checkbox]:checked + label::before {
                background: transparent;
                -webkit-animation: slice 0.4s ease forwards;
                animation: slice 0.4s ease forwards;
            }

            .animated-checklist input[type=checkbox]:checked + label::after {
                -webkit-animation: firework 0.5s ease forwards 0.1s;
                animation: firework 0.5s ease forwards 0.1s;
            }

@-webkit-keyframes move {
    50% {
        padding-left: 8px;
        padding-right: 0px;
    }

    100% {
        padding-right: 4px;
    }
}

@keyframes move {
    50% {
        padding-left: 8px;
        padding-right: 0px;
    }

    100% {
        padding-right: 4px;
    }
}

@-webkit-keyframes slice {
    60% {
        width: 100%;
        left: 4px;
    }

    100% {
        width: 100%;
        left: -2px;
        padding-left: 0;
    }
}

@keyframes slice {
    60% {
        width: 100%;
        left: 4px;
    }

    100% {
        width: 100%;
        left: -2px;
        padding-left: 0;
    }
}

@-webkit-keyframes check-01 {
    0% {
        width: 4px;
        top: auto;
        transform: rotate(0);
    }

    50% {
        width: 0px;
        top: auto;
        transform: rotate(0);
    }

    51% {
        width: 0px;
        top: 8px;
        transform: rotate(45deg);
    }

    100% {
        width: 5px;
        top: 8px;
        transform: rotate(45deg);
    }
}

@keyframes check-01 {
    0% {
        width: 4px;
        top: auto;
        transform: rotate(0);
    }

    50% {
        width: 0px;
        top: auto;
        transform: rotate(0);
    }

    51% {
        width: 0px;
        top: 8px;
        transform: rotate(45deg);
    }

    100% {
        width: 5px;
        top: 8px;
        transform: rotate(45deg);
    }
}

@-webkit-keyframes check-02 {
    0% {
        width: 4px;
        top: auto;
        transform: rotate(0);
    }

    50% {
        width: 0px;
        top: auto;
        transform: rotate(0);
    }

    51% {
        width: 0px;
        top: 8px;
        transform: rotate(-45deg);
    }

    100% {
        width: 10px;
        top: 8px;
        transform: rotate(-45deg);
    }
}

@keyframes check-02 {
    0% {
        width: 4px;
        top: auto;
        transform: rotate(0);
    }

    50% {
        width: 0px;
        top: auto;
        transform: rotate(0);
    }

    51% {
        width: 0px;
        top: 8px;
        transform: rotate(-45deg);
    }

    100% {
        width: 10px;
        top: 8px;
        transform: rotate(-45deg);
    }
}

@-webkit-keyframes firework {
    0% {
        opacity: 1;
        box-shadow: 0 0 0 -2px #4F29F0, 0 0 0 -2px #4F29F0, 0 0 0 -2px #4F29F0, 0 0 0 -2px #4F29F0, 0 0 0 -2px #4F29F0, 0 0 0 -2px #4F29F0;
    }

    30% {
        opacity: 1;
    }

    100% {
        opacity: 0;
        box-shadow: 0 -15px 0 0px #4F29F0, 14px -8px 0 0px #4F29F0, 14px 8px 0 0px #4F29F0, 0 15px 0 0px #4F29F0, -14px 8px 0 0px #4F29F0, -14px -8px 0 0px #4F29F0;
    }
}

@keyframes firework {
    0% {
        opacity: 1;
        box-shadow: 0 0 0 -2px #4F29F0, 0 0 0 -2px #4F29F0, 0 0 0 -2px #4F29F0, 0 0 0 -2px #4F29F0, 0 0 0 -2px #4F29F0, 0 0 0 -2px #4F29F0;
    }

    30% {
        opacity: 1;
    }

    100% {
        opacity: 0;
        box-shadow: 0 -15px 0 0px #4F29F0, 14px -8px 0 0px #4F29F0, 14px 8px 0 0px #4F29F0, 0 15px 0 0px #4F29F0, -14px 8px 0 0px #4F29F0, -14px -8px 0 0px #4F29F0;
    }
}