/**
 * Theme-aware navigation enhancement.
 *
 * Selectors cover WordPress block navigation and conventional classic-theme
 * header markup while leaving the menu content under normal WordPress control.
 */

:root {
	--jbch-nav-blue: #0754b8;
	--jbch-nav-blue-dark: #063f83;
	--jbch-nav-cyan: #16a9ea;
	--jbch-nav-ink: #17324d;
	--jbch-nav-white: #ffffff;
	--jbch-nav-border: rgba(7, 84, 184, .12);
	--jbch-nav-shadow: 0 12px 35px rgba(18, 50, 83, .11);
}

/* Modern sticky shell for block and classic themes. */
header.wp-block-template-part,
.site-header,
#masthead,
.main-header-bar {
	background: rgba(255, 255, 255, .94);
	border-bottom: 1px solid var(--jbch-nav-border);
	box-shadow: var(--jbch-nav-shadow);
	position: sticky;
	top: 0;
	z-index: 999;
}

@supports ((-webkit-backdrop-filter: blur(14px)) or (backdrop-filter: blur(14px))) {
	header.wp-block-template-part,
	.site-header,
	#masthead,
	.main-header-bar {
		-webkit-backdrop-filter: saturate(150%) blur(14px);
		backdrop-filter: saturate(150%) blur(14px);
		background: rgba(255, 255, 255, .84);
	}
}

body.admin-bar header.wp-block-template-part,
body.admin-bar .site-header,
body.admin-bar #masthead,
body.admin-bar .main-header-bar {
	top: 32px;
}

/* Comfortable proportions without forcing a particular theme width. */
header.wp-block-template-part > .wp-block-group,
.site-header .site-header-inner,
.site-header .container,
#masthead .site-header-inner,
#masthead .container,
.main-header-bar .ast-container {
	min-height: 76px;
}

header.wp-block-template-part .wp-block-site-logo img,
.site-header .custom-logo,
#masthead .custom-logo {
	height: auto;
	max-height: 64px;
	width: auto;
}

/* Desktop menu rhythm and typography. */
.wp-block-navigation .wp-block-navigation__container,
.main-navigation .menu,
.primary-navigation .menu,
#site-navigation .menu {
	align-items: center;
	gap: clamp(.25rem, 1.4vw, 1.15rem);
}

.wp-block-navigation .wp-block-navigation-item__content,
.main-navigation .menu > li > a,
.primary-navigation .menu > li > a,
#site-navigation .menu > li > a {
	border-radius: 999px;
	color: var(--jbch-nav-ink);
	font-size: .95rem;
	font-weight: 700;
	letter-spacing: .01em;
	line-height: 1.25;
	padding: .7rem .9rem;
	text-decoration: none;
	transition: background-color .2s ease, color .2s ease, transform .2s ease;
}

.wp-block-navigation .wp-block-navigation-item__content:hover,
.wp-block-navigation .wp-block-navigation-item__content:focus-visible,
.main-navigation .menu > li > a:hover,
.main-navigation .menu > li > a:focus-visible,
.primary-navigation .menu > li > a:hover,
.primary-navigation .menu > li > a:focus-visible,
#site-navigation .menu > li > a:hover,
#site-navigation .menu > li > a:focus-visible {
	background: rgba(22, 169, 234, .1);
	color: var(--jbch-nav-blue);
	outline: none;
	transform: translateY(-1px);
}

.wp-block-navigation .current-menu-item > .wp-block-navigation-item__content,
.wp-block-navigation .current-menu-ancestor > .wp-block-navigation-item__content,
.main-navigation .current-menu-item > a,
.main-navigation .current-menu-ancestor > a,
.primary-navigation .current-menu-item > a,
#site-navigation .current-menu-item > a {
	background: rgba(7, 84, 184, .09);
	color: var(--jbch-nav-blue-dark);
}

/* Make an explicitly named Contact or Book destination read as the CTA. */
.wp-block-navigation a[href*="contact-book"],
.wp-block-navigation a[href*="book-now"],
.main-navigation a[href*="contact-book"],
.main-navigation a[href*="book-now"],
.primary-navigation a[href*="contact-book"],
.primary-navigation a[href*="book-now"],
#site-navigation a[href*="contact-book"],
#site-navigation a[href*="book-now"] {
	background: linear-gradient(135deg, var(--jbch-nav-blue), var(--jbch-nav-cyan));
	box-shadow: 0 8px 20px rgba(7, 84, 184, .2);
	color: var(--jbch-nav-white);
	padding-inline: 1.2rem;
}

