/**
 * Header and footer.
 */

.bmg-header {
	position: sticky;
	inset-block-start: 0;
	z-index: var(--bmg-z-header);
	background: var(--bmg-surface-base);
	border-block-end: var(--bmg-border-hairline);
	transition: background var(--bmg-duration-base) var(--bmg-ease),
	            border-color var(--bmg-duration-base) var(--bmg-ease);
}

/* Over a hero image. Reverts to solid the moment the page scrolls, or the
   nav becomes unreadable against whatever passes beneath it. */
.bmg-header--transparent:not( .is-stuck ) {
	position: fixed;
	inset-inline: 0;
	background: transparent;
	border-block-end-color: transparent;
}

.bmg-header.is-stuck {
	background: color-mix( in srgb, var(--bmg-surface-deep) 92%, transparent );
	backdrop-filter: blur( 12px );
}

.bmg-header__inner {
	display: flex;
	align-items: center;
	gap: var(--bmg-space-md);
	min-block-size: 4.5rem;
	transition: min-block-size var(--bmg-duration-base) var(--bmg-ease);
}

.bmg-header.is-stuck .bmg-header__inner {
	min-block-size: 3.5rem;
}

.bmg-header__brand {
	flex: 0 0 auto;
	margin-inline-end: auto;
}

.bmg-header__title {
	font-family: var(--bmg-font-display);
	font-variation-settings: var(--bmg-display-settings-sm);
	font-size: var(--bmg-text-lg);
	color: var(--bmg-content-primary);
	text-decoration: none;
}

.bmg-header .custom-logo {
	max-block-size: 2.5rem;
	inline-size: auto;
}

/* --- navigation ------------------------------------------------------ */

.bmg-nav__list {
	display: flex;
	align-items: center;
	gap: var(--bmg-space-md);
	margin: 0;
	padding: 0;
	list-style: none;
}

.bmg-nav__list a {
	font-family: var(--bmg-font-utility);
	font-size: var(--bmg-text-sm);
	letter-spacing: var(--bmg-tracking-wide);
	text-transform: uppercase;
	color: var(--bmg-content-secondary);
	text-decoration: none;
}

.bmg-nav__list a:hover,
.bmg-nav__list .current-menu-item > a {
	color: var(--bmg-content-primary);
}

/* Sub-menus. Kept simple: one level, opened on hover and on focus, so
   keyboard users reach them without a script. */
.bmg-nav__list .sub-menu {
	position: absolute;
	min-inline-size: 12rem;
	margin: 0;
	padding: var(--bmg-space-2xs);
	list-style: none;
	background: var(--bmg-surface-raised);
	border: var(--bmg-border-hairline);
	border-radius: var(--bmg-radius-sm);
	box-shadow: var(--bmg-shadow-overlay);
	opacity: 0;
	visibility: hidden;
	transform: translateY( -4px );
	transition: opacity var(--bmg-duration-fast) var(--bmg-ease),
	            transform var(--bmg-duration-fast) var(--bmg-ease),
	            visibility var(--bmg-duration-fast);
}

.bmg-nav__list > li {
	position: relative;
}

.bmg-nav__list > li:hover > .sub-menu,
.bmg-nav__list > li:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.bmg-nav__aside {
	display: none;
}

/* --- actions --------------------------------------------------------- */

.bmg-header__actions {
	display: flex;
	align-items: center;
	gap: var(--bmg-space-md);
	flex: 0 0 auto;
}

.bmg-header__toggle {
	display: none;
	inline-size: 2.75rem;
	block-size: 2.75rem;
	padding: 0;
	background: none;
	border: 0;
	color: var(--bmg-content-primary);
	cursor: pointer;
	order: 3;
}

/* Three bars from one element: the middle is the element, the outer two
   are its pseudo-elements. */
.bmg-header__toggle-bars,
.bmg-header__toggle-bars::before,
.bmg-header__toggle-bars::after {
	display: block;
	inline-size: 20px;
	block-size: 1.5px;
	margin-inline: auto;
	background: currentColor;
	transition: transform var(--bmg-duration-fast) var(--bmg-ease),
	            opacity var(--bmg-duration-fast) var(--bmg-ease);
}

.bmg-header__toggle-bars::before,
.bmg-header__toggle-bars::after {
	content: "";
	position: relative;
}

.bmg-header__toggle-bars::before { inset-block-start: -6px; }
.bmg-header__toggle-bars::after  { inset-block-start: 4.5px; }

.bmg-header__toggle[aria-expanded="true"] .bmg-header__toggle-bars {
	background: transparent;
}

.bmg-header__toggle[aria-expanded="true"] .bmg-header__toggle-bars::before {
	transform: translateY( 6px ) rotate( 45deg );
}

.bmg-header__toggle[aria-expanded="true"] .bmg-header__toggle-bars::after {
	transform: translateY( -4.5px ) rotate( -45deg );
}

.bmg-header__scrim {
	position: fixed;
	inset: 0;
	z-index: -1;
	background: color-mix( in srgb, var(--bmg-surface-deep) 70%, transparent );
}

