/* Widgets - Radio Button */
////
/// @group Widgets-Radio_Button
/// Widgets - Radio Button

///
.radio-button {
	appearance: none;
	cursor: pointer;
	flex-shrink: 0;
	height: 24px;
	position: relative;
	transition: all 180ms linear;
	width: 24px;

	&:before,
	&:after {
		box-sizing: border-box;
	}

	&:before {
		background-color: var(--color-neutral-0);
		border: var(--border-size-s) solid var(--color-neutral-5);
		border-radius: var(--border-radius-rounded);
		content: '';

		display: flex;
		height: 100%;

		transition: all 180ms linear;
		width: 100%;
	}

	&:hover:before {
		border: var(--border-size-s) solid var(--color-neutral-6);
	}

	&:focus:before {
		box-shadow: 0 0 0 2px var(--color-focus);
	}

	&:checked {
		&:before {
			background-color: var(--color-neutral-0);
			border: 6px solid var(--color-primary);
		}

		&:hover:before {
			filter: brightness(0.9);
		}
	}

	&:disabled {
		background-color: transparent;
		border: none;
		pointer-events: none;

		& + label {
			pointer-events: none;
			color: var(--color-neutral-6);
		}

		&:before {
			background-color: var(--color-neutral-2);
			border: var(--border-size-s) solid var(--color-neutral-4);
		}

		&:checked:before {
			background-color: var(--color-neutral-2);
			border: 6px solid var(--color-neutral-4);
		}
	}
}

///
.radio-group {
	&.is-horizontal {
		display: flex;
		flex-direction: row;
		flex-wrap: wrap;

		& > div {
			display: contents;
		}

		[data-radio-button] {
			width: auto;

			&:not(:first-of-type) {
				margin-left: var(--space-base);
			}
		}
	}
}

///
[data-radio-group] {
	&.not-valid [data-radio-button] .radio-button {
		&:before {
			border: var(--border-size-s) solid var(--color-error);
		}

		&:checked:before {
			background-color: var(--color-neutral-0);
			border: 6px solid var(--color-primary);
		}
	}

	[data-radio-button] {
		align-items: center;
		display: inline-flex;
		margin: var(--space-s) 0;

		label {
			cursor: pointer;
			line-height: 1;
			margin-bottom: 0;
			margin-left: var(--space-s);
		}
	}
}

///
[data-radio-button]:not(.OSFillParent):not([class*='ThemeGrid_Width']) {
	// Service Studio Preview
	& {
		-servicestudio-display: flex;
	}
}

// Accessibility -----------------------------------------------------------------
.has-accessible-features {
	.radio-button {
		border-radius: var(--border-radius-rounded);

		&:before {
			border-color: var(--color-neutral-7);
		}

		&:after {
			background-color: var(--color-neutral-0);
			border-radius: 100%;
			content: '';
			height: 12px;
			left: 50%;
			margin-left: -6px;
			margin-top: -6px;
			position: absolute;
			position: absolute;
			top: 50%;
			width: 12px;
		}

		&:focus:before {
			background-color: var(--color-primary);
			border-color: var(--color-focus-inner);
			box-shadow: none;
		}

		&:checked:before {
			border-color: var(--color-primary);
		}

		&:hover:before {
			border-color: var(--color-neutral-8);
		}
	}

	[data-radio-group].not-valid [data-radio-button] .radio-button:checked:before {
		border-color: var(--color-primary);
	}
}

// IsRTL -------------------------------------------------------------------------
.is-rtl {
	[data-radio-group] label {
		margin-left: var(--space-none);
		margin-right: var(--space-s);
	}

	.radio-group {
		&.is-horizontal {
			[data-radio-button] {
				&:not(:first-of-type) {
					margin-left: unset;
					margin-right: var(--space-base);
				}
			}
		}
	}
}
