/* mobile styles */

.navigation.navigation-grid {
	--surface-1: var(--blue-16);
	--surface-2: var(--blue-71);
	--surface-3: var(--red-cc);
	--surface-highlight: var(--blue-71);
	--item-width: 42vw;
}

.navigation.navigation-grid.mobile {
	margin-top: var(--space-6);
	padding-bottom: 0;
}

.navigation.navigation-grid.mobile.child-open {
	margin-top: 0;
}

.navigation.navigation-grid.mobile .nav-item .nav-item-control {
	position: relative;
	flex-direction: column;
}

.navigation.navigation-grid.mobile.child-open .nav-item.level-1 {
	display: none;
}

.navigation.navigation-grid.mobile.child-open .nav-item.level-1.open {
	display: block;
}

.navigation.navigation-grid.mobile .level-1-wrapper {
	position: relative;
	display: flex;
	flex-direction: row;
	align-items: flex-end;
	justify-content: space-between;
	width: calc(100% - 40px);
	margin: 0 20px;
}

.navigation.navigation-grid.mobile .level-1-wrapper:after {
	content: '';
	position: absolute;
	bottom: 6px;
	left: 16px;
	width: calc(100% - 32px);
	height: 1px;
	background-color: var(--surface-2);
}

.navigation.navigation-grid.mobile .nav-item.level-1 .nav-item-control.level-1 a.nav-link {
	position: relative;
	padding: 18px 20px 6px 15px;
	font-size: 21px;
	text-decoration: none;
	text-transform: uppercase;
}

/* nav item bottom border */
.navigation.navigation-grid.mobile .nav-item.level-1 .nav-item-control.level-1 a.nav-link:after {
	content: '';
	position: absolute;
	bottom: 6px;
	left: 16px;
	width: calc(100% - 32px);
	height: 1px;
	background-color: var(--surface-2);
}

.navigation.navigation-grid.mobile .nav-item.level-1.open .nav-item-control.level-1 a.nav-link:after {
	display: none;
}

.navigation.navigation-grid.mobile .nav-item.level-1.has-children .nav-item-control.level-1 a.nav-link:after {
	width: 100%;
}

.navigation.navigation-grid.mobile .nav-item.level-1.open .nav-item-control.level-1 a.nav-link:after {
	content: none;
}

.navigation.navigation-grid.mobile .nav-item.level-1.open .nav-item-control.level-1 a.nav-link {
	display: none;
	padding-top: 12px;
	font-size: var(--text-3xl);
	text-decoration: none;
}

/* begin: extra "menu" label above mobile nav items */
.navigation.navigation-grid.mobile .nav-item .menu-label {
	display: none;
	opacity: 0;
}

.navigation.navigation-grid.mobile .nav-item.open .menu-label {
	display: block;
	position: relative;
	top: 6px;
	left: 17px;
	padding: 4px 0;
	font-size: 20px;
	text-decoration: none;
	text-transform: uppercase;
	opacity: 1;
	transition: opacity 500ms linear;
}

.navigation.navigation-grid.mobile .nav-item.level-1.open .item-title,
.navigation.navigation-grid.mobile .nav-item.level-1 .nav-item-control.level-1 a.extra-link {
	display: none;
}

.navigation.navigation-grid.mobile .nav-item:not(.level-1) > .nav-item-control > a .item-title,
.navigation.navigation-grid.mobile .nav-item.level-1.open .nav-item-control.level-1 a.extra-link {
	display: block;
}

.navigation.navigation-grid.mobile .nav-item.level-1.open .nav-item-control.level-1 a.extra-link {
	display: block;
	width: calc(100% - 70px);
	margin: 0 auto;
	padding: 16px 0;
	font-size: var(--text-3xl);
	font-weight: 400;
	text-transform: uppercase;
	text-decoration: none;
}
/* end: extra "menu" label above mobile nav items */

.navigation.navigation-grid.mobile .dropdown-menu .nav-item .item-title {
	padding: 7px 0 5px;
	color: var(--white);
	background-color: var(--surface-1);
	font-size: var(--text-xs);
	text-align: center;
}

.navigation.navigation-grid.mobile .dropdown-menu .nav-item-control.item-title {
	font-size: var(--text-xl);
}

.navigation.navigation-grid img {
	object-fit: cover;
}

/* dropdown menu styles */
.navigation.navigation-grid.mobile .dropdown-menu.open {
	position: relative;
	display: grid !important;
	justify-content: center;
	grid-template-columns: repeat(2, 1fr);
	grid-template-columns: repeat(2, var(--item-width));
	gap: 35px 10px;
	padding: 24px 0;
	background-color: var(--white);
	border-top: 3px solid var(--yellow-fe);
	border-bottom: 3px solid var(--yellow-fe);
}

