/** === Main menu === */

.main-navigation {

	display: block;
	margin-top: #{0.25 * $size__spacing-unit};

	body.page & {
		display: block;
	}

	> div {
		display: inline;
	}

	/* Un-style buttons */
	button {
		display: inline-block;
		border: none;
		padding: 0;
		margin: 0;
		font-family: $font__heading;
		font-weight: 700;
		line-height: $font__line-height-heading;
		text-decoration: none;
		background: transparent;
		color: inherit;
		cursor: pointer;
		transition:
			background 250ms ease-in-out,
			transform 150ms ease;
		-webkit-appearance: none;
		-moz-appearance: none;

		&:hover,
		&:focus {
			background: transparent;
		}

		&:focus {
			outline: 1px solid transparent;
			outline-offset: -4px;
		}

		&:active {
			transform: scale(0.99);
		}
	}

	.main-menu {

		display: inline-block;
		margin: 0;
		padding: 0;

		> li {

			color: $color__link;
			display: inline-block;
			position: relative;

			> a {

				font-weight: 700;
				color: $color__link;
				margin-right: #{0.5 * $size__spacing-unit};

				+ svg {
					margin-right: #{0.5 * $size__spacing-unit};
				}

				&:hover,
				&:hover + svg {
					color: $color__link-hover;
				}
			}

			&.menu-item-has-children {

				display: inline-block;
				position: inherit;

				@include media(tablet) {
					position: relative;
				}

				> a {
					margin-right: #{0.125 * $size__spacing-unit};
				}

				& > a,
				.menu-item-has-children > a {

					&:after {
						content: "";
						display: none;
					}
				}

				.submenu-expand {

					display: inline-block;
					margin-right: #{0.25 * $size__spacing-unit};

					/* Priority+ Menu */
					&.main-menu-more-toggle {

						position: relative;
						height: 24px;
						line-height: $font__line-height-heading;
						width: 24px;
						padding: 0;
						margin-left: #{0.5 * $size__spacing-unit};

						svg {
							height: 24px;
							width: 24px;
							top: #{-0.125 * $size__spacing-unit};
							vertical-align: text-bottom;
						}
					}

					.wp-customizer-unloading &,
					&.is-empty {
						display: none;
					}

					svg {
						position: relative;
						top: 0.2rem;
					}
				}
			}

			&:last-child > a,
			&:last-child.menu-item-has-children .submenu-expand {
				margin-right: 0;
			}
		}
	}

	.sub-menu {

		background-color: $color__link;
		color: $color__background-body;
		list-style: none;
		padding-left: 0;

		position: absolute;
		opacity: 0;
		left: -9999px;
		z-index: 99999;

		@include media(tablet) {
			width: auto;
			min-width: -moz-max-content;
			min-width: -webkit-max-content;
			min-width: max-content;
		}

		> li {

			display: block;
			float: none;
			position: relative;

			&.menu-item-has-children {

				.submenu-expand {
					display: inline-block;
					position: absolute;
					width: calc( 24px + #{$size__spacing-unit} );
					right: 0;
					top: calc( .125 * #{$size__spacing-unit} );
					bottom: 0;
					color: white;
					line-height: 1;
					padding: calc( .5 * #{$size__spacing-unit} );

					svg {
						top: 0;
					}
				}

				.submenu-expand {
					margin-right: 0;
				}

				@include media(tablet) {

					.menu-item-has-children > a {

						&:after {
							content: "\203a";
						}
					}
				}
			}

			> a,
			> .menu-item-link-return {

				color: $color__background-body;
				display: block;
				line-height: $font__line-height-heading;
				text-shadow: none;
				padding: calc( .5 * #{$size__spacing-unit} ) calc( 24px + #{$size__spacing-unit} ) calc( .5 * #{$size__spacing-unit} ) $size__spacing-unit;
				max-width: #{20 * $size__spacing-unit};

				&:hover,
				&:focus {
					background: $color__link-hover;

					&:after {
						background: $color__link-hover;
					}
				}
			}

			> .menu-item-link-return {
				width: 100%;
				font-size: $font__size_base;
				font-weight: normal;
				text-align: left;
			}

			> a:empty {
				display: none;
			}

			&.mobile-parent-nav-menu-item {

				display: none;
				font-size: $font__size-sm;
				font-weight: normal;

				svg {
					position: relative;
					top: 0.2rem;
					margin-right: calc( .25 * #{$size__spacing-unit} );
				}
			}
		}
	}

	/*
	 * Sub-menu styles
	 *
	 * :focus-within needs its own selector so other similar
	 * selectors don’t get ignored if a browser doesn’t recognize it
	 */
	.main-menu .menu-item-has-children:not(.off-canvas):focus-within > .sub-menu {

		display: block;
		left: 0;
		margin-top: 0;
		opacity: 1;
		width: auto;
		min-width: 100%;


		/* Non-mobile position */
		@include media(tablet) {
			display: block;
			margin-top: 0;
			opacity: 1;
			position: absolute;
			left: 0;
			right: auto;
			top: auto;
			bottom: auto;
			height: auto;
			min-width: -moz-max-content;
			min-width: -webkit-max-content;
			min-width: max-content;
			transform: none;
		}

		&.hidden-links {
			left: 0;
			width: 100%;
			display: table;
			position: absolute;

			@include media(tablet) {
				right: 0;
				left: auto;
				display: block;
				width: max-content;
			}
		}

		.submenu-expand {
			display: none;
		}

		.sub-menu {
			display: block;
			margin-top: inherit;
			position: relative;
			width: 100%;
			left: 0;
			opacity: 1;

			/* Non-mobile position */
			@include media(tablet) {
				float: none;
				max-width: 100%;
			}
		}

		/* Nested sub-menu dashes */
		.sub-menu {
			counter-reset: submenu;
		}

		.sub-menu > li > a::before {
			font-family: $font__body;
			font-weight: normal;
			content: "\2013\00a0" counters(submenu, "\2013\00a0", none);
			counter-increment: submenu
		}
	}

	.main-menu .menu-item-has-children:not(.off-canvas):hover > .sub-menu,
	.main-menu .menu-item-has-children:not(.off-canvas):focus > .sub-menu,
	.main-menu .menu-item-has-children.is-focused:not(.off-canvas) > .sub-menu {

		display: block;
		left: 0;
		margin-top: 0;
		opacity: 1;
		width: auto;
		min-width: 100%;


		/* Non-mobile position */
		@include media(tablet) {
			display: block;
			float: none;
			margin-top: 0;
			opacity: 1;
			position: absolute;
			left: 0;
			right: auto;
			top: auto;
			bottom: auto;
			height: auto;
			min-width: -moz-max-content;
			min-width: -webkit-max-content;
			min-width: max-content;
			transform: none;
		}

		&.hidden-links {
			left: 0;
			width: 100%;
			display: table;
			position: absolute;

			@include media(tablet) {
				right: 0;
				left: auto;
				display: table;
				width: max-content;
			}
		}

		.submenu-expand {
			display: none;
		}

		.sub-menu {
			display: block;
			margin-top: inherit;
			position: relative;
			width: 100%;
			left: 0;
			opacity: 1;

			/* Non-mobile position */
			@include media(tablet) {
				float: none;
				max-width: 100%;
			}
		}

		/* Nested sub-menu dashes */
		.sub-menu {
			counter-reset: submenu;
		}

		.sub-menu > li > a::before {
			font-family: $font__body;
			font-weight: normal;
			content: "\2013\00a0" counters(submenu, "\2013\00a0", none);
			counter-increment: submenu
		}
	}

	/**
	 * Fade-in animation for top-level submenus
	 */
	.main-menu > .menu-item-has-children:not(.off-canvas):hover > .sub-menu {
		animation: fade_in 0.1s forwards;
	}

	/**
	 * Off-canvas touch device styles
	 */
	.main-menu .menu-item-has-children.off-canvas .sub-menu {

		.submenu-expand .svg-icon {
			transform: rotate(270deg);
		}

		.sub-menu {
			opacity: 0;
			position: absolute;
			z-index: 0;
			transform: translateX(-100%);
		}

		li:hover,
		li:focus,
		li > a:hover,
		li > a:focus {
			background-color: transparent;
		}

		> li > a,
		> li > .menu-item-link-return {
			white-space: inherit;
		}

		&:not(:has(.sub-menu.expanded-true)) {
			overflow-y: scroll;
		}

		&.expanded-true {

			display: block;
			margin-top: 0;
			opacity: 1;
			padding-left: 0;

			/* Mobile position */
			left: 0;
			top: 0;
			right: 0;
			bottom: 0;
			position: fixed;
			z-index: 100000; /* Make sure appears above mobile admin bar */
			width: 100vw;
			height: 100vh;
			max-width: 100vw;
			transform: translateX(+100%);
			animation: slide_in_right 0.3s forwards;

			> .mobile-parent-nav-menu-item {
				display: block;
			}

			/* Prevent menu from being blocked by admin bar */
			.admin-bar & {
				top: 46px;
				height: calc( 100vh - 46px );

				.sub-menu.expanded-true {
					top: 0;
				}

				/* WP core breakpoint */
				@media only screen and ( min-width: 782px ) {
					top: 32px;
					height: calc( 100vh - 32px );

					.sub-menu.expanded-true {
						top: 0;
					}
				}
			}
		}
	}

	// Hide duplicate menu-more-link when re-loading a menu in the customizer
	.main-menu-more {
		&:nth-child(n+3) {
			display: none;
		}
	}

}

/* Menu animation */

@keyframes slide_in_right {
	100% {
		transform: translateX(0%);
	}
}

@keyframes fade_in {
	from {
		opacity: 0;
	}
	to {
		opacity: 1;
	}
}
