.switch { all: unset; position: absolute; right: 20px; top: 70px; display: inline-block; color: currentColor; border-radius: 50%; border: 1px dashed currentColor; cursor: pointer; --size: 24px; height: var(--size); width: var(--size); transition: all 0.3s ease-in-out 0s !important; } [data-mode="system"] .switch::after { position: absolute; height: 100%; width: 100%; top: 0; left: 0; font-weight: 600; font-size: calc(var(--size) / 2); display: flex; align-items: center; justify-content: center; content: "A"; } [data-mode="light"] .switch { box-shadow: 0 0 50px 10px yellow; background-color: yellow; border: 1px solid orangered; } [data-mode="dark"] .switch { box-shadow: calc(var(--size) / 4) calc(var(--size) / -4) calc(var(--size) / 8) inset #fff; border: none; background: transparent; animation: n linear 0.5s; } @keyframes n { 40% { transform: rotate(-15deg); } 80% { transform: rotate(10deg); } 0%, 100% { transform: rotate(0deg); } }