/**
 * HP Blocksy Support — Core Layout Fixes
 *
 * Ensures HivePress grid, forms, buttons, pagination, and typography
 * render correctly within Blocksy's container system.
 */

/* === Container Integration === */
.ct-container .hp-row,
.ct-container-full .hp-row {
	display: flex;
	flex-wrap: wrap;
}

/* Prevent Blocksy max-width from constraining HP content */
.hp-page .entry-content,
.hp-page .ct-container {
	max-width: 100%;
}

/* === Forms === */
.hp-form .hp-field__input,
.hp-form input[type="text"],
.hp-form input[type="email"],
.hp-form input[type="password"],
.hp-form input[type="number"],
.hp-form input[type="url"],
.hp-form input[type="search"],
.hp-form textarea,
.hp-form select {
	width: 100%;
	padding: 10px 14px;
	border: 1px solid var(--hp-color-border, #ddd);
	border-radius: var(--hp-border-radius, 3px);
	font-size: 15px;
	line-height: 1.5;
	background: var(--hp-color-surface, #fff);
	color: var(--hp-color-text, #333);
	box-sizing: border-box;
}

.hp-form .hp-field__input:focus,
.hp-form input:focus,
.hp-form textarea:focus,
.hp-form select:focus {
	border-color: var(--hp-color-primary, #A8B9A4);
	box-shadow: 0 0 0 3px color-mix(in oklch, var(--hp-color-primary, #A8B9A4) 20%, transparent);
	outline: none; /* replaced by :focus-visible below for keyboard users */
}

/* Keyboard users get a high-contrast outline; #A8B9A4 border alone is <3:1 (WCAG 1.4.11) */
.hp-form .hp-field__input:focus-visible,
.hp-form input:focus-visible,
.hp-form textarea:focus-visible,
.hp-form select:focus-visible {
	outline: 2px solid var(--color-text-primary, #3A3530); /* 14:1 on ivory ✅ */
	outline-offset: 2px;
}

.hp-form .hp-field__label,
.hp-form label {
	display: block;
	margin-bottom: 6px;
	font-weight: 600;
	font-size: 14px;
	color: var(--hp-color-text, #333);
}

/* === Buttons === */
.hp-form__button,
button.hp-button,
a.hp-button,
input.hp-button[type="submit"] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--hp-button-min-height, 44px);
	padding: 10px 24px;
	border: none;
	border-radius: var(--hp-border-radius, 3px);
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
	text-decoration: none;
	text-align: center;
	background: var(--hp-color-primary, #A8B9A4);
	color: var(--color-text-inverse, #FAF3E3);
	line-height: 1.5;
	transition: background var(--duration-normal, 0.2s) var(--ease-default, ease);
}

.hp-form__button:focus-visible,
button.hp-button:focus-visible,
a.hp-button:focus-visible,
input.hp-button[type="submit"]:focus-visible {
	outline: 2px solid var(--color-text-primary, #3A3530); /* dark on ivory = 14:1 ✅ WCAG 1.4.11 */
	outline-offset: 2px;
}

.hp-form__button:hover,
button.hp-button:hover,
a.hp-button:hover {
	background: var(--hp-color-primary-hover, #8FA08A);
	color: var(--color-text-inverse, #FAF3E3);
}

/* === Pagination === */
.hp-pagination {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 8px;
	padding: 24px 0;
	list-style: none;
	margin: 0;
}

.hp-pagination a,
.hp-pagination span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	height: 44px;
	padding: 0 14px;
	border-radius: var(--hp-border-radius, 3px);
	font-size: 14px;
	font-weight: 500;
	text-decoration: none;
	transition: background var(--duration-normal, 0.2s) var(--ease-default, ease);
}

.hp-pagination a:focus-visible {
	outline: 2px solid var(--color-text-primary, #3A3530); /* 14:1 on ivory ✅ */
	outline-offset: 2px;
}

.hp-pagination a {
	background: var(--hp-color-surface, #EFEFEF);
	color: var(--hp-color-text, #333);
}

.hp-pagination a:hover {
	background: var(--hp-color-primary, #A8B9A4);
	color: var(--color-text-inverse, #FAF3E3);
}

.hp-pagination .hp-pagination__item--active span,
.hp-pagination .hp-pagination__item--current {
	background: var(--hp-color-primary, #A8B9A4);
	color: var(--color-text-inverse, #FAF3E3);
	font-weight: 700;
}

/* === Modal z-index (above Blocksy sticky header) === */
.hp-modal {
	z-index: 99999;
}

/* === Error shake (applied briefly by JS when a fetch fails) ===
   Chained selectors so this wins over *--active state colour without !important.
   Global reduced-motion block above neutralises the animation duration. */
.hpbs-fav-btn.hpbs-fav-btn--error,
.hpbs-follow-btn.hpbs-follow-btn--error,
.hpbs-subscribe-btn.hpbs-subscribe-btn--error {
	animation: hpbs-shake 0.45s cubic-bezier(0.36, 0.07, 0.19, 0.97);
	border-color: var(--color-error, #B85450);
	color: var(--color-error, #B85450);
}

@keyframes hpbs-shake {
	10%, 90% { transform: translate3d(-1px, 0, 0); }
	20%, 80% { transform: translate3d(2px, 0, 0); }
	30%, 50%, 70% { transform: translate3d(-3px, 0, 0); }
	40%, 60% { transform: translate3d(3px, 0, 0); }
}

/* === Notice Messages === */
.hp-notice {
	padding: 12px 16px;
	border-radius: var(--hp-border-radius, 3px);
	margin-bottom: 16px;
	font-size: 14px;
}

.hp-notice--success {
	background: var(--color-green-lightest);
	color: var(--color-green-dark);
	border: 1px solid var(--color-green-light);
}

.hp-notice--error {
	background: var(--color-pink-lightest);
	color: var(--color-pink-dark);
	border: 1px solid var(--color-pink-light);
}

/* === Page Headers (prevent Blocksy duplication) === */
.hp-page .entry-header,
.hp-page .page-header {
	margin-bottom: 0;
	padding-bottom: 0;
}

/* === Prevent Blocksy lazy load from hiding HP images === */
.hp-listing__image img.ct-lazy,
.hp-vendor__image img.ct-lazy {
	opacity: 1 !important;
}

/* === Vendor avatar: force circle regardless of image aspect ratio === */
.hp-vendor--view-block .hp-vendor__image img {
	aspect-ratio: 1 / 1;
	object-fit: cover;
}

/* === Reduced motion: honour user preference globally === */
@media (prefers-reduced-motion: reduce) {
	.hp-page *,
	.hp-page *::before,
	.hp-page *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}

	.hp-listing:hover .hp-listing__image img,
	.hp-listing:hover .hp-listing__images img {
		transform: none !important;
	}
}

/* === Dark mode: minimal surface/border/text remap on HP pages === */
@media (prefers-color-scheme: dark) {
	body.hp-page {
		--hp-color-bg: var(--color-bg-primary, #1a1714);
		--hp-color-surface: var(--color-bg-secondary, #221e1a);
		--hp-color-text: var(--color-text-primary, #E8E3D9);
		--hp-color-heading: var(--color-text-primary, #E8E3D9);
		--hp-color-muted: var(--color-text-tertiary, #9A9289);
		--hp-color-border: var(--color-bg-divider, #3A332C);
	}
}

/* === Sidebar width: override HP grid hp-col-sm-4 (33.33%) → 25% globally === */
/* Applies to all HP pages with left sidebar: account, vendor, listings, requests, bookings */
@media only screen and (min-width: 48em) {
	.hp-page__sidebar.hp-col-sm-4 {
		flex-basis: 25%;
		max-width: 25%;
	}

	.hp-page__content.hp-col-sm-8 {
		flex-basis: 75%;
		max-width: 75%;
	}
}
