/**
 * Site chrome: header, footer and the non block templates.
 * Front end only. Shared components and tokens are in base.css.
 */

/* ---------------------------------------------------------------------------
 * Skip link
 * ------------------------------------------------------------------------ */

.gs-skip-link {
	position: fixed;
	top: 0.5rem;
	left: 0.5rem;
	z-index: 100;
	padding: 0.75rem 1rem;
	border-radius: var(--gs-radius);
	background: var(--gs-navy);
	color: #fff;
	font-size: 0.875rem;
	text-decoration: none;
	transform: translateY(-200%);
}

.gs-skip-link:focus {
	transform: none;
}

/* ---------------------------------------------------------------------------
 * Header
 * Fixed and transparent over the hero, solid once the page scrolls.
 * ------------------------------------------------------------------------ */

.gs-header {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 50;
	width: 100%;
	padding-inline: var(--gs-gutter);
	background: transparent;
	transition: background-color 0.5s var(--gs-ease), box-shadow 0.5s var(--gs-ease);
}

.gs-header.is-scrolled,
.gs-header.is-open {
	background: color-mix(in srgb, var(--gs-cream) 95%, transparent);
	box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
}

.gs-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	max-width: var(--gs-max);
	margin-inline: auto;
	padding-block: 1.25rem;
}

.gs-brand {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	min-height: 2rem;
	color: var(--gs-ink);
}

.gs-brand__logo {
	width: 2rem;
	height: 2rem;
	object-fit: contain;
}

.gs-brand__name {
	font-family: var(--gs-font-heading);
	font-size: 1.25rem;
	font-weight: 800;
	line-height: 1.75rem;
	letter-spacing: -0.05em;
	text-transform: uppercase;
}

.gs-header__toggle {
	display: inline-flex;
	padding: 0;
	border: 0;
	background: none;
	color: var(--gs-ink);
	cursor: pointer;
}

.gs-header__toggle-close,
.gs-header.is-open .gs-header__toggle-open {
	display: none;
}

.gs-header.is-open .gs-header__toggle-close {
	display: block;
}

/* Mobile: the nav is a panel under the header bar. */
.gs-nav {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	display: none;
	flex-direction: column;
	gap: 1rem;
	max-height: calc(100vh - var(--gs-header-h));
	padding: 1.5rem;
	overflow-y: auto;
	border-top: 1px solid #e5e7eb;
	background: #fff;
	box-shadow: var(--gs-shadow-lg);
}

.gs-header.is-open .gs-nav {
	display: flex;
}

.gs-nav__list {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.gs-nav__link {
	display: flex;
	align-items: center;
	gap: 0.25rem;
	width: 100%;
	padding: 0.5rem 0;
	border: 0;
	background: none;
	color: var(--gs-ink);
	font-family: var(--gs-font-heading);
	font-size: 0.875rem;
	font-weight: 700;
	line-height: 1.25rem;
	letter-spacing: -0.025em;
	text-align: left;
	text-transform: uppercase;
	cursor: pointer;
	transition: color 0.3s var(--gs-ease);
}

.gs-nav__link:hover,
.gs-nav__item.is-current > .gs-nav__link {
	color: var(--gs-accent);
}

.gs-nav__chevron {
	width: 0.875rem;
	height: 0.875rem;
	transition: transform 0.2s var(--gs-ease);
}

.gs-nav__toggle[aria-expanded="true"] .gs-nav__chevron {
	transform: rotate(180deg);
}

.gs-nav__sub {
	display: none;
	flex-direction: column;
	gap: 0.5rem;
	margin-top: 1rem;
	padding-left: 1rem;
}

.gs-nav__toggle[aria-expanded="true"] + .gs-nav__sub {
	display: flex;
}

.gs-nav__sublink {
	display: block;
	padding: 0.25rem 0;
	color: var(--gs-body);
	font-family: var(--gs-font-heading);
	font-size: 0.875rem;
	font-weight: 600;
	line-height: 1.25rem;
	transition: color 0.15s var(--gs-ease), background-color 0.15s var(--gs-ease);
}

.gs-nav__sublink:hover,
.gs-nav__subitem.is-current > .gs-nav__sublink {
	color: var(--gs-accent);
}

.gs-nav__cta {
	margin-top: 0.5rem;
}

/* Desktop: inline nav with a dropdown. */
@media (min-width: 1100px) {
	.gs-header__toggle {
		display: none;
	}

	.gs-nav {
		position: static;
		display: flex;
		flex-direction: row;
		align-items: center;
		gap: 2.5rem;
		max-height: none;
		padding: 0;
		overflow: visible;
		border: 0;
		background: none;
		box-shadow: none;
	}

	.gs-nav__list {
		flex-direction: row;
		align-items: center;
		gap: 2.5rem;
	}

	.gs-nav__item {
		position: relative;
	}

	.gs-nav__link {
		width: auto;
		padding: 0;
	}

	.gs-nav__sub {
		position: absolute;
		top: 100%;
		left: 0;
		z-index: 50;
		gap: 0;
		min-width: 220px;
		margin-top: 0.75rem;
		padding: 0.5rem 0;
		border: 1px solid #e8dfd1;
		border-radius: var(--gs-radius-card);
		background: #fff;
		box-shadow: var(--gs-shadow-xl);
	}

	.gs-nav__sublink {
		padding: 0.625rem 1.25rem;
		color: #374151;
	}

	.gs-nav__sublink:hover {
		background: #f5f2ee;
	}

	.gs-nav__cta {
		margin-top: 0;
	}
}

/* Keep the fixed header below the WordPress admin bar when logged in. */
.admin-bar .gs-header {
	top: 32px;
}

@media (max-width: 782px) {
	.admin-bar .gs-header {
		top: 46px;
	}
}

@media (max-width: 600px) {
	.admin-bar #wpadminbar {
		position: fixed;
	}
}

