@width-search-bar: 800px;
@position-offset-y-desktop: 3.5rem; /* Sync with search button position */

.citizen-search {
	--width-search-bar: @width-search-bar;
	--height-search-bar: 2.75rem;

	@media ( min-width: @min-width-breakpoint-desktop ) {
		--height-search-bar: 3rem;
	}

	.citizen-menu__card {
		--size-icon: 1rem;
		position: fixed;
		top: 0;
		right: 0;
		left: 0;
		width: var( --width-search-bar );
		max-width: ~'calc(100vw - var( --padding-page ) )';
		max-height: var( --header-card-maxheight );
		margin-right: auto;
		margin-left: auto;
		overflow-y: auto;
		overscroll-behavior: contain;
		transform-origin: center var( --transform-origin-offset-start );
		contain: none;

		@media ( min-width: @min-width-breakpoint-desktop ) {
			top: @position-offset-y-desktop;
			max-height: ~'calc( 100vh - ( var( --space-xs ) + @{position-offset-y-desktop} ) * 2 )';
			overflow-y: auto;
		}
	}

	.citizen-dropdown-details[ open ] + .citizen-menu__card > .citizen-search__form {
		transition: none; /* Do not animate typeahead since it looks weird */
	}

	&__formButton,
	&__formIcon {
		display: grid;
		place-content: center;
		/* Sync with left icons (--size-icon + --space-sm * 2) and typeahead */
		width: ~'calc( 1.25rem + var( --space-sm ) * 2 )';
		height: var( --height-search-bar );
	}

	&__formButton {
		cursor: pointer;
		border-radius: var( --border-radius-base );

		.citizen-ui-icon::before {
			transition: var( --transition-hover );
			transition-property: opacity;
		}

		&:hover {
			background-color: var( --background-color-button-quiet--hover );

			.citizen-ui-icon::before {
				opacity: var( --opacity-icon-base--hover );
			}
		}

		&:active {
			background-color: var( --background-color-button-quiet--active );

			.citizen-ui-icon::before {
				opacity: var( --opacity-icon-base--selected );
			}
		}
	}

	&__random {
		.citizen-ui-icon::before {
			transition-property: opacity, transform;
		}

		&:hover {
			.citizen-ui-icon::before {
				transform: rotate( 30deg );
			}
		}
	}

	&__form,
	&__footer {
		position: sticky;
		z-index: @z-index-stacking-1;
		background-color: inherit;
	}

	&__form {
		top: 0;
		display: flex;
		height: 100%;
		overflow: hidden;
		font-size: var( --font-size-small );

		// HACK: Target mobile Safari only to prevent auto zooming the input field
		@supports (-webkit-touch-callout: none) {
			font-size: 1rem;
		}

		@media ( min-width: @min-width-breakpoint-desktop ) {
			font-size: var( --font-size-medium );
		}

		/**
		 * Loading indicator for searchbox
		 * See common/progressbar.less
		 **/
		&.citizen-loading::after {
			position: absolute;
			bottom: 0;
		}
	}

	#searchInput {
		flex-grow: 1;
		padding: 0;
		font-size: inherit;
		appearance: none;
		background: transparent; // Cancel default background
		border: 0; // Cancel default border

		&:focus {
			outline: 0;
			// The search suggestion pop-up indicates for focus state
			// border-color: var( --color-progressive );
			// box-shadow: inset 0 0 0 1px var( --color-progressive );
		}

		// Remove browser native clear all button in search field
		&::-webkit-search-cancel-button {
			-webkit-appearance: none;
		}
	}

	&__footer {
		bottom: 0;
		display: flex;
		gap: var( --space-lg );
		align-items: center;
		justify-content: space-between;
		min-height: 2.5rem;
		padding: 0 var( --space-md );
		overflow: hidden;
		font-size: var( --font-size-x-small );
		color: var( --color-subtle );
		white-space: nowrap;
		border-top: 1px solid var( --border-color-base );

		&-start,
		&-end {
			display: flex;
			gap: var( --space-md );
			align-items: center;
		}
	}
}

@media ( max-width: @max-width-breakpoint-tablet ) {
	.citizen-search {
		.citizen-menu__card {
			width: auto;
		}

		// Remove searchbox open animation on mobile
		// But keep suggestion animation
		// So user can get to search instantly
		> .citizen-dropdown[ open ] > .citizen-menu__card {
			transition: none;
		}
	}
}