.navigation.navigation-grid.mobile .regions-destination.open {
	border-top: 3px solid var(--yellow-fe);
	border-bottom: 3px solid var(--yellow-fe);
}

.navigation.navigation-grid.mobile .dropdown-menu.level-2.open {
	--item-width: 120px;
	gap: 20px 10px;
	margin-top: 18px;
	margin-bottom: -18px;
	padding: 18px 43.5vw !important;
	background-color: var(--blue-20);
	border-top: 0;
	border-bottom: 0;
}

.navigation.navigation-grid.mobile .nav-item.level-2:nth-child(2n + 1) .dropdown-menu.level-2 {
	left: 0;
}

.navigation.navigation-grid.mobile .nav-item.level-2:nth-child(2n + 2) .dropdown-menu.level-2 {
	left: -145px;
}

.navigation.navigation-grid.mobile .nav-item .dropdown-toggle {
	display: flex;
	justify-content: flex-end;
	justify-content: space-between;
	align-items: center;
	margin-right: 6px;
	padding: 10px 0 10px 33%;
}

.navigation.navigation-grid.mobile .nav-item.open .dropdown-toggle {
	width: 100%;
	padding: 4px 5px 5px 0;
}

.navigation.navigation-grid.mobile .nav-item:not(.level-1) .dropdown-toggle {
	position: absolute;
	bottom: 1px;
	right: 1px;
	padding: 0 6px;
	color: var(--white);
	border: 1px solid transparent;
}

.navigation.navigation-grid.mobile .nav-item:not(.level-1).open > .nav-item-control > .dropdown-toggle {
	bottom: 1px;
	right: 0;
	padding: 0 8px;
	transform: rotate(-90deg);
}

.navigation.navigation-grid.mobile .nav-item:not(.level-1) .dropdown-toggle:hover {
	border: 1px solid var(--white);
}

.navigation.navigation-grid.mobile .nav-item > .nav-item-control .dropdown-toggle .icon-toggle {
	position: relative;
	top: -1px;
	right: 16px;
}

.navigation.navigation-grid.mobile .nav-item.open > .nav-item-control .dropdown-toggle .icon-toggle {
	top: 5px;
	right: 10px;
}

.navigation.navigation-grid.mobile .nav-item:not(.level-1) > .nav-item-control > a.nav-link {
	flex-direction: column;
	padding: 0 !important;
}

.navigation.navigation-grid .nav-item:not(.level-1) > .nav-item-control > a,
.navigation.navigation-grid .nav-item:not(.level-1) > .nav-item-control > a .item-title,
.navigation.navigation-grid img {
	width: var(--item-width);
}

@media (min-width: 400px) {
	.navigation.navigation-grid {
		--item-width: 154px;
	}

	.navigation.navigation-grid.mobile .dropdown-menu.open {
		padding: 24px 30px;
	}

	.navigation.navigation-grid.mobile .dropdown-menu.level-2.open {
		--item-width: 135px;
		padding: 18px 170px !important;
	}

	.navigation.navigation-grid.mobile .nav-item.level-2:nth-child(2n + 1) .dropdown-menu.level-2 {
		left: -10px;
	}

	.navigation.navigation-grid.mobile .nav-item.level-2:nth-child(2n + 2) .dropdown-menu.level-2 {
		left: -172px;
	}
}

@media (min-width: 64em) {
	.navigation.navigation-grid {
		--nav-width: 1008px;
		--item-width: 170px;
		--grid-gap: 20px;
		--menu-width: calc(100vw - 250px);
		--anchor-padding-top: var(--space-1);
		--anchor-padding-bottom: var(--space-2);
		--anchor-padding-side: var(--space-4);
		/* these values are for positioning the child nav items */
		--nav-offset: 138px;
		--width-plus-gap: calc(var(--item-width) + var(--grid-gap));
	}
}

@media (min-width: 90em) {
	.navigation.navigation-grid {
		--nav-width: 1440px;
		--item-width: 220px;
		--nav-offset: 58px;
		--grid-gap: 22px;
		--menu-width: calc(100vw - 280px);
		--anchor-padding-side: var(--space-6);
	}
}

/* desktop styles */

.navigation.navigation-grid.desktop {
	justify-content: space-between;
	width: var(--menu-width);
	padding-top: 2px;
}

.navigation.navigation-grid.desktop .nav-item {
	position: relative;
}

.navigation.navigation-grid.desktop .nav-item.level-1 {
	position: initial;
}

.navigation.navigation-grid.desktop .nav-item a.extra-link {
	display: none;
}

.navigation.navigation-grid.desktop .nav-item a.nav-link {
	flex-direction: column;
	color: var(--surface-1);
	overflow: hidden;
}

.navigation.navigation-grid.desktop .nav-item.level-1 a.nav-link {
	position: relative;
	margin-top: 12px;
	padding: var(--anchor-padding-top) var(--anchor-padding-side) var(--anchor-padding-bottom);
}