/* ---------------------------------------------------------------------------
 * Page title band (pages and posts that do not open with the Hero block)
 * ------------------------------------------------------------------------ */

.gs-page-header {
	padding: calc(var(--gs-header-h) + 4rem) var(--gs-gutter) 4rem;
	border-bottom: 1px solid var(--gs-sand);
	background: var(--gs-cream);
}

.gs-page-header .gs-lead {
	margin-top: 0;
}

.gs-page-header .gs-lead > * {
	margin: 0;
}

.gs-page-header .gs-container > :last-child {
	margin-bottom: 0;
}

/* ---------------------------------------------------------------------------
 * Archive, search and 404
 * ------------------------------------------------------------------------ */

.gs-archive {
	width: calc(100% - 2 * var(--gs-gutter));
	padding-block: 4rem 7rem;
}

.gs-archive__list {
	display: grid;
	gap: 3rem;
	max-width: var(--gs-wide);
}

.gs-archive__item {
	padding-bottom: 3rem;
	border-bottom: 1px solid var(--gs-sand);
}

.gs-archive__title {
	margin-bottom: 0.75rem;
	font-family: var(--gs-font-heading);
	font-size: 1.5rem;
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.03em;
	color: var(--gs-navy);
}

.gs-archive__title a:hover {
	color: var(--gs-accent);
}

.gs-archive__excerpt {
	max-width: 48rem;
	margin-bottom: 1rem;
	color: var(--gs-body);
	line-height: 1.625;
}

.gs-pagination {
	margin-top: 3rem;
}

.gs-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.gs-pagination .page-numbers {
	display: inline-block;
	padding: 0.5rem 0.875rem;
	border: 1px solid var(--gs-sand);
	border-radius: var(--gs-radius);
	color: var(--gs-navy);
	font-size: 0.875rem;
}

.gs-pagination .page-numbers.current,
.gs-pagination a.page-numbers:hover {
	border-color: var(--gs-accent);
	background: var(--gs-accent);
	color: #fff;
}

.gs-archive .search-form {
	display: flex;
	gap: 0.5rem;
	max-width: 32rem;
	margin-top: 1.5rem;
}

.gs-archive .search-field {
	flex: 1;
	padding: 0.75rem 1rem;
	border: 1px solid var(--gs-sand);
	border-radius: var(--gs-radius);
	font: inherit;
}

.gs-archive .search-submit {
	padding: 0.75rem 1.5rem;
	border: 0;
	border-radius: var(--gs-radius);
	background: var(--gs-accent);
	color: #fff;
	font-family: var(--gs-font-heading);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	cursor: pointer;
}

/* ---------------------------------------------------------------------------
 * Footer
 * ------------------------------------------------------------------------ */

.gs-footer {
	position: relative;
	padding: 6rem var(--gs-gutter) 2rem;
	overflow: hidden;
	background: var(--gs-navy-deep);
	color: rgb(255 255 255 / 0.4);
	font-size: 0.875rem;
}

.gs-footer::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 1px;
	background: linear-gradient(to right, transparent, color-mix(in srgb, var(--gs-accent) 40%, transparent), transparent);
}

.gs-footer__grid {
	position: relative;
	display: grid;
	grid-template-columns: 1fr;
	gap: 3rem;
	max-width: var(--gs-max);
	margin-inline: auto;
}

@media (min-width: 768px) {
	.gs-footer__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.gs-footer__title {
	margin-bottom: 0.5rem;
	color: #fff;
	font-family: var(--gs-font-heading);
	font-size: 1.25rem;
	font-weight: 700;
	line-height: 1.75rem;
	letter-spacing: -0.05em;
	text-transform: uppercase;
}

.gs-footer__brand .gs-dash {
	margin-bottom: 1.5rem;
}

.gs-footer__tagline {
	max-width: 20rem;
	line-height: 1.625;
}

.gs-footer__heading {
	margin-bottom: 1rem;
	color: var(--gs-accent);
	font-family: var(--gs-font-heading);
	font-size: 0.875rem;
	font-weight: 700;
	line-height: 1.25rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.gs-footer__links {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.gs-footer__links a {
	display: block;
	line-height: 1.25rem;
	transition: color 0.3s var(--gs-ease), transform 0.3s var(--gs-ease);
}

.gs-footer__links a:hover {
	color: var(--gs-accent);
	transform: translateX(0.25rem);
}

.gs-footer__address {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	font-style: normal;
	line-height: 1.625;
}

.gs-footer__service {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	margin-top: 0.75rem;
	padding-top: 1rem;
	line-height: 1.625;
}

.gs-footer__service-title {
	color: rgb(255 255 255 / 0.6);
	font-weight: 600;
}

.gs-footer__service a,
.gs-footer__legal a {
	transition: color 0.3s var(--gs-ease);
}

.gs-footer__service a:hover,
.gs-footer__legal a:hover {
	color: var(--gs-accent);
}

.gs-footer__bottom {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	max-width: var(--gs-max);
	margin: 3rem auto 0;
	padding-top: 1.5rem;
	border-top: 1px solid rgb(255 255 255 / 0.1);
	color: rgb(255 255 255 / 0.3);
	line-height: 1.25rem;
}

.gs-footer__legal {
	display: flex;
	gap: 1.5rem;
}

.gs-footer__legal a {
	display: block;
}

@media (min-width: 768px) {
	.gs-footer__bottom {
		flex-direction: row;
	}
}

/* ---------------------------------------------------------------------------
 * Anchor links
 * Sections targeted by #anchors stop below the fixed header.
 * ------------------------------------------------------------------------ */

html {
	scroll-behavior: smooth;
	scroll-padding-top: var(--gs-header-h);
}
