<div class="container">
    <div class="title">Do you want my cookies?</div>
    <div class="switch">
        <label for="toggle">
            <div class="background"></div>
            <input id="toggle" class="toggle-switch" type="checkbox" checked />
            <div class="cookie">
                <span class="cookie-part-1"></span>
                <span class="cookie-part-2"></span>
                <span class="cookie-part-3"></span>
                <span class="cookie-part-4"></span>
                <span class="chocolate-chips-1a"></span>
                <span class="chocolate-chips-1b"></span>
                <span class="chocolate-chips-1c"></span>
                <span class="chocolate-chips-1d"></span>
                <span class="chocolate-chips-2a"></span>
                <span class="chocolate-chips-2b"></span>
                <span class="chocolate-chips-2c"></span>
                <span class="chocolate-chips-2d"></span>
                <span class="chocolate-chips-2e"></span>
                <span class="chocolate-chips-3a"></span>
                <span class="chocolate-chips-3b"></span>
                <span class="chocolate-chips-3c"></span>
                <span class="chocolate-chips-4a"></span>
                <span class="chocolate-chips-4b"></span>
                <span class="chocolate-chips-4c"></span>
            </div>
        </label>
    </div>
</div>
@import url('https://fonts.googleapis.com/css2?family=Cookie&display=swap');

* {
    box-sizing: border-box;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
}

*:focus {
    outline: none;
}

html, body {
    height: 100%;
    margin: 0;
    padding: 0;
}