.navigation.navigation-grid.desktop .nav-item .dropdown-toggle,
.navigation.navigation-grid.desktop .nav-item .menu-label,
.navigation.navigation-grid.desktop .nav-item .extra-title {
	display: none;
}

.navigation.navigation-grid.desktop img {
	position: relative;
	height: 100px;
	transform-origin: center;
	transition: transform 0.3s ease-out;
	z-index: 1;
}

.navigation.navigation-grid.desktop .nav-item.level-1 .level-1-wrapper a .item-title {
	font-size: var(--text-base);
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 1px;
}

.navigation.navigation-grid .nav-item:not(.level-1) {
	width: var(--item-width);
}

.navigation.navigation-grid.desktop .nav-item:not(.level-1) .item-title {
	position: relative;
	width: var(--item-width);
	padding: 6px;
	font-size: var(--text-xs);
	text-align: center;
	color: var(--white);
	background-color: var(--surface-3);
	z-index: 2;
}

.navigation.navigation-grid.desktop .nav-item:not(.level-1) > .nav-item-control:not(.level-1) > a.nav-link {
	padding: 0;
}

.navigation.navigation-grid.desktop .dropdown-menu {
	display: grid !important;
	position: absolute;
	width: calc(100vw - var(--scrollbar-width));
	padding: 50px 0;
	background-color: var(--surface-1);
	visibility: hidden;
	transition: opacity 500ms cubic-bezier(0,0,0.3,1);
}

.navigation.navigation-grid.desktop .dropdown-menu.open {
	visibility: visible;
	justify-content: center;
	grid-template-columns: repeat(5, var(--item-width));
	gap: 44px var(--grid-gap);
	opacity: 1;
	pointer-events: all;
}

.navigation.navigation-grid.desktop .dropdown-menu.level-1 {
	left: -40px;
}

.navigation.navigation-grid.desktop .level-1.on-right .dropdown-menu.level-1 {
	right: 0;
}

.navigation.navigation-grid.desktop .regions-destination {
	position: absolute;
	left: -40px;
	width: calc(100vw - var(--scrollbar-width));
}

.navigation.navigation-grid.desktop .dropdown-menu.level-2 {
	width: var(--nav-width);
	background: linear-gradient(
		to bottom,
		var(--surface-1) 0,
		var(--surface-1) 25px,
		var(--blue-20) 25px,
		var(--blue-20) 100%
	);
}

/* define the child num variables for use in calculating the left position */
/* amazingly, this all still worked when the client said to reduce the columns from 6 to 5 */
.navigation.navigation-grid.desktop .nav-item .dropdown-menu .nav-item:nth-child(5n + 1) { --child-num: 1; }
.navigation.navigation-grid.desktop .nav-item .dropdown-menu .nav-item:nth-child(5n + 2) { --child-num: 2; }
.navigation.navigation-grid.desktop .nav-item .dropdown-menu .nav-item:nth-child(5n + 3) { --child-num: 3; }
.navigation.navigation-grid.desktop .nav-item .dropdown-menu .nav-item:nth-child(5n + 4) { --child-num: 4; }
.navigation.navigation-grid.desktop .nav-item .dropdown-menu .nav-item:nth-child(5n + 5) { --child-num: 5; }

/* calculate the left position of the child nav based on its parent's column times the nav item width */
.navigation.navigation-grid.desktop .dropdown-menu.level-2 {
	left: calc(-1 * var(--width-plus-gap) * var(--child-num) + var(--nav-offset));
}

@media (hover: hover) {
	.navigation.navigation-grid.desktop .nav-item a.nav-link {
		text-decoration-color: transparent;
		transition:
			background-color 0.3s ease-in-out,
			text-decoration 0.3s ease-in-out 0.3s;
	}

	.navigation.navigation-grid.desktop .nav-item.level-1.open > .nav-item-control.level-1 > .level-1-wrapper a.nav-link,
	.navigation.navigation-grid.desktop .nav-item a:hover {
		color: var(--white);
		background-color: var(--surface-1);
		text-decoration: underline;
		text-underline-offset: 3px;
		text-decoration-color: #88a;
		text-decoration-thickness: 2px;
	}

	.navigation.navigation-grid.desktop a:hover img {
		transform: scale(1.2);
	}

	.navigation.navigation-grid.desktop .nav-item:not(.level-1) > .nav-item-control:hover {
		background-color: transparent;
	}

	.navigation.navigation-grid.desktop .nav-item:not(.level-1) > .nav-item-control:not(.level-1) > a:hover {
		color: var(--white);
		text-decoration: none;
	}

	.navigation.navigation-grid.desktop .nav-item:not(.level-1).open > .nav-item-control,
	.navigation.navigation-grid.desktop .nav-item:not(.level-1) > .nav-item-control:hover {
		background-color: transparent;
	}
}
