.wc-block-components-text-input {
	position: relative;
	margin-bottom: em($gap-large);
	white-space: nowrap;

	label {
		@include reset-typography();
		@include font-size(regular);
		position: absolute;
		transform: translateY(0.75em);
		left: 0;
		top: 0;
		transform-origin: top left;
		line-height: 1.375; // =22px when font-size is 16px.
		color: $gray-50;
		transition: transform 200ms ease;
		margin: 0 0 0 #{$gap + 1px};
		overflow: hidden;
		text-overflow: ellipsis;
		max-width: calc(100% - #{2 * $gap});
		cursor: text;

		@media screen and (prefers-reduced-motion: reduce) {
			transition: none;
		}
	}

	input:-webkit-autofill + label {
		transform: translateY(#{$gap-smallest}) scale(0.75);
	}

	&.is-active label {
		transform: translateY(#{$gap-smallest}) scale(0.75);
	}

	input[type="tel"],
	input[type="url"],
	input[type="text"],
	input[type="email"] {
		@include font-size(regular);
		background-color: #fff;
		padding: em($gap-small) $gap;
		border-radius: 4px;
		border: 1px solid $input-border-gray;
		width: 100%;
		line-height: 1.375; // =22px when font-size is 16px.
		font-family: inherit;
		margin: 0;
		box-sizing: border-box;
		height: 3em;
		min-height: 0;
		color: $input-text-active;

		&:focus {
			background-color: #fff;
		}
	}

	&.is-active input[type="tel"],
	&.is-active input[type="url"],
	&.is-active input[type="text"],
	&.is-active input[type="email"] {
		padding: em($gap-large) 0 em($gap-smallest) $gap;
	}

	&.has-error input {
		border-color: $error-red;
		&:focus {
			outline-color: $error-red;
		}
	}

	&.has-error label {
		color: $error-red;
	}

	&:only-child {
		margin-bottom: 0;
	}
}
