/*
 * Site Header — TWO independent layouts swapped by a media query:
 *   .greengrass-site-header__desktop  → full bar (brand + inline nav + CTA), shown > 1280px
 *   .greengrass-site-header__mobile   → compact bar (logo + name + hamburger), shown <= 1280px
 *   .greengrass-site-header__drawer   → off-canvas nav opened by the hamburger
 * No shared flex between the two, so neither can break the other.
 */

html { overflow-x: clip; } /* kill sideways scroll from the off-canvas drawer */

.greengrass-site-header {
	background: #1f3a3d;
	color: #fff;
	width: 100%;
	font-family: 'Polin', sans-serif;
	/* Stacking context above the following sections so the nav dropdown isn't covered by the hero. */
	position: relative;
	z-index: 100;
}

.greengrass-site-header.is-sticky {
	position: sticky;
	top: 0;
	z-index: 200;
	box-shadow: 0 1px 0 rgba(255, 255, 255, 0.06);
}

/* The desktop dropdown spills DOWN out of the header bar. Two things must hold for it to show:
 *   1. Nothing in the wrapper chain may clip it (the sticky Elementor container defaults to
 *      overflow:hidden, which CUTS the dropdown off at the bar's edge — this is the real bug).
 *   2. The header's wrapper must out-stack the section below it (the hero).
 * Force both on every Elementor wrapper that holds the header. (:has — all current browsers.) */
.elementor-section:has(.greengrass-site-header),
.elementor-container:has(.greengrass-site-header),
.elementor-column:has(.greengrass-site-header),
.elementor-widget-wrap:has(.greengrass-site-header),
.e-con:has(.greengrass-site-header),
.e-con-inner:has(.greengrass-site-header),
.e-parent:has(.greengrass-site-header),
.e-child:has(.greengrass-site-header),
.elementor-sticky:has(.greengrass-site-header),
.elementor-widget-greengrass-site-header,
.elementor-widget-greengrass-site-header > .elementor-widget-container {
	position: relative;
	z-index: 999 !important;
	overflow: visible !important;
}

/* Shared brand pieces */
.greengrass-site-header__brand {
	display: flex;
	align-items: center;
	gap: 10px;
	color: inherit;
	text-decoration: none;
}

.greengrass-site-header__brand-image {
	width: auto;
	flex: 0 0 auto;
}

.greengrass-site-header__brand-text {
	display: flex;
	flex-direction: column;
	line-height: 1.1;
	min-width: 0;
}

.greengrass-site-header__brand-wordmark {
	font-size: clamp(22px, 2.4vw, 44px);
	font-weight: 700;
	line-height: 1.2;
	white-space: nowrap;
	color: #F8FFFD;
}

.greengrass-site-header__brand-tagline {
	font-size: clamp(14px, 1.4vw, 24px);
	font-weight: 400;
	margin-block-start: 6px;
	line-height: 1.2;
	white-space: nowrap;
	color: #F8FFFD;
}

.greengrass-site-header__brand:hover .greengrass-site-header__brand-wordmark,
.greengrass-site-header__brand:focus .greengrass-site-header__brand-wordmark,
.greengrass-site-header__brand:hover .greengrass-site-header__brand-tagline,
.greengrass-site-header__brand:focus .greengrass-site-header__brand-tagline {
	color: #F8FFFD;
}

/* ===== DESKTOP BAR ===== */
.greengrass-site-header__desktop {
	max-width: 1920px;
	margin-inline: auto;
	padding: clamp(16px, 1.5vw, 29px) clamp(20px, 2vw, 48px);
	display: flex;
	align-items: center;
	gap: clamp(16px, 1.8vw, 32px);
	min-height: 110px;
}

.greengrass-site-header__desktop .greengrass-site-header__brand-image {
	height: clamp(40px, 3.4vw, 48px);
}

.greengrass-site-header__nav {
	display: flex;
	align-items: center;
	gap: clamp(10px, 1.2vw, 20px);
	margin-inline-start: auto;
}