.bmg-header__scrim[hidden] {
	display: none;
}

/* --- mobile ---------------------------------------------------------- */

@media (max-width: 60rem) {
	.bmg-header__toggle {
		display: block;
	}

	/* The CTA stays out of the drawer at every width. Burying the booking
	   button behind a hamburger is the most common way a restaurant theme
	   loses bookings. */
	.bmg-header__state {
		display: none;
	}

	.bmg-nav {
		position: fixed;
		inset-block: 0;
		inset-inline-end: 0;
		inline-size: min( 20rem, 82vw );
		padding: 5rem var(--bmg-space-lg) var(--bmg-space-lg);
		background: var(--bmg-surface-raised);
		border-inline-start: var(--bmg-border-hairline);
		transform: translateX( 100% );
		transition: transform var(--bmg-duration-base) var(--bmg-ease-out);
		overflow-y: auto;
		overscroll-behavior: contain;
	}

	.bmg-nav.is-open {
		transform: none;
	}

	.bmg-nav__list {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
	}

	.bmg-nav__list > li {
		border-block-end: var(--bmg-border-hairline);
	}

	.bmg-nav__list a {
		display: block;
		padding-block: var(--bmg-space-sm);
		font-size: var(--bmg-text-base);
	}

	/* Nested items are always visible in the drawer. Hover has no meaning
	   on touch, and a submenu that needs a second tap to reveal is a
	   submenu nobody finds. */
	.bmg-nav__list .sub-menu {
		position: static;
		opacity: 1;
		visibility: visible;
		transform: none;
		box-shadow: none;
		border: 0;
		background: none;
		padding-inline-start: var(--bmg-space-sm);
	}

	.bmg-nav__aside {
		display: flex;
		flex-direction: column;
		gap: var(--bmg-space-2xs);
		margin-block-start: var(--bmg-space-lg);
	}

	.bmg-nav__phone {
		font-family: var(--bmg-font-utility);
		font-size: var(--bmg-text-md);
		color: var(--bmg-content-primary);
		text-decoration: none;
	}
}

@media (max-width: 30rem) {
	.bmg-header__cta {
		padding-inline: var(--bmg-space-sm);
		font-size: var(--bmg-text-2xs);
	}
}

/* --- footer ---------------------------------------------------------- */

.bmg-footer {
	margin-block-start: var(--bmg-section-y);
	padding-block-start: var(--bmg-space-2xl);
	background: var(--bmg-surface-deep);
	border-block-start: var(--bmg-border-brass);
}

.bmg-footer__inner {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( 14rem, 1fr ) );
	gap: var(--bmg-space-xl);
	padding-block-end: var(--bmg-space-2xl);
}

.bmg-footer__block {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--bmg-space-2xs);
}

.bmg-footer__address {
	font-style: normal;
	color: var(--bmg-content-secondary);
	line-height: var(--bmg-leading-normal);
}

.bmg-footer__phone {
	font-family: var(--bmg-font-utility);
	font-size: var(--bmg-text-md);
	color: var(--bmg-content-primary);
	text-decoration: none;
}

.bmg-hours {
	margin: 0;
	inline-size: 100%;
	max-inline-size: 20rem;
}

.bmg-hours__row {
	display: flex;
	justify-content: space-between;
	gap: var(--bmg-space-sm);
	padding-block: 2px;
	font-size: var(--bmg-text-sm);
	color: var(--bmg-content-muted);
}

.bmg-hours__row dt,
.bmg-hours__row dd {
	margin: 0;
}

.bmg-hours__row dd {
	font-variant-numeric: tabular-nums;
}

/* Today's line is the one a guest is looking for. */
.bmg-hours__row.is-today {
	color: var(--bmg-content-primary);
}

.bmg-footer__menu,
.bmg-footer__legal {
	margin: 0;
	padding: 0;
	list-style: none;
}

.bmg-footer__menu a,
.bmg-footer__legal a {
	color: var(--bmg-content-secondary);
	text-decoration: none;
	font-size: var(--bmg-text-sm);
}

.bmg-footer__menu a:hover,
.bmg-footer__legal a:hover {
	color: var(--bmg-content-primary);
}

.bmg-footer__menu li {
	padding-block: 3px;
}

.bmg-footer__base {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--bmg-space-sm);
	padding-block: var(--bmg-space-md);
	border-block-start: var(--bmg-border-hairline);
	font-size: var(--bmg-text-sm);
	color: var(--bmg-content-muted);
}

.bmg-footer__legal {
	display: flex;
	gap: var(--bmg-space-md);
}

.bmg-footer__copyright {
	margin: 0;
}

@media (prefers-reduced-motion: reduce) {
	.bmg-header,
	.bmg-header__inner,
	.bmg-nav,
	.bmg-nav__list .sub-menu,
	.bmg-header__toggle-bars,
	.bmg-header__toggle-bars::before,
	.bmg-header__toggle-bars::after {
		transition: none;
	}
}
