/*--------------------------------------------------------------
# Custom primary navigation (replaces Max Mega Menu)
# Menu ID 1631 — markup in header.php, walker in inc/class-tw-nav-walker.php,
# behaviour in js/tw-navigation.js
--------------------------------------------------------------*/

:root {
	/* Change --tw-nav-font if you want the menu in a different typeface */
	--tw-nav-font: "Outfit", "Open Sans", sans-serif;
	--tw-nav-band-bg: rgba(0, 14, 66, 0.65); /* translucent band on the homepage — 0.65 keeps white menu text at 4.5:1+ even over a white photo */
	--tw-nav-band-h: 54px;
	--tw-header-h: 130px;
	--tw-header-h-scrolled: 78px;
	--tw-logo-w: 200px;
	--tw-logo-w-scrolled: 120px;
	--tw-nav-ease: cubic-bezier(0.4, 0, 0.2, 1);
	--tw-adminbar-h: 0px;
}

body.admin-bar { --tw-adminbar-h: 32px; }

@media screen and (max-width: 782px) {
	body.admin-bar { --tw-adminbar-h: 46px; }
}

@media screen and (max-width: 1100px) {
	:root {
		--tw-header-h: 84px;
		--tw-header-h-scrolled: 66px;
		--tw-logo-w: 140px;
		--tw-logo-w-scrolled: 110px;
	}
}

/* ---------- Header shell ---------- */

#masthead.tw-header {
	position: fixed;
	top: var(--tw-adminbar-h);
	left: 0;
	right: 0;
	width: 100% !important;
	height: auto;
	float: none;
	z-index: 1000;
	background-color: #fff;
	transition: background-color 0.35s var(--tw-nav-ease), box-shadow 0.35s var(--tw-nav-ease);
}

/* Homepage: transparent over the hero, with a soft shade so the white logo always reads */
#masthead.tw-header.is-home {
	background-color: transparent;
}

#masthead.tw-header.is-home::before {
	content: "";
	position: absolute;
	inset: 0 0 -40px 0;
	background: linear-gradient(to bottom, rgba(0, 15, 67, 0.5), rgba(0, 15, 67, 0)); /* 0.5 keeps the white burger icon at 3:1+ over light photos */
	pointer-events: none;
	transition: opacity 0.35s var(--tw-nav-ease);
}

/* Scrolled: sticky dark blue bar on every page */
#masthead.tw-header.is-scrolled {
	background-color: var(--tw-dark-blue);
	box-shadow: 0 6px 24px rgba(0, 15, 67, 0.25);
}

#masthead.tw-header.is-scrolled::before {
	opacity: 0;
}

/* Push content below the fixed header (homepage hero sits underneath it) */
#page.site {
	padding-top: var(--tw-header-h);
}

body.home #page.site {
	padding-top: 0;
}

.tw-header__inner {
	position: relative;
	display: flex;
	align-items: center;
	gap: clamp(30px, 6vw, 140px);
	height: var(--tw-header-h);
	padding-left: 5%;
	transition: height 0.35s var(--tw-nav-ease);
}

.is-scrolled .tw-header__inner {
	height: var(--tw-header-h-scrolled);
}

/* ---------- Logo (cross-fades blue → white) ---------- */

.tw-header__logo {
	position: relative;
	flex: 0 0 auto;
	display: block;
	line-height: 0;
	text-decoration: none !important;
}

.tw-logo {
	display: block;
	width: var(--tw-logo-w);
	max-width: none;
	height: auto;
	margin: 0;
	transition: width 0.35s var(--tw-nav-ease), opacity 0.35s var(--tw-nav-ease);
}

.is-scrolled .tw-logo {
	width: var(--tw-logo-w-scrolled);
}

.tw-logo--light {
	position: absolute;
	top: 0;
	left: 0;
	opacity: 0;
}

.is-home .tw-logo--light,
.is-scrolled .tw-logo--light {
	opacity: 1;
}

.is-home .tw-logo--dark,
.is-scrolled .tw-logo--dark {
	opacity: 0;
}

/* ---------- Shared menu reset ---------- */

.tw-nav ul,
.tw-nav li {
	list-style: none;
	margin: 0;
	padding: 0;
}

.tw-nav a {
	font-family: var(--tw-nav-font);
	text-decoration: none !important;
}

.tw-nav__toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin: 0;
	padding: 0;
	background: none;
	border: 0;
	border-radius: 0;
	color: inherit;
	cursor: pointer;
	line-height: 1;
}