.container {
    height: 100%;
    background: #f4f4f4;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}

.title {
    height: 25%;
    font-family: Cookie;
    font-size: 48pt;
    text-align: center;
}

.switch {
    --cookie-size: 6em;
    --outer-border: 0.5em;
    --inner-border: 1.0em;
    --border-color: #d8a04d;
    --height: calc(var(--cookie-size) + (2 * (var(--outer-border) + var(--inner-border))));
    --width: calc(var(--height) * 2);
    
    position: relative;
    width: var(--width);
    height: var(--height);
}

.switch input {
    display: none;
}

.switch label {
    cursor: pointer;
}

.switch input:checked ~ .cookie {
    transform: translateX(calc(var(--width) / 2)) rotate(360deg);
    color: #d8a04d;
    background-color: currentColor;
}

.switch input:checked ~ .cookie span[class^="cookie-part-"],
.switch input:checked ~ .cookie span[class^="chocolate-chips-"] {
    transform: translate(0px, 0px);
}

.background {
    height: 100%;
    border-radius: calc(var(--width) / 4);
    border: var(--outer-border) solid var(--border-color);
    background: linear-gradient(to right, #484848 0%,#202020 100%);
}

.cookie {
    --chip-size: calc(var(--cookie-size) / 8);
    --split-offset: calc(var(--cookie-size) / 24);

    position: absolute;
    top: calc(var(--outer-border) + var(--inner-border));
    left: calc(var(--outer-border) + var(--inner-border));;
    width: var(--cookie-size);
    height: var(--cookie-size);
    border-radius: 50%;
    transition: transform 1s linear;
}

.cookie span[class^="cookie-part-"] {
    position: absolute;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    color: #d8a04d;
    background-color: currentColor;
}

.cookie-part-1 {
    clip-path: polygon(0% 0%, 55% 0%, 52% 8%, 55% 10%, 55% 16%, 52% 19%, 52% 24%, 47% 26%, 45% 30%, 50% 33%, 47% 37%, 47% 42%, 51% 47%, 47% 49%, 40% 50%, 34% 50%, 30% 53%, 25% 53%, 20% 56%, 16% 56%, 14% 61%, 0% 60%);
    transform: translate(calc(var(--split-offset) * -1), calc(var(--split-offset) * -1));
}

.cookie-part-2 {
    clip-path: polygon(55% 0%, 100% 0%, 100% 72%, 88% 68%, 84% 61%, 78% 60%, 77% 56%, 75% 53%, 71% 55%, 66% 50%, 63% 47%, 58% 49%, 56% 44%, 51% 47%, 47% 42%, 47% 37%, 50% 33%, 45% 30%, 47% 26%, 52% 24%, 52% 19%, 55% 16%, 55% 10%, 52% 8%);
    transform: translate(calc(var(--split-offset) * 1), calc(var(--split-offset) * -1));
}

.cookie-part-3 {
    clip-path: polygon(0% 60%, 14% 61%, 16% 56%, 20% 56%, 25% 53%, 30% 53%, 34% 50%, 40% 50%, 47% 49%, 51% 47%, 55% 53%, 60% 56%, 56% 62%, 53% 67%, 57% 72%, 57% 81%, 57% 87%, 63% 92%, 60% 100%, 0% 100%);
    transform: translate(calc(var(--split-offset) * -1), calc(var(--split-offset) * 1));
}

.cookie-part-4 {
    clip-path: polygon(100% 100%, 100% 72%, 88% 68%, 84% 61%, 78% 60%, 77% 56%, 75% 53%, 71% 55%, 66% 50%, 63% 47%, 58% 49%, 56% 44%, 51% 47%, 55% 53%, 60% 56%, 56% 62%, 53% 67%, 57% 72%, 57% 81%, 57% 87%, 63% 92%, 60% 100%);
    transform: translate(calc(var(--split-offset) * 1), calc(var(--split-offset) * 1));
}

.cookie span[class^="chocolate-chips-"] {
    position: absolute;
    color: #754e27;
    background-color: #865729;
    height: var(--chip-size);
    width: var(--chip-size);
    border-radius: 50%;
    box-shadow: inset -0.35em 0;
}

.cookie .chocolate-chips-1a {
    top: 41%;
    left: 5%;
}

.cookie .chocolate-chips-1b {
    top: 20%;
    left: 18%;
}

.cookie .chocolate-chips-1c {
    top: 35%;
    left: 33%;
}

.cookie .chocolate-chips-1d {
    top: 6%;
    left: 39%;
}

.cookie .chocolate-chips-2a {
    --chip-size: calc(var(--cookie-size) / 10);
    top: 24%;
    right: 35%;
}

.cookie .chocolate-chips-2b {
    top: 36%;
    right: 23%;
}

.cookie .chocolate-chips-2c {
    top: 7%;
    right: 29%;
}

.cookie .chocolate-chips-2d {
    top: 42%;
    right: 7%;
}

.cookie .chocolate-chips-2e {
    top: 19%;
    right: 12%;
}

.cookie .chocolate-chips-3a {
    --chip-size: calc(var(--cookie-size) / 6);
    bottom: 24%;
    left: 18%;
}

.cookie .chocolate-chips-3b {
    bottom: 34%;
    left: 42%;
}

.cookie .chocolate-chips-3c {
    bottom: 9%;
    left: 39%;
}

.cookie .chocolate-chips-4a {
    bottom: 27%;
    right: 29%;
}

.cookie .chocolate-chips-4b {
    bottom: 12%;
    right: 23%;
}

.cookie .chocolate-chips-4c {
    --chip-size: calc(var(--cookie-size) / 12);
    bottom: 28%;
    right: 17%;
}

.cookie span[class^="chocolate-chips-1"] {
    transform: translate(calc(var(--split-offset) * -1), calc(var(--split-offset) * -1));
}

.cookie span[class^="chocolate-chips-2"] {
    transform: translate(calc(var(--split-offset) * 1), calc(var(--split-offset) * -1));
}

.cookie span[class^="chocolate-chips-3"] {
    transform: translate(calc(var(--split-offset) * -1), calc(var(--split-offset) * 1));
}

.cookie span[class^="chocolate-chips-4"] {
    transform: translate(calc(var(--split-offset) * 1), calc(var(--split-offset) * 1));
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.