/* ==========================================================================
   PrepSora — Layout / Site Shell
   Header, primary navigation, mobile menu, and footer.
   Depends on tokens defined in prepsora-design-system.css.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Skip link (accessibility)
   -------------------------------------------------------------------------- */
.ps-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 1000;
	background: var(--ps-navy-900);
	color: #fff;
	padding: var(--ps-space-3) var(--ps-space-4);
	border-radius: 0 0 var(--ps-radius) 0;
	font-weight: 600;
}
.ps-skip-link:focus { left: 0; color: #fff; text-decoration: none; }

/* --------------------------------------------------------------------------
   Wordmark (text logo fallback + footer brand)
   -------------------------------------------------------------------------- */
.ps-wordmark {
	font-family: var(--ps-font-display);
	font-weight: 800;
	font-size: 1.4rem;
	letter-spacing: -0.02em;
	display: inline-flex;
	text-decoration: none;
	line-height: 1;
}
.ps-wordmark:hover { text-decoration: none; }
.ps-wordmark__prep { color: var(--ps-navy-900); }
.ps-wordmark__sora { color: var(--ps-teal-600); }
.ps-wordmark--light .ps-wordmark__prep { color: #fff; }
.ps-wordmark--light .ps-wordmark__sora { color: var(--ps-teal-400); }

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */
.ps-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: rgba(255, 255, 255, 0.9);
	-webkit-backdrop-filter: saturate(180%) blur(10px);
	backdrop-filter: saturate(180%) blur(10px);
	border-bottom: 1px solid var(--ps-border);
	transition: box-shadow var(--ps-transition);
}
.ps-header.is-scrolled { box-shadow: var(--ps-shadow-sm); }

.ps-header__inner {
	display: flex;
	align-items: center;
	gap: var(--ps-space-5);
	min-height: 72px;
}

.ps-header__brand { display: flex; align-items: center; }
.ps-header__brand .custom-logo-link { display: inline-flex; line-height: 0; }
.ps-header__brand .custom-logo { max-height: 44px; width: auto; height: auto; display: block; }

/* Primary nav (desktop) */
.ps-nav { margin-left: auto; }
.ps-menu {
	list-style: none;
	display: flex;
	align-items: center;
	gap: var(--ps-space-5);
	margin: 0;
	padding: 0;
}
.ps-menu a {
	position: relative;
	font-family: var(--ps-font-body);
	font-weight: 500;
	font-size: var(--ps-text-base);
	color: var(--ps-navy-800);
	text-decoration: none;
	padding: 0.5rem 0;
}
.ps-menu a:hover { color: var(--ps-primary); text-decoration: none; }
.ps-menu .current-menu-item > a,
.ps-menu .current_page_item > a { color: var(--ps-primary); }
.ps-menu a::after {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: -2px;
	height: 2px;
	background: var(--ps-primary);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform var(--ps-transition);
}
.ps-menu a:hover::after,
.ps-menu .current-menu-item > a::after { transform: scaleX(1); }

/* Header actions */
.ps-header__actions {
	display: flex;
	align-items: center;
	gap: var(--ps-space-4);
}
.ps-header__login { font-weight: 600; color: var(--ps-navy-800); }
.ps-header__login:hover { color: var(--ps-primary); text-decoration: none; }
.ps-header__cta { padding: 0.6rem 1.15rem; font-size: var(--ps-text-sm); }

/* Hamburger toggle (hidden on desktop) */
.ps-nav-toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 44px;
	height: 44px;
	padding: 0 10px;
	background: transparent;
	border: 1px solid var(--ps-border-strong);
	border-radius: var(--ps-radius-sm);
	cursor: pointer;
}
.ps-nav-toggle__bar {
	display: block;
	width: 100%;
	height: 2px;
	background: var(--ps-navy-900);
	transition: transform var(--ps-transition), opacity var(--ps-transition);
}
.ps-header.is-open .ps-nav-toggle__bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.ps-header.is-open .ps-nav-toggle__bar:nth-child(2) { opacity: 0; }
.ps-header.is-open .ps-nav-toggle__bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Mobile nav */
@media (max-width: 900px) {
	.ps-nav {
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		margin-left: 0;
		display: none;
		background: #fff;
		border-bottom: 1px solid var(--ps-border);
		box-shadow: var(--ps-shadow);
	}
	.ps-header.is-open .ps-nav { display: block; }
	.ps-menu {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding: var(--ps-space-2) var(--ps-space-5) var(--ps-space-4);
	}
	.ps-menu a { display: block; padding: 0.9rem 0; border-bottom: 1px solid var(--ps-slate-100); }
	.ps-menu a::after { display: none; }
	.ps-header__actions { margin-left: auto; }
	.ps-nav-toggle { display: flex; }
}
@media (max-width: 520px) {
	.ps-header__login { display: none; }
}

/* --------------------------------------------------------------------------
   Main wrapper
   -------------------------------------------------------------------------- */
.ps-main { display: block; }

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */
.ps-footer {
	background: var(--ps-navy-900);
	color: var(--ps-text-on-dark);
	margin-top: var(--ps-space-9);
}
.ps-footer__top {
	display: grid;
	grid-template-columns: 1.6fr 1fr 1fr 1fr;
	gap: var(--ps-space-6);
	padding-block: var(--ps-space-8) var(--ps-space-6);
}
.ps-footer__tagline {
	color: var(--ps-teal-300);
	font-weight: 600;
	margin: var(--ps-space-3) 0;
}
.ps-footer__blurb {
	color: var(--ps-text-on-dark-muted);
	font-size: var(--ps-text-sm);
	max-width: 36ch;
	margin: 0;
}
.ps-footer__heading {
	color: #fff;
	font-size: var(--ps-text-base);
	margin-bottom: var(--ps-space-4);
}
.ps-footer__links { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--ps-space-3); }
.ps-footer__links a { color: var(--ps-text-on-dark-muted); font-size: var(--ps-text-sm); text-decoration: none; }
.ps-footer__links a:hover { color: #fff; text-decoration: none; }

.ps-footer__disclaimer {
	padding-block: var(--ps-space-5);
	border-top: 1px solid var(--ps-navy-700);
}
.ps-footer__disclaimer p {
	color: var(--ps-navy-300);
	font-size: var(--ps-text-xs);
	line-height: 1.6;
	margin: 0;
	max-width: 90ch;
}

.ps-footer__bottom { background: var(--ps-navy-950); }
.ps-footer__bottom-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--ps-space-4);
	padding-block: var(--ps-space-4);
	flex-wrap: wrap;
}
.ps-footer__copy { color: var(--ps-navy-300); font-size: var(--ps-text-xs); margin: 0; }
.ps-footer__legal { list-style: none; display: flex; gap: var(--ps-space-4); margin: 0; padding: 0; }
.ps-footer__legal a { color: var(--ps-navy-300); font-size: var(--ps-text-xs); text-decoration: none; }
.ps-footer__legal a:hover { color: #fff; }

@media (max-width: 900px) {
	.ps-footer__top { grid-template-columns: 1fr 1fr; }
	.ps-footer__brand { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
	.ps-footer__top { grid-template-columns: 1fr; }
	.ps-footer__bottom-inner { flex-direction: column; align-items: flex-start; }
}
