:root {
    --bg: hsl(223deg, 10%, 90%);
    --trans-dur: 0.3s;
}


.tvdd {
    overflow: hidden;
    position: relative;
    width: 16em;
    height: 16em;
}
.tvdd__ring {
    top: 0;
    left: 18.75%;
    width: 62.5%;
    height: 62.5%;
    transform-origin: 50% 80%;
}
.tvdd__ring, .tvdd__ring-dot {
    position: absolute;
}
.tvdd__ring-dots {
    animation: pivot 1s linear infinite;
    width: 100%;
    height: 100%;
}
.tvdd__ring-dot {
    animation: pulse 1s ease-in-out infinite;
    background-color: hsl(193deg, 90%, 55%);
    border-radius: 50%;
    margin: -5% 0 0 -5%;
    width: 10%;
    height: 10%;
}
.tvdd__ring-dot:nth-child(1) {
    top: 38.3531429704%;
    left: 6.533337817%;
}
.tvdd__ring-dot:nth-child(2) {
    animation-delay: -0.0833333333s;
    top: 61.6468570296%;
    left: 6.533337817%;
}
.tvdd__ring-dot:nth-child(3) {
    animation-delay: -0.1666666667s;
    top: 81.8198051534%;
    left: 18.1801948466%;
}
.tvdd__ring-dot:nth-child(4) {
    animation-delay: -0.25s;
    top: 93.466662183%;
    left: 38.3531429704%;
}
.tvdd__ring-dot:nth-child(5) {
    animation-delay: -0.3333333333s;
    top: 93.466662183%;
    left: 61.6468570296%;
}
.tvdd__ring-dot:nth-child(6) {
    animation-delay: -0.4166666667s;
    top: 81.8198051534%;
    left: 81.8198051534%;
}
.tvdd__ring-dot:nth-child(7) {
    animation-delay: -0.5s;
    top: 61.6468570296%;
    left: 93.466662183%;
}
.tvdd__ring-dot:nth-child(8) {
    animation-delay: -0.5833333333s;
    top: 38.3531429704%;
    left: 93.466662183%;
}
.tvdd__ring-dot:nth-child(9) {
    animation-delay: -0.6666666667s;
    top: 18.1801948466%;
    left: 81.8198051534%;
}
.tvdd__ring-dot:nth-child(10) {
    animation-delay: -0.75s;
    top: 6.533337817%;
    left: 61.6468570296%;
}
.tvdd__ring-dot:nth-child(11) {
    animation-delay: -0.8333333333s;
    top: 6.533337817%;
    left: 38.3531429704%;
}
.tvdd__ring-dot:nth-child(12) {
    animation-delay: -0.9166666667s;
    top: 18.1801948466%;
    left: 18.1801948466%;
}
.tvdd__ring:nth-child(2) {
    transform: rotate(120deg);
}
.tvdd__ring:nth-child(2) .tvdd__ring-dot {
    background-color: hsl(223deg, 90%, 55%);
}
.tvdd__ring:nth-child(3) {
    transform: rotate(240deg);
}
.tvdd__ring:nth-child(3) .tvdd__ring-dot {
    background-color: hsl(253deg, 90%, 55%);
}

/* Dark theme */
@media (prefers-color-scheme: dark) {
    :root {
        --bg: hsl(223deg, 10%, 10%);
    }
}
/* Animations */
@keyframes pivot {
    from {
        transform: rotate(0);
    }
    to {
        transform: rotate(30deg);
    }
}
@keyframes pulse {
    from, to {
        transform: scale(0.1);
    }
    50% {
        transform: scale(1);
    }
}