/* GENERAL / LAYOUT */
#header {
	position: sticky;
	z-index: 10;
	top: 0;
	width: 100%;
	padding-block: var(--header-padding-block);
	background-color: var(--color-primary);
	color: var(--color-primary-content);

	.header__inner {
		max-width: var(--width-content);
		margin-inline: auto;
		display: flex;
		justify-content: space-between;
		align-items: center;

		@media screen and (max-width: 1024px) {
			margin-inline: var(--gutter-mobile);
		}

		/* LOGO */
		.header__logo {
			img {
				height: var(--header-logo-height);
				width: auto;
			}

			&.header__logo--noimg {
				font-size: 1.125rem;
				font-weight: 600;
				color: var(--color-primary-content);

				&:hover {
					color: var(--color-primary-content-hover);
				}
			}
		}

		/* NAVIGATION */
		.nav__menu {
			@media screen and (max-width: 1024px) {
				padding-block-end: 4rem;
				order: 1;
			}

			ul {
				list-style: none;
				display: flex;
				justify-content: center;
				align-items: center;
				gap: 0.3rem;
				padding-left: 0;

				@media screen and (max-width: 1024px) {
					flex-direction: column;
				}

				.menu-item-main {
					display: flex;
					position: relative;

					border-radius: 5px;

					background-color: transparent;

					transition:
						color ease 0.3s,
						background-color ease 0.3s;

					@media screen and (max-width: 1024px) {
						flex-wrap: wrap;
						justify-content: center;

						width: 100%;
					}

					> a,
					> span {
						text-decoration: none;
						font-weight: 600;

						color: var(--color-primary-content);

						padding-inline-start: 1rem;
						padding-inline-end: 0.4rem;
						padding-block: 0.7rem;
					}

					&:not(.menu-item-has-children) {
						> a,
						> span {
							padding-inline-end: 1rem;
						}
					}

					> .header__toggle-submenu {
						cursor: pointer;

						padding: 0;
						padding-inline-start: 0.4rem;
						padding-inline-end: 1rem;

						border: 0;
						background-color: transparent;
						color: var(--color-primary-content);
					}

					&:has(> a:hover),
					&:has(> span:hover),
					&:has(> button:hover),
					&.current-menu-item,
					&.submenu-open {
						background-color: var(--color-primary-content);

						@media screen and (max-width: 1024px) {
							background-color: var(--color-primary);
						}

						> a,
						> span,
						> button {
							/* this feels kinky... */
							color: var(--color-primary);

							@media screen and (max-width: 1024px) {
								color: var(--color-primary-content);
							}
						}

						> button > svg path {
							stroke: var(--color-primary);

							@media screen and (max-width: 1024px) {
								stroke: var(--color-primary-content);
							}
						}
					}

					> a:focus,
					> span:focus {
						background-color: var(--color-primary-content);
						color: var(--color-primary) !important;

						border-radius: 5px;

						padding-inline-start: 0.4rem;
						margin-inline-start: 0.6rem;
					}

					&:not(.menu-item-has-children) > a:focus,
					&:not(.menu-item-has-children) > span:focus {
						padding-inline-start: 1rem;
						padding-inline-end: 1rem;

						margin-inline: 0;
					}

					> button.header__toggle-submenu:focus {
						background-color: var(--color-primary-content);
						color: var(--color-primary);

						padding-inline-end: 0.4rem;
						margin-inline-end: 0.6rem;

						> svg > path {
							stroke: var(--color-primary);

							@media screen and (max-width: 1024px) {
								stroke: var(--color-primary);
							}
						}
					}
				}

				.sub-menu {
					display: none;

					position: absolute;
					top: 100%;
					left: 0;

					width: fit-content;
					min-width: 10rem;
					padding-bottom: 1rem;
					padding-top: 1rem;

					flex-direction: column;
					align-items: flex-start;
					opacity: 0;

					list-style: none;
					margin-block-start: 0.5rem;

					border-radius: 5px;

					color: var(--color-primary);
					background-color: var(--color-primary-content);

					transition: opacity ease 0.3s;

					@media screen and (max-width: 1024px) {
						position: static;

						justify-content: center;
						flex-basis: 100%;
						flex-shrink: 0;

						color: var(--color-primary-content);
						background-color: var(--color-primary);
					}

					.submenu-open & {
						display: flex;
						opacity: 1;
					}

					li {
						line-height: 1;

						@media screen and (max-width: 1024px) {
							width: fit-content;
							margin-inline: auto;
						}

						a,
						span {
							display: inline-block;
							text-decoration: none;
							font-weight: 600;
							width: 100%;

							padding: 0.7rem 1rem;

							@media screen and (max-width: 1024px) {
								font-weight: 400;

								color: var(--color-primary-content);
							}

							&:hover {
								text-decoration: underline; /* TODO: re-think this ugly style */
							}
						}
					}
				}
			}
		}

		/* MOBILE GROUPING */
		.header__mobile {
			display: flex;
			justify-content: flex-end;
			gap: 2rem;

			@media screen and (max-width: 1024px) {
				display: none;

				flex-direction: column;
				justify-content: flex-start;
				align-items: center;

				position: absolute;
				left: 0;
				top: 100%;

				height: calc(
					100dvh - var(--header-logo-height) - (var(--header-padding-block) * 2)
				);
				width: 100vw;

				padding-block: 2rem;
				padding-inline: var(--gutter-mobile);

				background-color: var(--color-primary);
			}

			&.header__mobile--centered {
				width: 100%;
			}
		}

		/* MOBILE TOGGLE */
		.header__toggle-mobile {
			display: none;

			background-color: transparent;
			padding: 0;
			border: none;

			/* WIP VALUES */
			font-weight: bold;
			color: var(--color-primary-content);

			@media screen and (max-width: 1024px) {
				display: block;
			}

			> svg {
				#opened {
					display: none;
				}
			}

			&.open {
				> svg #opened {
					display: block;
				}

				> svg #closed {
					display: none;
				}
			}
		}

		/* SEARCH FORM */
		.nav__search {
			display: flex;

			padding: 0.25rem 0.75rem;

			border: solid 2px var(--color-primary-content);
			border-radius: 5px;

			@media screen and (max-width: 1024px) {
				width: 75%;
				order: 0;
			}

			input {
				color: currentColor;
				background-color: transparent;
				border: none;
				padding: 0.25em;
				width: 10.25rem;

				@media screen and (max-width: 1024px) {
					width: unset;
					flex-basis: calc(100% - 2rem);
				}

				&::placeholder {
					color: var(--color-primary-content);
				}
			}

			#search__submit {
				cursor: pointer;
				display: flex;
				justify-content: center;
				align-items: center;

				width: 2rem;
				height: 2rem;

				background-color: transparent;

				padding: 0;

				border: none;
			}
		}
	}

	.admin-bar & {
		top: var(--wp-admin--admin-bar--height);

		@media only screen and (max-width: 1024px) {
			top: 0;
		}
	}
}
/* HEADER LAYOUT: LOGO CENTER, SPLIT MENU */