.wp-block-navigation a[href*="contact-book"]:hover,
.wp-block-navigation a[href*="contact-book"]:focus-visible,
.wp-block-navigation a[href*="book-now"]:hover,
.wp-block-navigation a[href*="book-now"]:focus-visible,
.main-navigation a[href*="contact-book"]:hover,
.main-navigation a[href*="contact-book"]:focus-visible,
.main-navigation a[href*="book-now"]:hover,
.main-navigation a[href*="book-now"]:focus-visible,
.primary-navigation a[href*="contact-book"]:hover,
.primary-navigation a[href*="contact-book"]:focus-visible,
.primary-navigation a[href*="book-now"]:hover,
.primary-navigation a[href*="book-now"]:focus-visible,
#site-navigation a[href*="contact-book"]:hover,
#site-navigation a[href*="contact-book"]:focus-visible,
#site-navigation a[href*="book-now"]:hover,
#site-navigation a[href*="book-now"]:focus-visible {
	background: linear-gradient(135deg, var(--jbch-nav-blue-dark), var(--jbch-nav-blue));
	color: var(--jbch-nav-white);
	transform: translateY(-2px);
}

/* Refined dropdowns for both navigation systems. */
.wp-block-navigation .wp-block-navigation__submenu-container,
.main-navigation .sub-menu,
.primary-navigation .sub-menu,
#site-navigation .sub-menu {
	background: rgba(255, 255, 255, .98);
	border: 1px solid var(--jbch-nav-border);
	border-radius: 16px;
	box-shadow: 0 18px 45px rgba(18, 50, 83, .15);
	min-width: 220px;
	overflow: hidden;
	padding: .5rem;
}

.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content,
.main-navigation .sub-menu a,
.primary-navigation .sub-menu a,
#site-navigation .sub-menu a {
	border-radius: 10px;
	box-sizing: border-box;
	color: var(--jbch-nav-ink);
	display: block;
	font-weight: 650;
	padding: .72rem .85rem;
	width: 100%;
}

/* Sleek block-navigation hamburger. */
.wp-block-navigation__responsive-container-open {
	align-items: center;
	background: linear-gradient(135deg, var(--jbch-nav-blue), var(--jbch-nav-cyan));
	border: 0;
	border-radius: 15px;
	box-shadow: 0 9px 22px rgba(7, 84, 184, .24);
	color: var(--jbch-nav-white);
	display: flex;
	height: 46px;
	justify-content: center;
	padding: 0;
	transition: box-shadow .2s ease, transform .2s ease;
	width: 46px;
}

.wp-block-navigation__responsive-container-open:hover,
.wp-block-navigation__responsive-container-open:focus-visible {
	box-shadow: 0 12px 27px rgba(7, 84, 184, .32);
	color: var(--jbch-nav-white);
	outline: 3px solid rgba(22, 169, 234, .22);
	outline-offset: 3px;
	transform: translateY(-1px);
}

.wp-block-navigation__responsive-container-open svg {
	height: 25px;
	stroke-width: 1.8;
	width: 25px;
}

