.Switcher { display: inline-flex; align-items: center; position: relative; margin: 0; &.disabled { pointer-events: none; opacity: 0.5; } &.inactive { pointer-events: none; } input { height: 0; width: 0; visibility: hidden; position: absolute; z-index: var(--z-below); opacity: 0; } .widget { cursor: pointer; text-indent: -999px; width: 2.125rem; height: 0.875rem; background: var(--color-gray); display: inline-block; border-radius: .5rem; position: relative; } .widget:after { content: ''; position: absolute; top: -.125rem; left: 0; width: 1.125rem; height: 1.125rem; background: var(--color-background); border-radius: .75rem; border: .125rem solid var(--color-gray); } input:checked + .widget { background: var(--color-primary); } input:checked + .widget:after { left: calc(100% - 1.125rem); transform: translateX(calc(-100% + 1.125rem)); border-color: var(--color-primary); } }