.header__nav--centered {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 7rem;

	width: 100%;

	padding-block: var(--header-padding-block);

	@media screen and (max-width: 1024px) {
		flex-direction: column;
		gap: 0;
	}

	.menu-item {
		/* padding-block: 0.7rem; */
		/* padding-inline: 1rem; */
		border-radius: 5px;
		transition: background-color ease 0.3s;
	}

	.menu-item:hover {
		background-color: var(--color-primary-content);
	}

	.menu-item:hover a {
		color: var(--color-primary);
	}
}

.header__nav-left,
.header__nav-right {
	flex: 1 1 0;
	display: flex;

	.menu-item a {
		/* color: var(--color-primary-content); */
		font-weight: 600;
		text-decoration: none;
	}

	.menu-item.current-menu-item a {
		background-color: var(--color-primary-content);
		color: var(--color-primary);
		border-radius: 5px;
		font-weight: 700;
	}
}

.header__nav-left {
	justify-content: flex-end;
}

.header__nav-center {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: center;

	@media screen and (max-width: 1024px) {
		display: none;
	}
}

.header__nav-center img {
	height: var(--header-logo-height);
	width: auto;
}

.header__nav-left ul,
.header__nav-right ul {
	display: flex;
	align-items: center;
	gap: 2rem;
	list-style: none;
	margin: 0;
	padding: 0;

	@media screen and (max-width: 1024px) {
		flex-direction: column;
		gap: 0;
	}
}

.header__nav-left ul {
	justify-content: flex-end;
}
.header__nav-right ul {
	justify-content: flex-start;
}

.header__inner:has(.header__nav.header__nav--centered) {
	justify-content: center !important;

	@media screen and (max-width: 1024px) {
		justify-content: space-between !important;
	}
}

.header__inner:has(.header__nav.header__nav--centered) .header__logo--mobile {
	display: none;

	@media screen and (max-width: 1024px) {
		display: block;
	}
}