/* Full-screen drawer with a calm branded backdrop. */
.wp-block-navigation__responsive-container.is-menu-open {
	animation: jbch-menu-enter .28s cubic-bezier(.2, .75, .25, 1) both;
	background:
		radial-gradient(circle at 90% 10%, rgba(255, 189, 74, .25), transparent 28%),
		radial-gradient(circle at 8% 90%, rgba(22, 169, 234, .17), transparent 32%),
		linear-gradient(155deg, #ffffff 0%, #eef8ff 100%);
	color: var(--jbch-nav-ink);
	padding: max(1.25rem, env(safe-area-inset-top)) max(1.25rem, env(safe-area-inset-right)) max(1.5rem, env(safe-area-inset-bottom)) max(1.25rem, env(safe-area-inset-left));
}

@keyframes jbch-menu-enter {
	from {
		opacity: 0;
		transform: translateY(-14px) scale(.985);
	}
	to {
		opacity: 1;
		transform: translateY(0) scale(1);
	}
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog {
	margin: 0 auto;
	max-width: 620px;
	width: 100%;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	box-sizing: border-box;
	padding-top: clamp(4.75rem, 14vh, 7rem);
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	align-items: stretch;
	gap: .65rem;
	width: 100%;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	align-items: stretch;
	box-sizing: border-box;
	width: 100%;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	background: rgba(255, 255, 255, .72);
	border: 1px solid rgba(7, 84, 184, .09);
	border-radius: 15px;
	box-shadow: 0 6px 20px rgba(18, 50, 83, .045);
	box-sizing: border-box;
	color: var(--jbch-nav-ink);
	font-size: clamp(1.08rem, 4.5vw, 1.3rem);
	font-weight: 750;
	justify-content: space-between;
	padding: 1rem 1.1rem;
	width: 100%;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:focus-visible {
	background: var(--jbch-nav-white);
	border-color: rgba(7, 84, 184, .22);
	color: var(--jbch-nav-blue);
	transform: translateX(3px);
}

.wp-block-navigation__responsive-container.is-menu-open .current-menu-item > .wp-block-navigation-item__content {
	background: rgba(7, 84, 184, .09);
	border-color: rgba(7, 84, 184, .18);
	color: var(--jbch-nav-blue-dark);
}

.wp-block-navigation__responsive-container.is-menu-open a[href*="contact-book"],
.wp-block-navigation__responsive-container.is-menu-open a[href*="book-now"] {
	background: linear-gradient(135deg, var(--jbch-nav-blue), var(--jbch-nav-cyan));
	border: 0;
	box-shadow: 0 10px 25px rgba(7, 84, 184, .22);
	color: var(--jbch-nav-white);
	justify-content: center;
	margin-top: .35rem;
	text-align: center;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	background: transparent;
	border: 0;
	box-shadow: none;
	gap: .4rem;
	min-width: 0;
	padding: .45rem 0 0 .8rem;
	width: 100%;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	background: rgba(255, 255, 255, .5);
	font-size: 1rem;
	font-weight: 650;
	padding: .78rem .95rem;
}

.wp-block-navigation__responsive-container-close {
	align-items: center;
	background: rgba(255, 255, 255, .9);
	border: 1px solid var(--jbch-nav-border);
	border-radius: 14px;
	box-shadow: 0 7px 20px rgba(18, 50, 83, .1);
	color: var(--jbch-nav-blue-dark);
	display: flex;
	height: 44px;
	justify-content: center;
	padding: 0;
	transition: background-color .2s ease, transform .2s ease;
	width: 44px;
}

.wp-block-navigation__responsive-container-close:hover,
.wp-block-navigation__responsive-container-close:focus-visible {
	background: var(--jbch-nav-white);
	color: var(--jbch-nav-blue);
	outline: 3px solid rgba(22, 169, 234, .18);
	outline-offset: 3px;
	transform: rotate(4deg);
}

.wp-block-navigation__responsive-container-close svg {
	height: 23px;
	width: 23px;
}

/* Common classic-theme hamburger controls. */
.menu-toggle,
.main-navigation .menu-toggle,
.ast-mobile-menu-trigger-minimal,
.navbar-toggle {
	background: linear-gradient(135deg, var(--jbch-nav-blue), var(--jbch-nav-cyan));
	border: 0;
	border-radius: 15px;
	box-shadow: 0 9px 22px rgba(7, 84, 184, .24);
	color: var(--jbch-nav-white);
	min-height: 46px;
	min-width: 46px;
	padding: .65rem;
}

.menu-toggle:hover,
.menu-toggle:focus-visible,
.main-navigation .menu-toggle:hover,
.main-navigation .menu-toggle:focus-visible,
.ast-mobile-menu-trigger-minimal:hover,
.ast-mobile-menu-trigger-minimal:focus-visible,
.navbar-toggle:hover,
.navbar-toggle:focus-visible {
	background: linear-gradient(135deg, var(--jbch-nav-blue-dark), var(--jbch-nav-blue));
	color: var(--jbch-nav-white);
	outline: 3px solid rgba(22, 169, 234, .2);
	outline-offset: 3px;
}

@media (max-width: 782px) {
	body.admin-bar header.wp-block-template-part,
	body.admin-bar .site-header,
	body.admin-bar #masthead,
	body.admin-bar .main-header-bar {
		top: 46px;
	}

	header.wp-block-template-part > .wp-block-group,
	.site-header .site-header-inner,
	.site-header .container,
	#masthead .site-header-inner,
	#masthead .container,
	.main-header-bar .ast-container {
		min-height: 66px;
	}

	header.wp-block-template-part .wp-block-site-logo img,
	.site-header .custom-logo,
	#masthead .custom-logo {
		max-height: 54px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.wp-block-navigation *,
	.main-navigation *,
	.primary-navigation *,
	#site-navigation * {
		animation: none !important;
		transition: none !important;
	}
}
