/*
    Header. parts/header.html is core blocks; this file is what block settings
    cannot say: the sticky shell and its compact state, the 992px switch between
    the link row and the phone menu, the underline, the Our Work panel's
    viewport-tuned spacing, and the phone menu's slide-in panel. Behavior is
    assets/js/header.js (inc/header.php puts the directives on the blocks).
*/

/* The part's wrapper div would be the header's sticky range; the header's is the page. */
.wp-block-template-part:has(> .is-style-site-header) {
	display: contents;
}

/* --- Site Header: sticky from 992, compact once scrolled (data-compact) --- */
.is-style-site-header {
	padding-block: var(--wp--preset--spacing--40);
	border-bottom: 1px solid transparent;
	transition:
		padding 0.5s cubic-bezier(0.22, 1, 0.36, 1),
		box-shadow 0.5s cubic-bezier(0.22, 1, 0.36, 1),
		border-color 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.is-style-site-header .wp-block-site-logo img {
	max-width: 6.5rem;
	transition: max-width 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Phone: the search icon takes the free space, the menu button follows it. */
.is-style-site-header .wp-block-esa-search-toggle {
	margin-left: auto;
}

.is-style-site-header > .wp-block-group > .wp-block-navigation {
	order: 1;
	margin-left: var(--wp--preset--spacing--40);
}

/* The menu button: three bars, 32 by 22. */
.is-style-site-header .wp-block-navigation__responsive-container-open {
	width: 2rem;
	height: 22px;
	padding: 0; align-items: center;
}

.is-style-site-header .wp-block-navigation__responsive-container-open svg {
	display: none;
}

.is-style-site-header .wp-block-navigation__responsive-container-open::before {
	content: "";
	width: 100%;
	height: 2px;
	border-radius: 2px;
	background: currentColor;
	box-shadow: 0 -8px currentColor, 0 8px currentColor;
}

/*
    Core switches its menu button to the link row at 600px. The design switches
    at 992, so from 600 to 991 the row stays hidden and the button stays.
*/
@media (min-width: 600px) and (max-width: 991.98px) {
	.is-style-site-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}

	.is-style-site-header .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}
}

@media (min-width: 992px) {
	html {
		scroll-padding-top: 133px;
	}

	.is-style-site-header {
		padding-block: 0;
		position: sticky;
		top: 0;
		z-index: 100;
	}

	.is-style-site-header[data-compact="true"] {
		border-bottom-color: var(--wp--preset--color--light-gray);
		box-shadow: 0 4px 16px rgba(0, 0, 0, 0.05);
	}

	.is-style-site-header[data-compact="true"] .wp-block-site-logo img {
		max-width: 4.5rem;
	}

	.is-style-site-header .wp-block-esa-search-toggle {
		margin-left: 0;
	}

	.is-style-site-header > .wp-block-group > .wp-block-navigation {
		order: 0;
		margin-left: auto;
	}

	/* The link row. Letter-spacing sits on the link so its em follows the 1280 size step. */
	.is-style-site-header > .wp-block-group > .wp-block-navigation .wp-block-navigation-item__content {
		padding-block: 3.25rem;
		border-block: 0.375rem solid transparent;
		letter-spacing: 0.1em;
		transition:
			color 0.2s ease-in,
			border-color 0.2s ease-in,
			padding 0.5s cubic-bezier(0.22, 1, 0.36, 1);
	}

	.is-style-site-header > .wp-block-group > .wp-block-navigation .wp-block-navigation-item__content:hover {
		color: var(--wp--preset--color--black);
	}

	.is-style-site-header > .wp-block-group > .wp-block-navigation .wp-block-navigation-item__content:is(:hover, [aria-current]) {
		border-bottom-color: var(--wp--preset--color--orange);
	}

	.is-style-site-header[data-compact="true"] > .wp-block-group > .wp-block-navigation .wp-block-navigation-item__content {
		padding-block: 1.75rem;
	}
}

