/* =========================================================================
 * Layout — header, logo, mobile menu, footer, sign-off band
 * ====================================================================== */

/* -------------------------------------------------------------------------
 * PS / Logo — the bright mark (cropped from its sprite, as in Figma) and
 * the "Private Suite" descriptor in Bebas Neue.
 * ---------------------------------------------------------------------- */

.bo-logo {
	display: inline-flex;
	align-items: flex-end;
	gap: 12px;
	color: inherit;
	text-decoration: none;
	flex-shrink: 0;
}

.bo-logo__mark {
	position: relative;
	display: block;
	width: var(--bo-logo-w, 124px);
	height: var(--bo-logo-h, 94px);
	overflow: hidden;
}

.bo-logo .bo-logo__img {
	display: block;
	position: absolute;
	top: -0.01%;
	left: -0.08%;
	width: 194.8%;
	max-width: none;
	height: 100.02%;
	transition: opacity var(--bo-hover) var(--bo-ease);
}

.bo-logo__descriptor {
	padding-bottom: calc(var(--bo-logo-h, 94px) * 0.2021);
	font-family: var(--bo-font-logo);
	font-weight: 400;
	font-size: var(--bo-logo-descriptor, 25px);
	line-height: 1.2;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	white-space: nowrap;
	transition: color var(--bo-hover) var(--bo-ease);
}

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

.bo-header {
	position: fixed;
	inset: 0 0 auto;
	z-index: 900;
	font-family: var(--bo-font-body);
	background: var(--ps-velvet);
	color: var(--ps-ivory);
	transition:
		background-color 360ms var(--bo-ease),
		color 360ms var(--bo-ease);
}

.admin-bar .bo-header { top: var(--wp-admin--admin-bar--height, 32px); }

.bo-header__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	height: var(--bo-header-h);
}

.bo-header__nav {
	display: flex;
	align-items: center;
	gap: max(24px, calc(44 * var(--bo-s)));
}

.bo-header__actions {
	display: flex;
	align-items: center;
	gap: max(20px, calc(32 * var(--bo-s)));
}

.bo-header .bo-link { color: var(--ps-ivory); }
.bo-header .bo-link:hover,
.bo-header .bo-link.is-current { color: var(--ps-brass-light); }

.bo-header .bo-logo__img--light { opacity: 0; }
.bo-header .bo-logo__descriptor { color: var(--ps-ivory); }

/* Header button: Brass on dark, Emerald on light — the two header variants */
.bo-header .bo-header__cta { background: var(--ps-brass-light); color: var(--ps-velvet); }
.bo-header .bo-header__cta:hover { background: var(--ps-ivory); color: var(--ps-velvet); }
.bo-header .bo-header__cta:active { background: var(--ps-stone); }

/* On light */
.bo-header[data-tone='light'] {
	background: var(--ps-ivory);
	color: var(--ps-ink);
}
.bo-header[data-tone='light'] .bo-link { color: var(--ps-ink); }
.bo-header[data-tone='light'] .bo-link:hover,
.bo-header[data-tone='light'] .bo-link.is-current { color: var(--ps-emerald); }
.bo-header[data-tone='light'] .bo-logo__img--dark { opacity: 0; }
.bo-header[data-tone='light'] .bo-logo__img--light { opacity: 1; }
.bo-header[data-tone='light'] .bo-logo__descriptor { color: var(--ps-ink-muted); }
.bo-header[data-tone="light"] .bo-header__cta { background: var(--ps-emerald); color: var(--ps-paper); }
.bo-header[data-tone="light"] .bo-header__cta:hover { background: var(--ps-velvet); color: var(--ps-paper); }
.bo-header[data-tone="light"] .bo-header__cta:active { background: var(--ps-ink); }

/* Menu toggle (tablet and phone) */
.bo-header__toggle {
	display: none;
	position: relative;
	width: 48px;
	height: 48px;
	margin-right: -8px;
	padding: 0;
	border: 0;
	background: transparent;
	color: inherit;
	cursor: pointer;
}

.bo-header__toggle-lines,
.bo-header__toggle-lines::before,
.bo-header__toggle-lines::after {
	position: absolute;
	left: 12px;
	width: 24px;
	height: 1.5px;
	background: currentColor;
	transition: transform 320ms var(--bo-ease), opacity 200ms var(--bo-ease), top 320ms var(--bo-ease);
}

.bo-header__toggle-lines { top: 23px; }
.bo-header__toggle-lines::before,
.bo-header__toggle-lines::after { content: ''; left: 0; }
.bo-header__toggle-lines::before { top: -7px; }
.bo-header__toggle-lines::after { top: 7px; }

.bo-header.is-menu-open .bo-header__toggle-lines { background: transparent; }
.bo-header.is-menu-open .bo-header__toggle-lines::before { top: 0; transform: rotate(45deg); background: var(--ps-ivory); }
.bo-header.is-menu-open .bo-header__toggle-lines::after { top: 0; transform: rotate(-45deg); background: var(--ps-ivory); }

/* Mobile menu */
.bo-mobile-nav {
	position: fixed;
	inset: var(--bo-header-h) 0 0;
	overflow-y: auto;
	background: var(--ps-velvet);
	color: var(--ps-ivory);
	opacity: 0;
	transform: translateY(-12px);
	transition: opacity 320ms var(--bo-ease), transform 420ms var(--bo-ease-out);
}

.bo-mobile-nav[hidden] { display: block; visibility: hidden; pointer-events: none; }
.bo-header.is-menu-open .bo-mobile-nav { visibility: visible; pointer-events: auto; opacity: 1; transform: none; }
.bo-header.is-menu-open { background: var(--ps-velvet); color: var(--ps-ivory); }
.bo-header.is-menu-open .bo-logo__img--dark { opacity: 1; }
.bo-header.is-menu-open .bo-logo__img--light { opacity: 0; }
.bo-header.is-menu-open .bo-logo__descriptor { color: var(--ps-ivory); }

.bo-mobile-nav__inner {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
	padding-block: 32px 48px;
	border-top: 1px solid var(--ps-line-dark);
}

.bo-mobile-nav__link {
	color: var(--ps-ivory);
	font-family: var(--bo-font-display);
	font-size: 40px;
	line-height: 1.25;
	letter-spacing: -0.01em;
	text-decoration: none;
	transition: color var(--bo-hover) var(--bo-ease);
}

.bo-mobile-nav__link:hover,
.bo-mobile-nav__link.is-current { color: var(--ps-brass-light); }

.bo-mobile-nav__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 32px;
}

html.bo-menu-open { overflow: hidden; }

@media (max-width: 1399px) {
	.bo-header__phone { display: none; }
}

@media (max-width: 1159px) {
	.bo-header__nav { display: none; }
	.bo-header__toggle { display: block; }
}

@media (min-width: 1160px) {
	.bo-mobile-nav { display: none !important; }
}

@media (max-width: 1023px) {
	.bo-header { --bo-logo-w: 84px; --bo-logo-h: 64px; --bo-logo-descriptor: 19px; }
}

@media (max-width: 767px) {
	.bo-header { --bo-logo-w: 72px; --bo-logo-h: 55px; --bo-logo-descriptor: 17px; }
	.bo-header__cta { padding: 14px 22px; font-size: 15px; }
	.bo-mobile-nav__link { font-size: 34px; }
}

@media (max-width: 419px) {
	.bo-header__cta { display: none; }
}

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

.bo-footer {
	border-top: 2px solid var(--ps-velvet);
	background: var(--ps-velvet);
	color: var(--ps-ivory);
	font-family: var(--bo-font-body);
}

.bo-footer__inner {
	display: flex;
	flex-direction: column;
	gap: max(48px, calc(88 * var(--bo-s)));
	padding-top: max(64px, calc(112 * var(--bo-s)));
	padding-bottom: 48px;
}

.bo-footer__top {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 40px;
}

.bo-footer__brand {
	display: flex;
	flex: 0 1 420px;
	min-width: 0;
	flex-direction: column;
	align-items: flex-start;
	gap: 28px;
}

.bo-footer .bo-logo__descriptor { color: var(--ps-ivory); }

.bo-footer .bo-footer__description {
	width: 100%;
	max-width: 420px;
	margin: 0;
	color: var(--ps-on-dark-muted);
	font-size: 18px;
	line-height: 30px;
	letter-spacing: -0.01em;
}

.bo-footer__col {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
}

.bo-footer .bo-footer__label {
	margin: 0 0 10px;
	color: var(--ps-brass-light);
	font-weight: 500;
	font-size: 14px;
	line-height: 20px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.bo-footer .bo-link { color: var(--ps-ivory); }
.bo-footer .bo-link:hover { color: var(--ps-brass-light); }
.bo-footer .bo-link--static:hover { color: var(--ps-ivory); }
.bo-footer .bo-link--static::after { display: none; }

.bo-footer__legal {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px 32px;
	padding-top: 28px;
	border-top: 1px solid var(--ps-line-dark);
	color: var(--ps-on-dark-muted);
	font-size: 15px;
	line-height: 24px;
}

.bo-footer .bo-footer__copyright { margin: 0; }

.bo-footer__legal-links {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 32px;
}

.bo-footer__legal-links a {
	color: var(--ps-on-dark-muted);
	text-decoration: none;
	transition: color var(--bo-hover) var(--bo-ease);
}

.bo-footer__legal-links a:hover { color: var(--ps-brass-light); }

@media (max-width: 1199px) {
	.bo-footer__top {
		display: grid;
		grid-template-columns: repeat(3, minmax(0, auto));
		justify-content: space-between;
		row-gap: 56px;
	}
	.bo-footer__brand { grid-column: 1 / -1; }
	.bo-footer__col { min-width: 0; }
	.bo-footer .bo-link--footer { white-space: normal; align-items: flex-start; max-width: 100%; overflow-wrap: anywhere; }
}

@media (max-width: 767px) {
	.bo-footer__top { grid-template-columns: minmax(0, 1fr); row-gap: 40px; }
	.bo-footer__col { min-width: 0; }
	.bo-footer .bo-link--footer { max-width: 100%; overflow-wrap: anywhere; }
	.bo-footer__legal { flex-direction: column; align-items: flex-start; }
	.bo-footer .bo-link { white-space: normal; align-items: flex-start; }
}

/* -------------------------------------------------------------------------
 * Sign-off — Proto / Sign-off
 * ---------------------------------------------------------------------- */

.bo-sign-off {
	overflow: hidden;
	padding-block: max(64px, calc(100 * var(--bo-s)));
}

.bo-sign-off__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 32px;
}

.bo-sign-off__heading {
	color: var(--ps-ivory);
	white-space: nowrap;
}

@media (max-width: 1023px) {
	.bo-sign-off__row {
		flex-direction: column;
		align-items: flex-start;
	}
	.bo-sign-off__heading { white-space: normal; }
}

/* Narrow phones: footer links a touch smaller so the email fits one line;
   if it still cannot, it wraps after the @ rather than mid-word. */
@media (max-width: 479px) {
	.bo-footer .bo-link--footer { font-size: 16px; line-height: 28px; overflow-wrap: normal; }
}