.tw-nav__toggle svg {
	display: block;
	transition: transform 0.25s var(--tw-nav-ease);
}

.tw-nav li.is-open > .tw-nav__toggle svg {
	transform: rotate(180deg);
}

.tw-nav__toggle:focus-visible,
.tw-burger:focus-visible,
.tw-nav__close:focus-visible {
	outline: 3px solid var(--tw-focus-ring, #000F43);
	outline-offset: 2px;
	box-shadow: 0 0 0 2px var(--tw-focus-halo, #fff);
}

.tw-nav__panel-head,
.tw-nav__panel-foot,
.tw-burger,
.tw-nav-overlay {
	display: none;
}

/*--------------------------------------------------------------
## Desktop
--------------------------------------------------------------*/

@media screen and (min-width: 1101px) {

	.tw-nav {
		position: relative;
		flex: 1 1 auto;
		min-width: 0;
	}

	.tw-nav__menu {
		display: flex;
		justify-content: space-around;
		align-items: stretch;
		height: var(--tw-nav-band-h);
		padding: 0 2.5% !important;
		background: var(--tw-dark-blue);
		transition: background-color 0.35s var(--tw-nav-ease);
	}

	.is-home .tw-nav__menu {
		background: var(--tw-nav-band-bg);
	}

	/* Header is already dark blue once scrolled, so the band melts into it */
	.is-scrolled .tw-nav__menu {
		background: transparent;
	}

	.tw-nav__menu > li {
		position: relative;
		display: flex;
		align-items: center;
	}

	.tw-nav__menu > li > a {
		position: relative;
		display: block;
		padding: 0 6px;
		color: #fff;
		font-size: 17px;
		font-weight: 300;
		letter-spacing: 0.02em;
		line-height: var(--tw-nav-band-h);
		white-space: nowrap;
	}

	/* Gold underline on hover / current page */
	.tw-nav__menu > li > a::after {
		content: "";
		position: absolute;
		left: 6px;
		right: 6px;
		bottom: 13px;
		height: 1px;
		background: var(--tw-gold);
		transform: scaleX(0);
		transform-origin: left center;
		transition: transform 0.3s var(--tw-nav-ease);
	}

	.tw-nav__menu > li:hover > a::after,
	.tw-nav__menu > li.is-open > a::after,
	.tw-nav__menu > li > a:focus-visible::after,
	.tw-nav__menu > li.current-menu-item > a::after,
	.tw-nav__menu > li.current-menu-ancestor > a::after {
		transform: scaleX(1);
	}

	.tw-nav__menu > li > .tw-nav__toggle {
		width: 18px;
		height: 30px;
		color: rgba(255, 255, 255, 0.75);
	}

	.tw-nav__menu > li > .tw-nav__toggle svg {
		width: 10px;
		height: auto;
	}

	/* Dropdown panel */
	.tw-nav__menu > li > .sub-menu {
		position: absolute;
		top: 100%;
		left: 0;
		z-index: 20;
		min-width: 240px;
		padding: 12px 0;
		background: #fff;
		border-top: 3px solid var(--tw-gold);
		box-shadow: 0 18px 40px rgba(0, 15, 67, 0.18);
		opacity: 0;
		visibility: hidden;
		transform: translateY(8px);
		transition: opacity 0.2s var(--tw-nav-ease), transform 0.2s var(--tw-nav-ease), visibility 0s linear 0.2s;
	}

	/* Keep the last two dropdowns from running off the right edge */
	.tw-nav__menu > li:nth-last-child(-n+2) > .sub-menu {
		left: auto;
		right: 0;
	}

	.tw-nav__menu > li:hover > .sub-menu,
	.tw-nav__menu > li.is-open > .sub-menu {
		opacity: 1;
		visibility: visible;
		transform: none;
		transition-delay: 0s;
	}

	.tw-nav .sub-menu a {
		display: block;
		padding: 9px 26px;
		color: var(--tw-dark-blue);
		font-size: 15px;
		font-weight: 400;
		line-height: 1.4;
		transition: color 0.2s ease, padding-left 0.2s ease;
	}

	.tw-nav .sub-menu a:hover,
	.tw-nav .sub-menu a:focus-visible,
	.tw-nav .sub-menu .current-menu-item > a {
		color: var(--tw-blue-text, #1B6FA3); /* light blue is only 2.5:1 on the white dropdown */
		text-decoration: underline !important;
	}

	.tw-nav .sub-menu a:hover {
		padding-left: 32px;
	}

	/* Toggles inside dropdowns aren't needed on desktop */
	.tw-nav .sub-menu .tw-nav__toggle {
		display: none;
	}

	/* Mega panel: items whose children have children render as columns across the band */
	.tw-nav__menu > li.tw-nav__item--mega {
		position: static;
	}

	.tw-nav__menu > li.tw-nav__item--mega > .sub-menu,
	.tw-nav__menu > li.tw-nav__item--mega:nth-last-child(-n+2) > .sub-menu {
		left: 0;
		right: 0;
		display: grid;
		grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
		gap: 20px 36px;
		padding: 30px 40px 34px;
	}

	.tw-nav__item--mega > .sub-menu > li > a {
		margin-bottom: 8px;
		padding: 0 0 10px;
		border-bottom: 1px solid rgba(0, 15, 67, 0.12);
		font-family: "amandine", Open Sans, sans-serif;
		font-size: 20px;
		font-weight: 300;
	}

	.tw-nav__item--mega > .sub-menu > li > a:hover {
		padding-left: 0;
	}

	.tw-nav__item--mega .sub-menu .sub-menu {
		position: static;
	}

	.tw-nav__item--mega .sub-menu .sub-menu a {
		padding: 5px 0;
	}

	.tw-nav__item--mega .sub-menu .sub-menu a:hover {
		padding-left: 6px;
	}
}

/* Narrower desktops: tighten things up */
@media screen and (min-width: 1101px) and (max-width: 1350px) {
	.tw-header__inner {
		gap: 30px;
	}

	.tw-nav__menu > li > a {
		font-size: 15px;
	}
}

/*--------------------------------------------------------------
## Mobile & tablet (off-canvas panel)
--------------------------------------------------------------*/

@media screen and (max-width: 1100px) {

	/* Burger */
	.tw-burger {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 48px;
		height: 48px;
		margin: 0 calc(5% - 10px) 0 auto;
		padding: 0;
		background: none;
		border: 0;
		border-radius: 0;
		color: var(--tw-dark-blue);
		cursor: pointer;
		transition: color 0.35s var(--tw-nav-ease);
	}

	.is-home .tw-burger,
	.is-scrolled .tw-burger {
		color: #fff;
	}

	.tw-burger__lines {
		display: flex;
		flex-direction: column;
		align-items: flex-end;
		gap: 6px;
	}

	.tw-burger__lines span {
		display: block;
		width: 28px;
		height: 1.5px;
		background: currentColor;
		transition: width 0.25s var(--tw-nav-ease);
	}

	.tw-burger__lines span:nth-child(2) {
		width: 20px;
	}

	.tw-burger:hover .tw-burger__lines span:nth-child(2) {
		width: 28px;
	}

	/* Nav itself takes no room in the bar */
	.tw-nav {
		flex: 0 0 0;
		width: 0;
	}

	/* Overlay */
	.tw-nav-overlay {
		display: block;
		position: fixed;
		inset: 0;
		z-index: 1;
		background: rgba(0, 15, 67, 0.55);
		opacity: 0;
		visibility: hidden;
		transition: opacity 0.35s var(--tw-nav-ease), visibility 0s linear 0.35s;
	}

	.nav-is-open .tw-nav-overlay {
		opacity: 1;
		visibility: visible;
		transition-delay: 0s;
	}

	/* Panel */
	.tw-nav__panel {
		position: fixed;
		top: var(--tw-adminbar-h);
		right: 0;
		bottom: 0;
		z-index: 2;
		display: flex;
		flex-direction: column;
		width: min(400px, 88vw);
		background: var(--tw-dark-blue);
		box-shadow: -10px 0 40px rgba(0, 0, 0, 0.25);
		overflow-y: auto;
		overscroll-behavior: contain;
		-webkit-overflow-scrolling: touch;
		transform: translateX(100%);
		visibility: hidden;
		transition: transform 0.4s var(--tw-nav-ease), visibility 0s linear 0.4s;
	}

	.nav-is-open .tw-nav__panel {
		transform: none;
		visibility: visible;
		transition-delay: 0s;
	}

	.tw-nav__panel-head {
		display: flex;
		align-items: center;
		justify-content: space-between;
		flex: 0 0 auto;
		padding: 18px 18px 18px 28px;
		border-bottom: 1px solid rgba(255, 255, 255, 0.12);
	}

	.tw-nav__panel-logo {
		display: block;
		width: 120px;
		max-width: none;
		height: auto;
		margin: 0;
	}

	.tw-nav__close {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 44px;
		height: 44px;
		padding: 0;
		background: none;
		border: 0;
		border-radius: 0;
		color: #fff;
		cursor: pointer;
		transition: color 0.2s ease;
	}

	.tw-nav__close:hover {
		color: var(--tw-gold);
	}

	/* Menu list */
	.tw-nav__menu {
		flex: 1 0 auto;
		padding: 8px 0 !important;
	}

	.tw-nav li {
		display: flex;
		flex-wrap: wrap;
		align-items: stretch;
	}

	.tw-nav__menu > li {
		border-bottom: 1px solid rgba(255, 255, 255, 0.1);
	}

	.tw-nav a {
		flex: 1 1 0;
		display: block;
		color: #fff;
		line-height: 1.35;
		transition: color 0.2s ease;
	}

	.tw-nav__menu > li > a {
		padding: 17px 28px;
		font-size: 20px;
		font-weight: 300;
		letter-spacing: 0.02em;
	}

	.tw-nav a:hover,
	.tw-nav a:focus-visible {
		color: var(--tw-light-blue);
	}

	/* Current page marker */
	.tw-nav .current-menu-item > a,
	.tw-nav .current-menu-ancestor > a {
		color: var(--tw-gold);
		box-shadow: inset 3px 0 0 var(--tw-gold);
	}

	.tw-nav__toggle {
		flex: 0 0 56px;
		color: rgba(255, 255, 255, 0.8);
		border-left: 1px solid rgba(255, 255, 255, 0.1);
	}

	.tw-nav .tw-nav__toggle:hover,
	.tw-nav .tw-nav__toggle:focus,
	.tw-nav .tw-nav__toggle:active {
		color: var(--tw-gold);
		border-color: rgba(255, 255, 255, 0.1);
	}

	.tw-nav__toggle svg {
		width: 13px;
		height: auto;
	}

	/* Accordion sub-menus */
	.tw-nav .sub-menu {
		display: none;
		flex: 0 0 100%;
		padding: 4px 0 12px;
		background: rgba(255, 255, 255, 0.04);
	}

	.tw-nav li.is-open > .sub-menu {
		display: block;
	}

	.tw-nav .sub-menu .tw-nav__toggle {
		flex-basis: 50px;
		border-left: 0;
	}

	.tw-nav .sub-menu a {
		padding: 10px 28px 10px 44px;
		color: rgba(255, 255, 255, 0.85);
		font-size: 16px;
		font-weight: 300;
	}

	.tw-nav .sub-menu .sub-menu {
		padding: 0 0 6px;
		background: none;
	}

	.tw-nav .sub-menu .sub-menu a {
		padding-left: 60px;
		font-size: 15px;
		color: rgba(255, 255, 255, 0.7);
	}

	.tw-nav .sub-menu .current-menu-item > a,
	.tw-nav .sub-menu .current-menu-ancestor > a {
		box-shadow: none;
	}

	/* Panel footer */
	.tw-nav__panel-foot {
		display: block;
		flex: 0 0 auto;
		padding: 28px 28px calc(32px + env(safe-area-inset-bottom, 0px));
	}

	.tw-nav__tagline {
		margin: 0 0 18px;
		color: var(--tw-light-blue);
		font-family: "amandine", Open Sans, sans-serif;
		font-size: 19px;
		font-style: italic;
		line-height: 1.4;
	}

	.tw-nav__signup {
		display: inline-block;
		padding: 12px 48px;
		background: var(--tw-gold);
		border: 1px solid var(--tw-gold);
		border-radius: 0;
		color: var(--tw-dark-blue); /* white on gold is only 2.1:1 */
		font-family: var(--tw-nav-font);
		font-size: 16px;
		cursor: pointer;
		transition: background-color 0.3s ease, color 0.3s ease;
	}

	.tw-nav__signup:hover,
	.tw-nav__signup:focus-visible {
		background: transparent;
		color: var(--tw-gold);
	}

	/* Lock page scroll while the panel is open */
	body.tw-nav-open {
		overflow: hidden;
	}
}

@media (prefers-reduced-motion: reduce) {
	#masthead.tw-header,
	#masthead.tw-header *,
	#masthead.tw-header *::before,
	#masthead.tw-header *::after {
		transition-duration: 0.01ms !important;
	}
}