@media (min-width: 1280px) {
	.is-style-site-header > .wp-block-group > .wp-block-navigation .wp-block-navigation__container {
		gap: var(--wp--preset--spacing--60);
	}

	.is-style-site-header > .wp-block-group > .wp-block-navigation .wp-block-navigation-item__content {
		font-size: var(--wp--preset--font-size--medium);
	}
}

/* --- Our Work panel (is-style-mega-menu): full-bleed, opened by header.js --- */
.is-style-mega-menu {
	padding-block: var(--wp--preset--spacing--90);
}

.is-style-mega-menu h3 {
	font-size: clamp(1.5rem, 2vw, 2.25rem);
	margin-bottom: var(--wp--preset--spacing--60);
}

.is-style-mega-menu .wp-block-navigation {
	font-size: clamp(1.125rem, 1.25vw, 1.5rem);
}

.is-style-mega-menu .wp-block-navigation .wp-block-navigation__container {
	gap: var(--wp--preset--spacing--30);
}

.is-style-mega-menu .wp-block-navigation .wp-block-navigation-item__content:hover {
	color: var(--wp--preset--color--dark-teal);
}

/* The Services Menu: icon and label on one row, rows 1.5rem apart in the
   two CSS columns (theme.json, Columns List). The Navigation's own flex gap
   cannot do it: its list is display: contents so the columns can flow. */
.is-style-mega-menu .is-style-columns-list :is(.wp-block-navigation, p) {
	font-size: clamp(1.125rem, 1.2vw, 1.25rem);
}

.is-style-mega-menu .is-style-columns-list .wp-block-navigation-item {
	gap: var(--wp--preset--spacing--20);
	padding-bottom: var(--wp--preset--spacing--30);
}

/* The service's own line icon, drawn inline by inc/header.php so its fill can
   change when the row is hovered. */
[data-service-icon] {
	display: block;
	flex: none;
	width: 1.5rem;
}

[data-service-icon] svg {
	width: 100%;
}

[data-service-icon] :is(g, path, rect) {
	transition: fill 0.2s ease;
}

.wp-block-navigation-item:hover > [data-service-icon] :is(g, path, rect) {
	fill: var(--wp--preset--color--dark-teal);
}

/* Short windows (a laptop): the panel's rhythm tightens so it fits. */
@media (max-height: 1024px) and (min-width: 768px) {
	.is-style-mega-menu {
		padding-block: var(--wp--preset--spacing--60);
	}

	.is-style-mega-menu h3 {
		margin-bottom: var(--wp--preset--spacing--30);
	}

	.is-style-mega-menu .wp-block-navigation {
		font-size: clamp(1rem, 1vw, 1.125rem);
	}

	.is-style-mega-menu .wp-block-navigation .wp-block-navigation__container {
		gap: var(--wp--preset--spacing--20);
	}

	.is-style-mega-menu .is-style-columns-list :is(.wp-block-navigation, p) {
		font-size: clamp(1rem, 1vw, 1.125rem);
	}

	.is-style-mega-menu .is-style-columns-list .wp-block-navigation-item {
		padding-bottom: var(--wp--preset--spacing--20);
	}

	.is-style-mega-menu .wp-block-button__link {
		font-size: clamp(0.875rem, 1vw, 1rem);
	}
}

/* --- Phone menu: core's overlay, dressed as the slide-in panel --- */
.wp-block-navigation__responsive-container.is-menu-open.disable-default-overlay {
	background-color: rgba(255, 255, 255, 0.75);
}

/* Hidden, not removed: focus returns to it when the panel closes. Core writes
   has-modal-open on <html> while its overlay (the phone menu) is open. */
.has-modal-open .wp-block-navigation__responsive-container-open {
	opacity: 0;
}

.wp-block-navigation__overlay-container > .wp-block-group {
	width: 80vw;
	max-width: 30rem;
	min-height: 100vh;
	padding: var(--wp--preset--spacing--40) 0 var(--wp--preset--spacing--70);
	box-shadow: rgba(50, 50, 93, 0.25) 0 13px 27px -5px, rgba(0, 0, 0, 0.35) 0 8px 16px -8px;
}

