@layer layouts {
	/* ── Topbar ── */

	.topbar {
		background-color: var(--color-text);
		color: var(--color-bg);
		font-size: var(--text-sm);
		padding-block: var(--space-xs);
	}

	.topbar__inner {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: var(--space-2xl);
		flex-wrap: wrap;
	}

	.topbar__status {
		margin: 0;
		font-weight: 700;
		text-transform: uppercase;
		letter-spacing: 0.05em;
	}

	.topbar__links {
		list-style: none;
		margin: 0;
		padding: 0;
		display: flex;
		gap: var(--space-lg);
	}

	.topbar__links a {
		color: inherit;
		text-decoration: none;
		font-weight: 500;
		transition: opacity var(--transition-fast);

		&:hover {
			opacity: 0.7;
		}

		&:focus-visible {
			outline: 1px solid currentColor;
			outline-offset: 2px;
			border-radius: 2px;
		}
	}

	/* Mobile: hide topbar links (they live in the nav menu instead) */
	@media (max-width: 63.999rem) {
		.topbar__links {
			display: none;
		}
	}

	/* ── Site header ── */

	.site-header {
		position: sticky;
		top: 0;
		z-index: 100;
		padding-block: 0;
		color: var(--color-bg);
		background-color: var(--color-primary);
		transition:
			background-color 0.3s ease,
			color 0.3s ease;

		& > .container {
			display: flex;
			align-items: center;
			justify-content: space-between;
			padding-block: var(--space-lg);
		}
	}

	/* Transparent header, floating over hero or brand section */
	body.has-hero .site-header,
	body.has-overlay-header .site-header {
		position: fixed;
		left: 0;
		right: 0;
		background-color: transparent;
	}

	/* Scrolled state — brand orange background */
	body.has-hero .site-header.is-scrolled,
	body.has-overlay-header .site-header.is-scrolled {
		background-color: var(--color-brand);
	}

	/* Mobile-only: open state + scroll lock */
	@media (max-width: 63.999rem) {
		.site-header.nav-is-open,
		body.has-hero .site-header.nav-is-open,
		body.has-overlay-header .site-header.nav-is-open,
		body.has-hero .site-header.is-scrolled.nav-is-open,
		body.has-overlay-header .site-header.is-scrolled.nav-is-open {
			background-color: var(--color-bg);
			color: var(--color-text);
			transition: none;
		}

		html:has(body.nav-is-open),
		body.nav-is-open {
			overflow: hidden;
		}
	}

	/* Branding */
	.site-branding {
		font-size: var(--text-lg);
		font-weight: 900;
		letter-spacing: -0.01em;
		text-transform: uppercase;
	}

	/* Navigation */
	.site-nav {
		display: flex;
		align-items: center;
	}

	/* ── Mobile toggle ── */
	.nav-toggle {
		display: flex;
		flex-direction: column;
		justify-content: center;
		gap: 5px;
		padding: var(--space-sm);
		background: none;
		border: none;
		cursor: pointer;
		color: inherit;
		-webkit-tap-highlight-color: transparent;
	}

	.nav-toggle:focus-visible {
		outline: 2px solid currentColor;
		outline-offset: 2px;
		border-radius: 2px;
	}

	/* Bars — closing transition */
	.nav-toggle__bar {
		display: block;
		width: 24px;
		height: 2px;
		background-color: currentColor;
		border-radius: 1px;
		transition:
			transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),
			opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1);
	}

	/* Middle bar reappears after outer bars finish */
	.nav-toggle__bar:nth-child(2) {
		transition-delay: 0.12s;
	}

	/* Bars → X — opening transition */
	.nav-toggle[aria-expanded="true"] .nav-toggle__bar {
		transition:
			transform 0.45s cubic-bezier(0.16, 1, 0.3, 1),
			opacity 0.2s cubic-bezier(0.16, 1, 0.3, 1);
	}

	.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(1) {
		transform: translateY(7px) rotate(45deg);
		transition-delay: 0.08s;
	}

	.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(2) {
		opacity: 0;
		transition-delay: 0s;
	}

	.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(3) {
		transform: translateY(-7px) rotate(-45deg);
		transition-delay: 0.08s;
	}

	/* ── Mobile menu panel ── */
	.nav-menu {
		margin: 0;
		list-style: none;
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		display: flex;
		flex-direction: column;
		gap: var(--space-xs);
		padding: var(--space-sm) var(--site-padding) var(--space-xl);
		background: var(--color-bg);
		color: var(--color-text);
		clip-path: inset(0 0 100% 0);
		visibility: hidden;
		pointer-events: none;
		transition:
			clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1),
			visibility 0s linear 0.35s;
	}

	.site-nav.is-open .nav-menu {
		clip-path: inset(0 0 0 0);
		visibility: visible;
		pointer-events: auto;
		transition:
			clip-path 0.4s cubic-bezier(0.16, 1, 0.3, 1),
			visibility 0s linear 0s;
	}

	/* Menu links — minimal */
	.nav-menu a {
		display: block;
		padding: var(--space-sm) var(--space-sm);
		font-size: var(--text-lg);
		font-weight: 500;
		color: var(--color-text);
		border-radius: 4px;
		text-transform: uppercase;
		transition:
			color var(--transition-fast),
			background-color var(--transition-fast);
	}

	.nav-menu a:hover {
		color: var(--color-text);
		background-color: var(--color-bg-alt);
	}

	.nav-menu a:focus-visible {
		outline: 2px solid var(--color-text);
		outline-offset: -2px;
		border-radius: 4px;
	}

	/* Active page — subtle background */
	.nav-menu a[aria-current="page"] {
		background-color: var(--color-bg-alt);
		border-radius: 8px;
	}

	/* ── Desktop — inline menu, no toggle ── */
	@media (min-width: 64rem) {
		.nav-toggle {
			display: none;
		}

		.site-branding {
			display: none;
		}

		.site-header .container {
			justify-content: center;
		}

		.nav-menu {
			position: static;
			flex-direction: row;
			align-items: center;
			gap: var(--space-xl);
			padding: 0;
			background: none;
			color: inherit;
			clip-path: none;
			visibility: visible;
			pointer-events: auto;
			transition: none;
		}

		.nav-menu a {
			padding: 0.3em 0.75em;
			font-size: var(--text-lg);
			color: inherit;
			background: none;
			border: 1.5px solid transparent;
			border-radius: var(--radius-btn);
			transition: opacity var(--transition-fast);
		}

		.nav-menu a:hover {
			opacity: 0.7;
			color: inherit;
			background: none;
		}

		.nav-menu a[aria-current="page"] {
			padding: 0.3em 0.75em;
			background-color: transparent;
			border: 1.5px solid currentColor;
			border-radius: var(--radius-btn);
		}

		.nav-menu a:focus-visible {
			outline-color: currentColor;
		}

		/* Topbar links are in the topbar on desktop — hide from nav */
		.nav-menu__topbar-item {
			display: none;
		}
	}

	/* Respect reduced motion */
	@media (prefers-reduced-motion: reduce) {
		.nav-toggle__bar {
			transition: none;
		}

		.nav-menu {
			clip-path: none;
			transition: visibility 0s;
		}

		.site-nav.is-open .nav-menu {
			transition: visibility 0s;
		}
	}
}
