/* =========================================================
   Header / footer chrome — STRUCTURE ONLY.

   No colour, type, border or shadow. The starter's header and
   footer are a working layout and nothing else, so a build
   applies its own design without first undoing someone
   else's.

   Spacing is exposed as --fw-* tokens defaulting to 0, matching
   the convention in the block stylesheets.

   Keep the markup contract documented in header.php — the
   off-canvas mobile nav reads it.
   ========================================================= */

/* ---- Visually hidden -------------------------------------------
   clip-path is load bearing here, not decoration: without it the
   skip link is readable on screen. */

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.fw-skip-link:focus {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 1000;
	width: auto;
	height: auto;
	margin: 0;
	padding: var(--fw-skip-link-padding, 0);
	clip-path: none;
}

/* ---- Header ---------------------------------------------------- */

.fw-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--fw-header-inner-gap, 0);
	max-width: var(--fw-header-inner-max-width, none);
	margin-inline: auto;
	padding: var(--fw-header-inner-padding, 0);
}

.fw-logo img {
	display: block;
	max-height: var(--fw-logo-max-height, none);
	width: auto;
}

.fw-nav {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--fw-nav-gap, 0);
	margin: 0;
	padding: 0;
	list-style: none;
}

.fw-nav li { position: relative; }

/* Desktop sub-menus. The off-canvas script takes over below the
   breakpoint below. */
.fw-nav .sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	z-index: 20;
	display: none;
	min-width: var(--fw-sub-menu-min-width, none);
	margin: 0;
	padding: var(--fw-sub-menu-padding, 0);
	list-style: none;
}

.fw-nav li:hover > .sub-menu,
.fw-nav li:focus-within > .sub-menu { display: block; }

.fw-nav .sub-menu a { display: block; padding: var(--fw-sub-menu-link-padding, 0); }

/* ---- Mobile toggle --------------------------------------------- */

.fw-menu-btn {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: var(--fw-menu-btn-gap, 0);
	width: var(--fw-menu-btn-width, 44px);
	height: var(--fw-menu-btn-height, 44px);
	padding: 0;
	background: none;
	border: 0;
	cursor: pointer;
}

.fw-menu-btn__bar {
	display: block;
	width: var(--fw-menu-btn-bar-width, 24px);
	height: var(--fw-menu-btn-bar-height, 2px);
	margin-inline: auto;
	background: currentColor;
}

@media (max-width: 768px) {
	.fw-header__nav { display: none; }
	.fw-menu-btn { display: flex; }
}

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

.fw-footer {
	margin-top: var(--fw-footer-margin-top, 0);
	padding: var(--fw-footer-padding, 0);
}

.fw-footer__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--fw-footer-inner-gap, 0);
	max-width: var(--fw-footer-inner-max-width, none);
	margin-inline: auto;
	padding: var(--fw-footer-inner-padding, 0);
}

.fw-footer__menu {
	display: flex;
	flex-wrap: wrap;
	gap: var(--fw-footer-menu-gap, 0);
	margin: 0;
	padding: 0;
	list-style: none;
}

.fw-footer__copyright { margin: 0; }