@media (min-width: 768px) {
	.wp-block-navigation__overlay-container > .wp-block-group {
		width: 28rem;
	}
}

/* The close button sits where the menu button was. */
.wp-block-navigation-overlay-close {
	position: fixed;
	top: 3.25rem;
	right: var(--wp--preset--spacing--40);
	width: 2rem;
	height: 22px;
	color: var(--wp--preset--color--dark-gray);
}

/* The X is two hairlines, 24px across, like the menu button's bars. */
.wp-block-navigation-overlay-close svg {
	display: none;
}

.wp-block-navigation-overlay-close::before,
.wp-block-navigation-overlay-close::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 34px;
	height: 1px;
	background: currentcolor;
	transform: translate(-50%, -50%) rotate(45deg);
}

.wp-block-navigation-overlay-close::after {
	transform: translate(-50%, -50%) rotate(-45deg);
}

.wp-block-navigation__overlay-container .wp-block-site-logo {
	padding: 0 var(--wp--preset--spacing--40) var(--wp--preset--spacing--40);
}

.wp-block-navigation__overlay-container :is(.wp-block-navigation__container, .wp-block-navigation-item) {
	width: 100%;
}

.wp-block-navigation__overlay-container .wp-block-navigation-submenu {
	flex-direction: column;
}

.wp-block-navigation__overlay-container .wp-block-navigation .wp-block-navigation-item__content {
	width: 100%;
	padding: var(--wp--preset--spacing--20) var(--wp--preset--spacing--40);
	letter-spacing: 0.1em;
	text-align: left;
	transition: color 0.2s ease-in;
}

.wp-block-navigation__overlay-container .wp-block-navigation .wp-block-navigation-item__content:hover,
.wp-block-navigation__overlay-container [aria-expanded="true"] {
	color: var(--wp--preset--color--orange);
}

/* Sections open in place (an accordion), and their links are plain sentence case. */
.wp-block-navigation__overlay-container .wp-block-navigation .has-child .wp-block-navigation__submenu-container {
	position: static;
	align-self: stretch;
	min-width: 0;
	border: 0;
	background: none;
	padding: 0;
}

.wp-block-navigation__overlay-container .wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: var(--wp--preset--spacing--10) var(--wp--preset--spacing--20) var(--wp--preset--spacing--10) var(--wp--preset--spacing--60);
	text-transform: none;
	letter-spacing: 0;
}

.wp-block-navigation__overlay-container .wp-block-navigation__submenu-container > :last-child {
	padding-bottom: var(--wp--preset--spacing--20);
}

/* Section arrow: a hairline chevron, 14 by 7, drawn in CSS (core's icon is a heavier 12px glyph). */
.wp-block-navigation__overlay-container .wp-block-navigation__submenu-icon {
	position: absolute;
	top: 1.25rem;
	right: var(--wp--preset--spacing--40);
	width: 14px;
	height: 14px;
	pointer-events: none;
}

.wp-block-navigation__overlay-container .wp-block-navigation__submenu-icon svg {
	display: none;
}

.wp-block-navigation__overlay-container .wp-block-navigation__submenu-icon::after {
	content: "";
	position: absolute;
	top: 1px;
	left: 2px;
	width: 10px;
	height: 10px;
	border: solid currentcolor;
	border-width: 0 1px 1px 0;
	transform: rotate(45deg);
}

.wp-block-navigation__overlay-container [aria-expanded="true"] + .wp-block-navigation__submenu-icon::after {
	top: 5px;
	transform: rotate(225deg);
}

.wp-block-navigation__overlay-container [aria-expanded="true"] + .wp-block-navigation__submenu-icon {
	color: var(--wp--preset--color--orange);
}

.wp-block-navigation-item.is-style-divider-above {
	flex-direction: column;
}

.wp-block-navigation-item.is-style-divider-above::before {
	content: "";
	align-self: stretch;
	margin: var(--wp--preset--spacing--10) var(--wp--preset--spacing--60);
	border-top: 1px solid var(--wp--preset--color--light-gray);
}
