/* Inspired by https://github.com/lazaronixon/css-zero/blob/master/lib/generators/css_zero/add/templates/app/assets/stylesheets/input.css */

:where(.input) {
	&:not([type="checkbox"], [type="radio"], [type="range"]) {
		appearance: none;
		background-color: var(--input-background, var(--color-surface));
		block-size: var(--input-block-size, auto);
		border: 1px solid var(--input-border-color, var(--color-border));
		border-radius: var(--input-radius, var(--rounded-full));
		box-shadow: var(--input-box-shadow, var(--shadow));
		font-size: var(--input-font-size, var(--text-medium));
		inline-size: var(--input-inline-size, 100%);
		padding: var(--input-padding, .375rem 1.25rem);
	}

	&:is([type="checkbox"], [type="radio"]) {
		accent-color: var(--input-accent-color, var(--color-primary));
		block-size: var(--input-check-size, 1rem);
		inline-size: var(--input-check-size, 1rem);
	}

	&:is([type="range"]) {
		accent-color: var(--input-accent-color, var(--color-primary));
	}

	&:is(textarea[rows="auto"]) {
		field-sizing: content;
		max-block-size: calc(.875rem + var(--input-max-rows, 10lh));
		min-block-size: calc(.875rem + var(--input-rows, 2lh));
	}

	&:is(select):not([multiple], [size]) {
		background-image: url("chevron-down-zinc-500.svg");
		background-position: center right 0.5rem;
		background-repeat: no-repeat;
		background-size: 1rem auto;
	}

	>option {
		padding: revert;
	}

	&::file-selector-button {
		font-weight: var(--font-medium);
	}

	&:user-invalid {
		border-color: var(--color-negative);
	}

	&:user-invalid+.invalid-feedback {
		display: block;
	}

	&:focus-visible {
		outline: var(--input-outline-size, 2px) solid var(--color-selected-dark);
	}

	&:disabled {
		cursor: not-allowed;
		opacity: var(--opacity-disabled);
	}

	.field_with_errors & {
		border-color: var(--color-negative);
	}
}

.input--actor>input {
	border: 0;
	inline-size: 100%;
	outline: 0;
}

.input--actor:focus-within {
	outline: var(--input-outline-size, 2px) solid var(--color-selected-dark);
}

.form {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: calc(var(--gap) / 2);
}