/* From Uiverse.io by JkHuger */
.wrapper {
    display: flex;
    align-items: center;
    transform: scale(var(--switch-scale, 1));
    transform-origin: left center;
    margin-right: calc(-130px * (1 - var(--switch-scale, 1)));
}

.switch {
    position: relative;
    width: 130px;
    height: 50px;
    margin: 0px;
    appearance: none;
    -webkit-appearance: none;
    background-color: rgb(4, 52, 73);
    background-size: cover;
    background-repeat: no-repeat;
    border-radius: 25px;
    transition: background-image .7s ease-in-out;
    outline: none;
    cursor: pointer;
    overflow: hidden;
}

.switch:checked {
    background-color: rgb(0, 195, 255);
    background-size: cover;
    transition: background-image 1s ease-in-out;
}

.switch:after {
    content: '';
    width: 46px;
    height: 46px;
    border-radius: 50%;
    background-color: #fff;
    position: absolute;
    left: 2px;
    top: 2px;
    transform: translateX(0px);
    animation: off .7s forwards cubic-bezier(.8, .5, .2, 1.4);
    box-shadow: inset 5px -5px 4px rgba(53, 53, 53, 0.3);
}

@keyframes off {
    0% {
        transform: translateX(80px);
        width: 46px;
    }
    50% {
        width: 75px;
        border-radius: 25px;
    }
    100% {
        transform: translateX(0px);
        width: 46px;
    }
}

.switch:checked:after {
    animation: on .7s forwards cubic-bezier(.8, .5, .2, 1.4);
    box-shadow: inset -5px -5px 4px rgba(53, 53, 53, 0.3);
}

@keyframes on {
    0% {
        transform: translateX(0px);
        width: 46px;
    }
    50% {
        width: 75px;
        border-radius: 25px;
    }
    100% {
        transform: translateX(80px);
        width: 46px;
    }
}

.switch:checked:before {
    content: '';
    width: 15px;
    height: 15px;
    border-radius: 50%;
    position: absolute;
    left: 15px;
    top: 5px;
    transform-origin: 53px 10px;
    background-color: transparent;
    box-shadow: 5px -1px 0px #fff;
    filter: blur(0px);
    animation: sun .7s forwards ease;
}

@keyframes sun {
    0% {
        transform: rotate(170deg);
        background-color: transparent;
        box-shadow: 5px -1px 0px #fff;
        filter: blur(0px);
    }
    50% {
        background-color: transparent;
        box-shadow: 5px -1px 0px #fff;
        filter: blur(0px);
    }
    90% {
        background-color: #f5daaa;
        box-shadow: 0px 0px 10px #f5deb4,
            0px 0px 20px #f5deb4,
            0px 0px 30px #f5deb4,
            inset 0px 0px 2px #efd3a3;
        filter: blur(1px);
    }
    100% {
        transform: rotate(0deg);
        background-color: #f5daaa;
        box-shadow: 0px 0px 10px #f5deb4,
            0px 0px 20px #f5deb4,
            0px 0px 30px #f5deb4,
            inset 0px 0px 2px #efd3a3;
        filter: blur(1px);
    }
}

.switch:before {
    content: '';
    width: 15px;
    height: 15px;
    border-radius: 50%;
    position: absolute;
    left: 15px;
    top: 5px;
    filter: blur(1px);
    background-color: #f5daaa;
    box-shadow: 0px 0px 10px #f5deb4,
        0px 0px 20px #f5deb4,
        0px 0px 30px #f5deb4,
        inset 0px 0px 2px #efd3a3;
    transform-origin: 53px 10px;
    animation: moon .7s forwards ease;
}

@keyframes moon {
    0% {
        transform: rotate(0deg);
        filter: blur(1px);
    }
    50% {
        filter: blur(1px);
    }
    90% {
        background-color: transparent;
        box-shadow: 5px -1px 0px #fff;
        filter: blur(0px);
    }
    100% {
        transform: rotate(170deg);
        background-color: transparent;
        box-shadow: 5px -1px 0px #fff;
        filter: blur(0px);
    }
}

/* 平板端 */
@media (max-width: 1024px) {
    .wrapper { --switch-scale: 0.85; }
}

/* 手机端 */
@media (max-width: 768px) {
    .wrapper { --switch-scale: 0.65; }
}

/* ================= From Uiverse.io by dexter-st: 加载动画还原 ================= */
/* 覆写 common.css 的自定义，恢复 Uiverse 原版效果 */
.theme-loader-overlay .loader-wrapper {
    scale: 2;
    margin: 2rem;
    padding: 0;
    font-family: "Poppins", sans-serif;
    opacity: 1;
    transform: none;
    transition: none;
}

.theme-loader-overlay.active .loader-wrapper {
    scale: 2;
    transform: none;
}

.theme-loader-overlay .loader-letter {
    animation-name: loader-letter-anim;
}

.theme-loader-overlay .loader:after {
    animation-name: transform-animation, opacity-animation;
}

/* Uiverse 原版 keyframes */
@keyframes loader-letter-anim {
    0% { opacity: 0; }
    5% {
        opacity: 1;
        text-shadow: 0 0 4px #fff;
        transform: scale(1.1) translateY(-2px);
    }
    20% { opacity: 0.2; }
    100% { opacity: 0; }
}

@keyframes transform-animation {
    0% { transform: translate(-55%); }
    100% { transform: translate(55%); }
}

@keyframes opacity-animation {
    0%, 100% { opacity: 0; }
    15% { opacity: 1; }
    65% { opacity: 0; }
}