.greengrass-site-header__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	align-items: center;
	gap: clamp(8px, 1.1vw, 16px);
}

/* Each item is a flex row so the "|" separator + label + caret all sit on one centered line. */
.greengrass-site-header__item {
	display: inline-flex;
	align-items: center;
}

.greengrass-site-header__item a {
	color: #F8FFFD;
	text-decoration: none;
	font-size: clamp(15px, 1.4vw, 24px);
	font-weight: 400;
	line-height: 1.2;
	white-space: nowrap;
	transition: color 0.15s ease;
}

.greengrass-site-header__item a:hover { color: #fff; }

.greengrass-site-header__item.is-current a {
	color: #fff;
	font-weight: 700;
	border-block-end: 2px solid var(--gg-color-cta, #16a34a);
}

.greengrass-site-header__item + .greengrass-site-header__item::before {
	content: "|";
	color: rgba(255, 255, 255, 0.28);
	margin-inline-end: clamp(8px, 1.1vw, 16px);
	line-height: 1;
}

.greengrass-site-header__cta {
	flex-shrink: 0;
	white-space: nowrap;
}

/* ── Desktop dropdown sub-menu ─────────────────────── */
.greengrass-site-header__item.has-children { position: relative; }

.greengrass-site-header__item.has-children > a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.greengrass-site-header__caret {
	width: 11px;
	height: auto;
	flex-shrink: 0;
	transition: transform 0.2s ease;
}

.greengrass-site-header__item.has-children:hover > a .greengrass-site-header__caret,
.greengrass-site-header__item.has-children:focus-within > a .greengrass-site-header__caret {
	transform: rotate(180deg);
}

.greengrass-site-header__submenu {
	list-style: none;
	margin: 0;
	padding: 8px 0;
	position: absolute;
	inset-inline-start: 0;
	top: calc(100% + 10px);
	min-width: 250px;
	background: #25464a;
	border-radius: 12px;
	box-shadow: 0 16px 40px rgba(0, 0, 0, 0.28);
	opacity: 0;
	visibility: hidden;
	transform: translateY(6px);
	transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease;
	z-index: 80;
}

/* Hover bridge over the gap so moving to the dropdown doesn't drop the hover. */
.greengrass-site-header__submenu::before {
	content: "";
	position: absolute;
	inset-inline: 0;
	top: -10px;
	height: 10px;
}

.greengrass-site-header__item.has-children:hover > .greengrass-site-header__submenu,
.greengrass-site-header__item.has-children:focus-within > .greengrass-site-header__submenu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.greengrass-site-header__submenu li + li {
	border-block-start: 1px solid rgba(255, 255, 255, 0.07);
}

.greengrass-site-header__submenu a {
	display: block;
	padding: 11px 20px;
	font-size: clamp(14px, 1.1vw, 17px);
	font-weight: 400;
	line-height: 1.3;
	color: #F8FFFD;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color 0.15s ease, color 0.15s ease;
}

.greengrass-site-header__submenu a:hover {
	background: rgba(255, 255, 255, 0.08);
	color: #fff;
}

/* The "|" separator must not draw before a submenu item. */
.greengrass-site-header__submenu li + li::before { content: none; }

/* ===== LAPTOP RANGE: scale the desktop bar down so the long brand + nav + CTA never crowd =====
 * Ceiling is 1900 (not 1700) to close the 1700–1864 gap where full-size fonts ran without enough
 * width and the nav separators wrapped. Only ~1901–1920 keeps full size; the 1280 swap is below. */
@media (max-width: 1900px) {
	.greengrass-site-header__brand-wordmark { font-size: clamp(22px, 2vw, 34px); }
	.greengrass-site-header__brand-tagline  { font-size: clamp(13px, 1.1vw, 18px); }
	.greengrass-site-header__item a         { font-size: clamp(14px, 1.15vw, 18px); }
	.greengrass-site-header__desktop        { gap: clamp(12px, 1.3vw, 22px); }
	.greengrass-site-header__nav            { gap: clamp(8px, 1vw, 14px); }
	.greengrass-site-header__list           { gap: clamp(6px, 0.8vw, 12px); }
}

@media (max-width: 1440px) {
	.greengrass-site-header__brand-wordmark { font-size: 24px; }
	.greengrass-site-header__brand-tagline  { font-size: 13px; }
	.greengrass-site-header__item a         { font-size: 14px; }
	.greengrass-site-header__caret          { width: 9px; }
	.greengrass-site-header__desktop        { padding-inline: 16px; min-height: 88px; gap: 12px; }
	.greengrass-site-header__nav            { gap: 8px; }
	.greengrass-site-header__list           { gap: 6px; }
	.greengrass-site-header__item + .greengrass-site-header__item::before { margin-inline-end: 6px; }
}

/* Mid band: 6-item nav + dropdowns crowd the brand here under the loose ≤1900 clamp; tighten it.
 * min-width 1441 so it never overlaps the ≤1440 band above. */
@media (min-width: 1441px) and (max-width: 1720px) {
	.greengrass-site-header__brand-wordmark { font-size: 28px; }
	.greengrass-site-header__brand-tagline  { font-size: 14px; }
	.greengrass-site-header__item a          { font-size: 15px; }
	.greengrass-site-header__caret           { width: 10px; }
	.greengrass-site-header__desktop         { gap: 16px; }
	.greengrass-site-header__nav             { gap: 10px; }
	.greengrass-site-header__list            { gap: 8px; }
	.greengrass-site-header__item + .greengrass-site-header__item::before { margin-inline-end: 8px; }
}

/* Large/ultra-wide: the content is capped at 1920px (desktop bar max-width) but the vw clamps keep
 * ballooning past it, so the nav crowds. Lock to comfortable fixed sizes for everything ≥1721. */
@media (min-width: 1721px) {
	.greengrass-site-header__brand-wordmark { font-size: 32px; }
	.greengrass-site-header__brand-tagline  { font-size: 15px; }
	.greengrass-site-header__item a          { font-size: 17px; }
	.greengrass-site-header__caret           { width: 11px; }
	.greengrass-site-header__desktop         { gap: 24px; }
	.greengrass-site-header__nav             { gap: 14px; }
	.greengrass-site-header__list            { gap: 12px; }
	.greengrass-site-header__item + .greengrass-site-header__item::before { margin-inline-end: 12px; }
}

/* ===== MOBILE BAR (hidden on desktop) ===== */
.greengrass-site-header__mobile { display: none; }

.greengrass-site-header__brand-name {
	font-size: 18px;
	font-weight: 700;
	color: #F8FFFD;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* ===== MOBILE DRAWER (hidden on desktop) ===== */
.greengrass-site-header__drawer { display: none; }

/* ===== SWAP: hamburger layout <= 1280px ===== */
@media (max-width: 1280px) {
	.greengrass-site-header__desktop { display: none; }

	/* Compact bar: logo + name on the start, hamburger on the end. Fixed height — can't grow. */
	.greengrass-site-header__mobile {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		height: 64px;
		padding-inline: clamp(16px, 4vw, 24px);
	}

	.greengrass-site-header__brand--mobile {
		flex: 1 1 auto;
		min-width: 0; /* name truncates; logo holds */
		overflow: hidden;
	}

	.greengrass-site-header__brand--mobile .greengrass-site-header__brand-image {
		height: 40px;
	}

	/* Hamburger — locked size + transparent, immune to the theme's button styles. */
	.greengrass-site-header__toggle,
	.greengrass-site-header__toggle:hover,
	.greengrass-site-header__toggle:focus,
	.greengrass-site-header__toggle:active {
		display: flex;
		flex-direction: column;
		justify-content: space-between;
		flex: 0 0 auto;
		box-sizing: border-box;
		width: 40px !important;
		height: 40px !important;
		min-width: 0 !important;
		min-height: 0 !important;
		max-width: none !important;
		max-height: none !important;
		padding: 8px !important;
		background: transparent !important;
		border: 0 !important;
		box-shadow: none !important;
		transform: none !important;
		cursor: pointer;
		color: #F8FFFD !important;
		position: relative;
		z-index: 70; /* above the drawer so the X can close it */
	}

	.greengrass-site-header__toggle:focus-visible {
		outline: 2px solid #F8FFFD;
		outline-offset: 2px;
	}

	.greengrass-site-header__toggle span {
		display: block;
		width: 100%;
		height: 2px;
		background: #F8FFFD !important;
		border-radius: 2px;
		transition: transform 0.2s ease, opacity 0.2s ease;
	}

	/* Off-canvas drawer (slides from the visual-left = logical-end in RTL). */
	.greengrass-site-header__drawer {
		display: flex;
		flex-direction: column;
		position: fixed;
		top: 0;
		left: 0;
		height: 100dvh;
		width: min(320px, 82vw);
		background: #1f3a3d;
		padding: 84px 24px 24px;
		gap: 2px;
		transform: translateX(-100%);
		transition: transform 0.25s ease;
		box-shadow: 8px 0 24px rgba(0, 0, 0, 0.25);
		z-index: 60;
		overflow-y: auto;
	}

	.greengrass-site-header.is-open .greengrass-site-header__drawer {
		transform: translateX(0);
	}

	.greengrass-site-header__drawer-list {
		list-style: none;
		margin: 0;
		padding: 0;
		display: flex;
		flex-direction: column;
	}

	.greengrass-site-header__drawer-list a {
		display: block;
		color: #F8FFFD;
		text-decoration: none;
		font-size: 17px;
		padding-block: 14px;
		border-block-end: 1px solid rgba(255, 255, 255, 0.08);
	}

	/* ── Drawer sub-menu accordion ── */
	.greengrass-site-header__drawer-item {
		border-block-end: 1px solid rgba(255, 255, 255, 0.08);
	}

	.greengrass-site-header__drawer-row {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 8px;
	}

	.greengrass-site-header__drawer-row a {
		flex: 1 1 auto;
		border-block-end: 0;
	}

	.greengrass-site-header__drawer-toggle {
		flex: 0 0 auto;
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 40px;
		height: 48px;
		padding: 0;
		background: transparent;
		border: 0;
		color: #F8FFFD;
		cursor: pointer;
	}

	.greengrass-site-header__drawer-toggle svg { transition: transform 0.2s ease; }

	.greengrass-site-header__drawer-item.is-open .greengrass-site-header__drawer-toggle svg {
		transform: rotate(180deg);
	}

	.greengrass-site-header__drawer-sub {
		list-style: none;
		margin: 0;
		padding-inline: 14px;
		max-height: 0;
		overflow: hidden;
		transition: max-height 0.28s ease;
	}

	.greengrass-site-header__drawer-item.is-open .greengrass-site-header__drawer-sub {
		max-height: 520px;
	}

	.greengrass-site-header__drawer-sub a {
		display: block;
		padding-block: 11px;
		font-size: 15px;
		color: rgba(248, 255, 253, 0.82);
		text-decoration: none;
		border-block-end: 1px solid rgba(255, 255, 255, 0.05);
	}

	.greengrass-site-header__drawer-sub li:last-child a { border-block-end: 0; }

	.greengrass-site-header__drawer-cta {
		margin-block-start: 16px;
		text-align: center;
	}

	/* Hamburger → X when open */
	.greengrass-site-header.is-open .greengrass-site-header__toggle span:nth-child(1) {
		transform: translateY(7px) rotate(45deg);
	}
	.greengrass-site-header.is-open .greengrass-site-header__toggle span:nth-child(2) {
		opacity: 0;
	}
	.greengrass-site-header.is-open .greengrass-site-header__toggle span:nth-child(3) {
		transform: translateY(-7px) rotate(-45deg);
	}
}
