.Radio { display: block; position: relative; padding-inline-start: 3.5rem; text-align: left; margin-block: 0.75rem; line-height: 1.5rem; cursor: var(--custom-cursor, pointer); &.disabled { pointer-events: none; opacity: 0.5; } &.with-icon { padding-inline-start: 1rem; .Radio-main { &::before, &::after { left: auto; right: 1.1875rem; } &::after { right: 1.5rem; } } } &.hidden-widget { cursor: var(--custom-cursor, default); .Radio-main { &::before, &::after { visibility: hidden; } } } > input { position: absolute; z-index: var(--z-below); opacity: 0; } .Radio-main { &::before, &::after { content: ""; display: block; position: absolute; left: 1rem; top: 50%; width: 1.25rem; height: 1.25rem; transform: translateY(-50%); } &::before { border: 2px solid var(--color-borders-input); border-radius: 50%; background-color: var(--color-background); opacity: 1; transition: border-color 0.1s ease, opacity 0.1s ease; } &::after { left: 1.3125rem; width: 0.625rem; height: 0.625rem; border-radius: 50%; background: var(--color-primary); opacity: 0; transition: opacity 0.1s ease; } .label { display: block; word-break: break-word; unicode-bidi: plaintext; text-align: left; } .subLabel { display: block; font-size: 0.875rem; line-height: 1rem; color: var(--color-text-secondary); unicode-bidi: plaintext; } .subLabelLink { cursor: pointer; } } input:checked ~ .Radio-main { &::before { border-color: var(--color-primary); } &::after { opacity: 1; } } &.loading { .Radio-main::before, .Radio-main::after { opacity: 0 !important; } .Spinner { position: absolute; left: 1rem; top: 50%; transform: translateY(-50%); opacity: 0; animation: fade-in 0.2s ease forwards; --spinner-size: 1.25rem; } } &[dir="rtl"] { .Radio-main { text-align: right; &::before { left: auto; right: 1.0625rem; } &::after { left: auto; right: 1.375rem; } } .label, .subLabel { text-align: right; } &.loading .Spinner { left: auto; right: 1.0625rem; } &.onlyInput .Radio-main::after { right: 0.3125rem; left: auto; } } &.onlyInput { margin-block: 0 1.25rem; line-height: 1.25rem; padding-inline-start: 1.25rem; .Radio-main { &::before { left: 0; right: 0; top: 0; transform: none; } &::after { left: 0.3125rem; top: 0; transform: translateY(50%); } } .Spinner { inset: 0 !important; transform: none; } } } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }