/* ==========================================================================
   SitePulse Labs — Global Structural Styles (Batch 3, revised)
   Header, logo/wordmark, primary navigation (shared dropdown/accordion
   markup), search panel, footer, breadcrumb, skip link.
   Depends on the custom properties defined in foundation.css.
   ========================================================================== */

/* --- Skip link (accessibility quality floor) --- */
.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	background: var(--sp-color-ink-navy);
	color: var(--sp-color-paper-white);
	padding: var(--sp-space-2) var(--sp-space-3);
	z-index: 100;
	text-decoration: none;
}

.skip-link:focus {
	left: var(--sp-space-2);
	top: var(--sp-space-2);
}

/* --- Prevent body scroll while the mobile menu is open --- */
.no-scroll {
	overflow: hidden;
}

/* ==========================================================================
   Site header
   ========================================================================== */

.site-header {
	background: var(--sp-color-paper-white);
	border-bottom: var(--sp-border-hairline);
	box-shadow: 0 1px 2px rgba(11, 30, 51, 0.04);
	position: sticky;
	top: 0;
	z-index: 50;
}

.site-header__inner {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: var(--sp-space-3);
	height: 64px;
}

@media (min-width: 1024px) {
	.site-header__inner {
		height: 72px;
	}
}

/* --- Logo / wordmark --- */
.site-logo {
	display: inline-flex;
	align-items: center;
	color: var(--sp-color-ink-navy);
	text-decoration: none;
}

.site-logo--svg {
	color: var(--sp-color-ink-navy); /* drives currentColor inside the inlined SVG */
}

.site-logo__full svg,
.site-logo__compact svg {
	display: block;
	height: 30px;
	width: auto;
}

.site-logo__compact {
	display: none;
}

@media (min-width: 1024px) {
	.site-logo__full {
		display: block;
	}
	.site-logo__full svg {
		height: 32px;
	}
}

@media (max-width: 1023px) {
	.site-logo__full {
		display: none;
	}
	.site-logo__compact {
		display: block;
	}
	.site-logo__compact svg {
		height: 28px;
	}
}

.site-logo--custom img {
	display: block;
	height: 32px;
	width: auto;
	border-radius: 0; /* the uploaded logo is exempt from the general image radius */
}

/* ==========================================================================
   Primary navigation — one <nav>, shared by desktop (dropdown) and mobile
   (accordion + full-screen panel); CSS handles the presentation difference.
   ========================================================================== */

.site-nav {
	justify-self: center;
}

.site-nav__cta-mobile {
	display: none;
}

.primary-nav__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

/* --- Desktop: horizontal row, dropdown positioned absolute --- */
@media (min-width: 1024px) {
	.primary-nav__list {
		display: flex;
		align-items: center;
		gap: var(--sp-space-4);
	}

	.primary-nav__list > .menu-item {
		position: relative;
	}

	.primary-nav__list > .menu-item > a,
	.primary-nav__list > .menu-item > .nav-dropdown-toggle {
		display: inline-flex;
		align-items: center;
		gap: var(--sp-space-1);
		background: none;
		border: none;
		font-family: var(--sp-font-body);
		font-size: 1rem;
		color: var(--sp-color-ink-navy);
		text-decoration: none;
		cursor: pointer;
		padding-block: var(--sp-space-1);
		border-bottom: 2px solid transparent;
	}

	.primary-nav__list > .menu-item > a:hover,
	.primary-nav__list > .menu-item > a:focus-visible,
	.primary-nav__list > .menu-item > .nav-dropdown-toggle:hover,
	.primary-nav__list > .menu-item > .nav-dropdown-toggle:focus-visible {
		border-bottom-color: var(--sp-color-signal-teal);
	}

	/* Current-page indicator */
	.menu-item.is-current > a,
	.menu-item.is-current > .nav-dropdown-toggle {
		font-weight: 600;
		border-bottom-color: var(--sp-color-signal-teal);
	}

	.nav-dropdown__menu {
		display: none;
		position: absolute;
		top: 100%;
		left: 50%;
		transform: translateX(-50%);
		min-width: 260px;
		list-style: none;
		margin: var(--sp-space-2) 0 0;
		padding: var(--sp-space-2);
		background: var(--sp-color-paper-white);
		border: var(--sp-border-hairline);
		border-radius: var(--sp-radius-card);
		box-shadow: var(--sp-shadow-card);
	}

	.nav-dropdown__menu.is-open {
		display: block;
	}

	.nav-dropdown__menu .menu-item {
		border-radius: 4px;
	}

	.nav-dropdown__menu .menu-item:hover,
	.nav-dropdown__menu .menu-item:focus-within {
		background: var(--sp-color-mist-gray);
	}

	.nav-dropdown__menu a {
		display: block;
		padding: var(--sp-space-2);
		text-decoration: none;
		color: var(--sp-color-ink-navy);
	}

	.nav-dropdown__menu .nav-item-label {
		display: block;
		font-weight: 600;
	}

	.nav-dropdown__menu .nav-item-description {
		display: block;
		font-size: 0.8125rem;
		color: var(--sp-color-slate);
		margin-top: 2px;
	}

	.nav-dropdown__menu .menu-item.is-current a {
		color: var(--sp-color-signal-teal);
	}
}

/* --- Mobile: full-screen panel, accordion-style submenu --- */
@media (max-width: 1023px) {
	.site-nav {
		display: none;
		position: fixed;
		inset: 64px 0 0 0;
		background: var(--sp-color-paper-white);
		overflow-y: auto;
		padding: var(--sp-space-3);
		z-index: 49;
	}

	body.nav-open .site-nav {
		display: block;
	}

	.site-nav__cta-mobile {
		display: block;
		width: 100%;
		text-align: center;
		margin-bottom: var(--sp-space-4);
		min-height: 44px;
	}

	.primary-nav__list > .menu-item > a,
	.primary-nav__list > .menu-item > .nav-dropdown-toggle {
		display: flex;
		align-items: center;
		justify-content: space-between;
		width: 100%;
		min-height: 44px;
		background: none;
		border: none;
		border-bottom: var(--sp-border-hairline);
		font-family: var(--sp-font-body);
		font-size: 1.125rem;
		color: var(--sp-color-ink-navy);
		text-decoration: none;
		cursor: pointer;
		text-align: left;
	}

	.menu-item.is-current > a,
	.menu-item.is-current > .nav-dropdown-toggle {
		color: var(--sp-color-signal-teal);
		font-weight: 600;
	}

	.nav-dropdown__menu {
		display: none;
		list-style: none;
		margin: 0;
		padding: 0 0 0 var(--sp-space-3);
	}

	.nav-dropdown__menu.is-open {
		display: block;
	}

	.nav-dropdown__menu a {
		display: block;
		min-height: 44px;
		padding: var(--sp-space-2) 0;
		text-decoration: none;
		color: var(--sp-color-slate);
	}

	.nav-dropdown__menu .nav-item-label {
		display: block;
		color: var(--sp-color-ink-navy);
	}

	.nav-dropdown__menu .nav-item-description {
		display: block;
		font-size: 0.8125rem;
		color: var(--sp-color-slate);
	}
}

/* ==========================================================================
   Header actions: search toggle, Start Here CTA, mobile hamburger
   ========================================================================== */

.site-header__actions {
	display: flex;
	align-items: center;
	gap: var(--sp-space-2);
	justify-self: end;
}

.search-toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	background: none;
	border: none;
	color: var(--sp-color-ink-navy);
	cursor: pointer;
	border-radius: var(--sp-radius-button);
}

.search-toggle:hover,
.search-toggle:focus-visible {
	color: var(--sp-color-signal-teal);
}

.site-header__cta {
	white-space: nowrap;
	font-size: 0.9375rem;
	padding: var(--sp-space-1) var(--sp-space-3);
}

.sp-button--primary:hover,
.sp-button--primary:focus-visible {
	background: #0c9680;
	color: var(--sp-color-paper-white);
}

@media (max-width: 767px) {
	.site-header__cta {
		display: none; /* Start Here is reachable via the mobile menu panel to avoid a cramped mobile header */
	}
}

.mobile-menu-toggle {
	display: inline-flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	min-width: 44px;
	min-height: 44px;
	background: none;
	border: none;
	cursor: pointer;
	border-radius: var(--sp-radius-button);
}

@media (min-width: 1024px) {
	.mobile-menu-toggle {
		display: none;
	}
}

.mobile-menu-toggle .bar {
	display: block;
	width: 22px;
	height: 2px;
	background: var(--sp-color-ink-navy);
	margin: 3px 0;
	transition: transform 120ms ease-out, opacity 120ms ease-out;
}

body.nav-open .mobile-menu-toggle .bar:nth-child(1) {
	transform: translateY(5px) rotate(45deg);
}
body.nav-open .mobile-menu-toggle .bar:nth-child(2) {
	opacity: 0;
}
body.nav-open .mobile-menu-toggle .bar:nth-child(3) {
	transform: translateY(-5px) rotate(-45deg);
}

/* ==========================================================================
   Search panel
   ========================================================================== */

.site-search-panel {
	display: none;
	border-top: var(--sp-border-hairline);
	background: var(--sp-color-mist-gray);
	padding-block: var(--sp-space-3);
}

.site-search-panel.is-open {
	display: block;
}

.site-search-form {
	display: flex;
	gap: var(--sp-space-2);
	max-width: 480px;
}

.site-search-form__input {
	flex: 1;
	min-height: 44px;
	padding: var(--sp-space-2);
	border: var(--sp-border-hairline);
	border-radius: var(--sp-radius-button);
	font-family: var(--sp-font-body);
	font-size: 1rem;
}

.site-search-form__input:focus-visible {
	outline: 2px solid var(--sp-color-signal-teal);
	outline-offset: 2px;
}

/* ==========================================================================
   Footer — dark editorial treatment
   ========================================================================== */

.site-footer {
	background: var(--sp-color-ink-navy);
	padding-block: var(--sp-space-8);
	color: rgba(255, 255, 255, 0.7);
}

.site-footer__top {
	margin-bottom: var(--sp-space-6);
}

.site-footer .site-logo--footer {
	color: var(--sp-color-paper-white); /* drives currentColor inside the SVG for the dark background */
	margin-bottom: var(--sp-space-2);
}

.site-footer .site-logo--footer svg {
	height: 32px;
}

.site-footer__mission {
	color: rgba(255, 255, 255, 0.7);
	font-size: 1rem;
	max-width: 480px;
	margin: 0;
}

.footer-columns {
	display: grid;
	grid-template-columns: minmax(0, 1.35fr) minmax(0, 0.85fr);
	gap: var(--sp-space-4) var(--sp-space-3);
	align-items: start;
}

.footer-column--company {
	grid-column: 1 / -1;
}

@media (min-width: 768px) {
	.footer-columns {
		grid-template-columns: repeat(3, 1fr);
		gap: var(--sp-space-4);
	}

	.footer-column--company {
		grid-column: auto;
	}
}

.footer-column__heading {
	margin: 0 0 var(--sp-space-2);
	padding-bottom: var(--sp-space-2);
	border-bottom: 1px solid rgba(255, 255, 255, 0.15);
	font-family: var(--sp-font-body);
	font-weight: 600;
	font-size: 1rem;
	line-height: 1.4;
	color: var(--sp-color-paper-white);
}

.footer-column__panel {
	display: block;
	padding-top: 0;
}

.footer-column__panel ul,
.footer-column__extra-links {
	list-style: none;
	margin: 0;
	padding: 0;
}

.footer-column__panel li {
	margin-bottom: var(--sp-space-1);
}

.footer-column__panel a,
.footer-column__panel span {
	display: inline-block;
	min-height: 32px;
	line-height: 32px;
	color: rgba(255, 255, 255, 0.65);
	text-decoration: none;
	font-size: 0.9375rem;
}

.footer-column__panel a:hover,
.footer-column__panel a:focus-visible {
	color: var(--sp-color-signal-teal);
}

@media (max-width: 767px) {
	.footer-column__heading {
		font-size: 0.9375rem;
	}

	.footer-column__panel a,
	.footer-column__panel span {
		font-size: 0.875rem;
		line-height: 1.45;
		min-height: 30px;
		padding-block: 4px;
	}
}

.footer-bottom {
	border-top: 1px solid rgba(255, 255, 255, 0.15);
	margin-top: var(--sp-space-6);
	padding-top: var(--sp-space-3);
	font-size: 0.8125rem;
	color: rgba(255, 255, 255, 0.5);
}

/* ==========================================================================
   Breadcrumb (unchanged from initial Batch 3)
   ========================================================================== */

.sp-breadcrumb {
	font-size: 0.875rem;
	color: var(--sp-color-slate);
	margin-bottom: var(--sp-space-3);
}

.sp-breadcrumb a {
	color: var(--sp-color-slate);
	text-decoration: none;
}

.sp-breadcrumb a:hover,
.sp-breadcrumb a:focus-visible {
	color: var(--sp-color-signal-teal);
}

.sp-breadcrumb .sep {
	margin: 0 var(--sp-space-1);
}

/* Phase 3B utility strip and approved dark-footer refinements. */
.site-header__utility{background:var(--sp-color-ink-navy);color:rgba(255,255,255,.76)}
.site-header__utility-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:38px}
.site-header__utility p{margin:0;font-size:.8125rem}
.site-header__utility nav{display:none;gap:1.5rem}
.site-header__utility a{color:rgba(255,255,255,.68);font:500 .6875rem/1.4 var(--sp-font-data);letter-spacing:.1em;text-transform:uppercase;text-decoration:none}
.site-header__utility a:hover{color:#fff}
.site-footer{background:var(--sp-color-ink-deep)}
@media(min-width:768px){.site-header__utility nav{display:flex}}



/* ==========================================================================
   Runtime QA fixes — v1.3.1
   Preserve the approved bundled brand in the header, prevent third-party/admin
   UI from exposing horizontal page overflow, and make the mobile navigation a
   true viewport-wide panel at every supported mobile width.
   ========================================================================== */

html,
body {
	max-width: 100%;
	overflow-x: clip;
}

:root {
	--sp-admin-bar-offset: 0px;
	--sp-mobile-header-height: 102px; /* 38px utility strip + 64px main row */
}

body.admin-bar {
	--sp-admin-bar-offset: 32px;
}

.site-header {
	top: var(--sp-admin-bar-offset);
}

.site-header__inner,
.site-logo,
.site-nav,
.site-header__actions {
	min-width: 0;
}

.site-logo {
	justify-self: start;
	max-width: 100%;
}

@media (max-width: 782px) {
	body.admin-bar {
		--sp-admin-bar-offset: 46px;
	}
}

@media (max-width: 1023px) {
	.site-header__inner {
		grid-template-columns: minmax(0, 1fr) auto;
	}

	.site-logo__compact svg {
		width: 158px;
		height: auto;
		max-width: min(158px, calc(100vw - 152px));
	}

	.site-nav {
		display: none;
		position: fixed;
		top: calc(var(--sp-admin-bar-offset) + var(--sp-mobile-header-height));
		right: 0;
		bottom: 0;
		left: 0;
		inset-inline: 0;
		width: 100%;
		max-width: none;
		height: auto;
		margin: 0;
		justify-self: stretch;
		padding: var(--sp-space-3) max(var(--sp-space-2), env(safe-area-inset-right)) calc(var(--sp-space-6) + env(safe-area-inset-bottom)) max(var(--sp-space-2), env(safe-area-inset-left));
		background: var(--sp-color-paper-white);
		overflow-x: hidden;
		overflow-y: auto;
		overscroll-behavior: contain;
		-webkit-overflow-scrolling: touch;
		z-index: 49;
	}

	body.nav-open .site-nav {
		display: block;
	}
}

.nav-dropdown__menu .nav-dropdown__all { border-bottom: 1px solid var(--sp-color-border); }
.nav-dropdown__menu .nav-dropdown__all .nav-item-label { font-weight: 700; }


/* v1.3.6 — mobile navigation drawer */
.site-nav__mobile-head,.site-nav__quick-links,.site-nav-backdrop{display:none}
@media(max-width:1023px){
	.site-nav-backdrop{display:block;position:fixed;inset:var(--sp-admin-bar-offset) 0 0;background:rgba(3,14,24,.58);backdrop-filter:blur(3px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s ease,visibility .22s ease;z-index:998}
	body.nav-open .site-nav-backdrop{opacity:1;visibility:visible;pointer-events:auto}
	.site-nav{display:flex;flex-direction:column;position:fixed;top:var(--sp-admin-bar-offset);right:0;bottom:0;left:auto;width:min(90vw,430px);height:auto;max-width:430px;padding:0;background:var(--sp-color-paper-white);box-shadow:-22px 0 55px rgba(3,14,24,.24);overflow:hidden;visibility:hidden;pointer-events:none;transform:translateX(104%);transition:transform .28s cubic-bezier(.2,.75,.2,1),visibility .28s ease;z-index:999}
	body.nav-open .site-nav{display:flex;visibility:visible;pointer-events:auto;transform:translateX(0)}
	.site-nav__mobile-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:88px;padding:1rem 1.25rem;border-bottom:1px solid var(--sp-color-rule);background:linear-gradient(135deg,var(--sp-color-ink-deep),var(--sp-color-ink-navy));color:#fff}
	.site-nav__mobile-head span{display:block;margin-bottom:.2rem;font:500 .65rem/1.4 var(--sp-font-data);letter-spacing:.16em;text-transform:uppercase;color:#72d8c5}
	.site-nav__mobile-head strong{font-size:1.2rem;color:#fff}
	.mobile-menu-close{display:grid;place-items:center;width:46px;height:46px;flex:0 0 46px;border:1px solid rgba(255,255,255,.24);border-radius:50%;background:rgba(255,255,255,.06);color:#fff;cursor:pointer;transition:background .16s ease,transform .16s ease}
	.mobile-menu-close:hover,.mobile-menu-close:focus-visible{background:rgba(255,255,255,.14);transform:rotate(4deg)}
	.site-nav__mobile-content{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:1.25rem max(1.2rem,env(safe-area-inset-right)) calc(2rem + env(safe-area-inset-bottom)) max(1.2rem,env(safe-area-inset-left));-webkit-overflow-scrolling:touch}
	.site-nav__cta-mobile{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%;min-height:54px;margin:0 0 1rem;padding:.85rem 1rem;text-align:left;background:var(--sp-color-signal-teal);color:#fff!important;box-shadow:0 10px 24px rgba(15,168,140,.2)}
	.site-nav__cta-mobile>span:last-child{font-size:1.3rem;transition:transform .16s ease}
	.site-nav__cta-mobile:hover>span:last-child{transform:translateX(4px)}
	.primary-nav__list{counter-reset:mobile-nav}
	.primary-nav__list>.menu-item{counter-increment:mobile-nav;border-bottom:1px solid var(--sp-color-rule)}
	.primary-nav__list>.menu-item>a,.primary-nav__list>.menu-item>.nav-dropdown-toggle{position:relative;min-height:62px;padding:.75rem 0;border:0;font-size:1.15rem;font-weight:600}
	.primary-nav__list>.menu-item>a:before,.primary-nav__list>.menu-item>.nav-dropdown-toggle:before{content:counter(mobile-nav,decimal-leading-zero);margin-right:.8rem;font:500 .63rem/1 var(--sp-font-data);letter-spacing:.1em;color:var(--sp-color-teal-ink)}
	.primary-nav__list>.menu-item>a .nav-item-label{flex:1}
	.nav-dropdown-toggle{gap:.6rem}
	.nav-dropdown-caret{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--sp-color-mist-gray);font-size:.72rem;transition:transform .18s ease,background .18s ease}
	.nav-dropdown-toggle[aria-expanded="true"] .nav-dropdown-caret{transform:rotate(180deg);background:rgba(15,168,140,.12)}
	.nav-dropdown__menu{margin:0 0 .85rem;padding:.35rem;border:1px solid var(--sp-color-rule);background:var(--sp-color-mist-gray)}
	.nav-dropdown__menu.is-open{display:grid;gap:.25rem}
	.nav-dropdown__menu a{min-height:0;padding:.75rem .8rem;border-left:2px solid transparent;background:var(--sp-color-paper-white);transition:border-color .16s ease,background .16s ease}
	.nav-dropdown__menu a:hover,.nav-dropdown__menu a:focus-visible{border-left-color:var(--sp-color-signal-teal);background:#f5fbfa}
	.nav-dropdown__menu .nav-item-label{font-size:.95rem;font-weight:650}
	.nav-dropdown__menu .nav-item-description{margin-top:.18rem;font-size:.76rem;line-height:1.45}
	.site-nav__quick-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-top:1.25rem;padding-top:1.1rem;border-top:1px solid var(--sp-color-rule)}
	.site-nav__quick-links a{display:grid;place-items:center;min-height:48px;padding:.55rem .35rem;border:1px solid var(--sp-color-rule);background:var(--sp-color-mist-gray);color:var(--sp-color-ink-navy);font:600 .67rem/1.3 var(--sp-font-data);letter-spacing:.04em;text-align:center;text-decoration:none}
	.site-nav__quick-links a:hover,.site-nav__quick-links a:focus-visible{border-color:var(--sp-color-signal-teal);color:var(--sp-color-teal-ink)}
}
