/* Public page layout, layered after the shared foundation and preset paints. */
body:not(.wp-admin) .vs-site-header :is(.vs-header-cta, .vs-main-nav__mobile-action).vs-button {
	height: auto;
	min-height: var(--vs-btn-sm-height);
	padding: var(--vs-btn-sm-padding);
	/* Existing preset paints are important; keep these overrides local to header actions. */
	border: 1px solid var(--vs-btn-primary-bg) !important;
	border-radius: var(--vs-radius) !important;
	background: var(--vs-btn-primary-bg) !important;
	color: var(--vs-btn-primary-fg) !important;
	box-shadow: none !important;
	font: var(--vs-btn-font);
	font-size: var(--vs-btn-sm-size);
	letter-spacing: 0;
	text-transform: none;
	text-decoration: none;
	transition: var(--vs-btn-transition);
}
body:not(.wp-admin) .vs-site-header :is(.vs-header-cta, .vs-main-nav__mobile-action).vs-button:is(:hover, :focus-visible) {
	background: var(--vs-btn-primary-hover) !important;
}
body:not(.wp-admin) .vs-site-header :is(.vs-header-cta, .vs-main-nav__mobile-action).vs-button--secondary {
	border-color: var(--vs-btn-secondary-border) !important;
	background: transparent !important;
	color: var(--vs-btn-fg) !important;
}
body:not(.wp-admin) .vs-site-header :is(.vs-header-cta, .vs-main-nav__mobile-action).vs-button--secondary:is(:hover, :focus-visible) {
	border-color: var(--vs-btn-fg) !important;
	background: var(--vs-btn-secondary-hover) !important;
}
body:not(.wp-admin) .vs-site-header .vs-header-cta::after { content: none; }

body:not(.wp-admin) .vs-site-footer {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
	align-items: start;
	gap: var(--vs-space-5) var(--vs-space-7);
}
body:not(.wp-admin) .vs-site-footer .vs-footer-brand { grid-column: 1; grid-row: 1 / 3; }
body:not(.wp-admin) .vs-footer-brand .vs-brand-lockup { margin: 0; padding: 0; }
/* The wordmark and strapline share the container edge; no floating planet over links. */
body:not(.wp-admin) .vs-footer-brand .vs-brand-mark { display: none; }
body:not(.wp-admin) .vs-site-footer nav {
	grid-column: 2;
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-start;
	gap: var(--vs-space-2) var(--vs-space-4);
	margin: 0;
}
body:not(.wp-admin) .vs-site-footer .vs-social-links { grid-row: 2; }
body:not(.wp-admin) .vs-site-footer::after { content: none; }

body:not(.wp-admin) .vs-home .vs-hero__headline h1 {
	max-width: 14ch;
	white-space: normal;
	text-wrap: balance;
}
body:not(.wp-admin) .vs-community-index .vs-dispatch-grid article {
	display: flex;
	flex-direction: column;
	align-items: stretch;
}
body:not(.wp-admin) .vs-community-index .vs-dispatch-grid h2 {
	min-height: 0;
	font-size: clamp(1.35rem, 2vw, 1.75rem);
	text-wrap: balance;
}
body:not(.wp-admin) .vs-community-index .vs-dispatch-grid article > p:not(.vs-eyebrow) { min-height: 0; }
body:not(.wp-admin) .vs-community-index .vs-dispatch-grid article > a:last-child {
	margin-top: auto;
	padding-top: var(--vs-space-4);
}

/* The shared auth shell has no route class. Scope by its existing form action,
 * so account settings and community forms keep their independent layout. */
body:not(.wp-admin) .vs-player:has(input[name="vs_player_action"]:is([value="sign_in"], [value="register"], [value="forgot_password"], [value="reset_password"])) .vs-player__inner {
	width: 100%;
	max-width: 440px;
	margin-inline: auto;
}
body:not(.wp-admin) .vs-player:has(input[name="vs_player_action"]:is([value="sign_in"], [value="register"], [value="forgot_password"], [value="reset_password"])) :is(.vs-player__intro, .vs-player__alternate) {
	text-align: center;
}
body:not(.wp-admin) .vs-player__panel:has(input[name="vs_player_action"]:is([value="sign_in"], [value="register"], [value="forgot_password"], [value="reset_password"])) {
	box-sizing: border-box;
	width: 100%;
	max-width: 440px;
	margin-inline: auto;
	padding: var(--vs-space-5);
	border-radius: var(--vs-radius);
}
body:not(.wp-admin) .vs-player__form:has(input[name="vs_player_action"]:is([value="sign_in"], [value="register"], [value="forgot_password"], [value="reset_password"])) :is(input:not([type="checkbox"]):not([type="hidden"]), button[type="submit"]) {
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
}

@media (max-width: 599px) {
	body:not(.wp-admin) .vs-site-footer { grid-template-columns: minmax(0, 1fr); }
	body:not(.wp-admin) .vs-site-footer :is(.vs-footer-brand, nav, .vs-social-links) { grid-column: 1; grid-row: auto; }
}
