/*
 * Toggle switch. Geometry and colours come from the --switch-* tokens so the
 * same component covers both the small switch in option B and the larger one
 * in option E.
 */
.switch {
    position: relative;
    display: inline-block;
    width: var(--switch-width);
    height: var(--switch-height);
}

.switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.slider {
    position: absolute;
    inset: 0;
    cursor: pointer;
    background-color: var(--switch-off-color);
    transition: 0.4s;
}

.slider:before {
    position: absolute;
    content: "";
    width: var(--switch-knob-size);
    height: var(--switch-knob-size);
    left: var(--switch-knob-offset);
    bottom: var(--switch-knob-offset);
    background-color: var(--switch-knob-color);
    transition: 0.4s;
}

input:checked + .slider {
    background-color: var(--switch-on-color);
}

input:checked + .slider:before {
    transform: translateX(calc(var(--switch-width) - var(--switch-height)));
}

.slider.round {
    border-radius: var(--radius-pill);
}

.slider.round:before {
    border-radius: 50%;
}
