/**

 * Homepage — locations, CTA, legacy class aliases.

 *

 * @package Havenlytics_Realty

 */



/* Property locations */

.hvn-realty-locations__grid {

	display: grid;

	grid-template-columns: repeat(4, 1fr);

	gap: 1.25rem;

	list-style: none;

	margin: 0;

	padding: 0;

}



.hvn-realty-locations__card {

	display: flex;

	flex-direction: column;

	height: 100%;

	text-decoration: none;

	border-radius: calc(var(--hvn-radius, 8px) + 4px);

	overflow: hidden;

	background: #fff;

	border: 1px solid var(--hvn-border, #e4e4ed);

	box-shadow: 0 10px 30px rgba(15, 23, 42, 0.06);

	transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;

}



.hvn-realty-locations__card:hover,

.hvn-realty-locations__card:focus {

	transform: translateY(-4px);

	border-color: color-mix(in srgb, var(--hvn-primary, #6c60fe) 35%, var(--hvn-border, #e4e4ed));

	box-shadow: 0 16px 40px color-mix(in srgb, var(--hvn-primary, #6c60fe) 14%, transparent);

}



.hvn-realty-locations__media {

	position: relative;

	display: block;

	aspect-ratio: 4 / 3;

	overflow: hidden;

	background: linear-gradient(135deg, rgba(108, 96, 254, 0.12), rgba(118, 75, 162, 0.08));

}



.hvn-realty-locations__media--placeholder {

	display: flex;

	align-items: center;

	justify-content: center;

}



.hvn-realty-locations__image {

	display: block;

	width: 100%;

	height: 100%;

	object-fit: cover;

	transition: transform 0.35s ease;

}



.hvn-realty-locations__card:hover .hvn-realty-locations__image,

.hvn-realty-locations__card:focus .hvn-realty-locations__image {

	transform: scale(1.05);

}



.hvn-realty-locations__icon {

	font-size: 2.5rem;

	color: var(--hvn-primary, #6c60fe);

	opacity: 0.75;

}



.hvn-realty-locations__overlay {

	position: absolute;

	inset: 0;

	background: linear-gradient(180deg, rgba(15, 23, 42, 0) 35%, rgba(15, 23, 42, 0.72) 100%);

	pointer-events: none;

}



.hvn-realty-locations__count {

	position: absolute;

	top: 0.75rem;

	right: 0.75rem;

	z-index: 1;

	padding: 0.35rem 0.65rem;

	border-radius: 999px;

	font-size: 0.75rem;

	font-weight: 600;

	color: var(--hvn-text, #1e1e2f);

	background: rgba(255, 255, 255, 0.92);

	box-shadow: 0 4px 14px rgba(15, 23, 42, 0.1);

}



.hvn-realty-locations__body {

	display: flex;

	flex-direction: column;

	gap: 0.25rem;

	padding: 1rem 1.1rem 1.15rem;

}



.hvn-realty-locations__title {

	font-size: 1.05rem;

	font-weight: 700;

	color: var(--hvn-text, #1e1e2f);

	line-height: 1.3;

}



.hvn-realty-locations__link-text {

	font-size: 0.875rem;

	font-weight: 600;

	color: var(--hvn-primary, #6c60fe);

}



.hvn-realty-locations__empty {

	margin: 0;

	text-align: center;

	color: color-mix(in srgb, var(--hvn-text, #1e1e2f) 70%, transparent);

}



/* CTA banner */

.hvn-realty-section--cta {

	position: relative;

	overflow: hidden;

	color: #fff;

	background:

		linear-gradient(135deg, color-mix(in srgb, var(--hvn-primary, #6c60fe) 88%, #000) 0%, color-mix(in srgb, var(--hvn-secondary, #764ba2) 82%, #000) 100%);

}



.hvn-realty-section--cta-has-image {

	background: transparent;

}



.hvn-realty-cta__backdrop {

	position: absolute;

	inset: 0;

	z-index: 0;

	background:

		linear-gradient(135deg, color-mix(in srgb, var(--hvn-primary, #6c60fe) 88%, #000) 0%, color-mix(in srgb, var(--hvn-secondary, #764ba2) 82%, #000) 100%);

}



.hvn-realty-section--cta-has-image .hvn-realty-cta__backdrop {

	background-image:

		linear-gradient(

			135deg,

			rgba(15, 23, 42, calc(var(--hvn-realty-cta-overlay, 65) / 100)) 0%,

			rgba(30, 30, 47, calc(var(--hvn-realty-cta-overlay, 65) / 100 * 0.85)) 100%

		),

		var(--hvn-realty-cta-bg-image);

	background-size: cover;

	background-position: center center;

	background-repeat: no-repeat;

}



.hvn-realty-section--cta .hvn-realty-container {

	position: relative;

	z-index: 1;

}



.hvn-realty-cta__inner {

	text-align: center;

	max-width: 44rem;

	margin: 0 auto;

}



.hvn-realty-cta__title {

	margin: 0 0 0.75rem;

	font-size: clamp(1.5rem, 3vw, 2rem);

	color: inherit;

	font-family: var(--hvn-font-heading, inherit);

}



.hvn-realty-cta__text {

	margin: 0 0 1.5rem;

	opacity: 0.92;

	font-size: 1.05rem;

}



.hvn-realty-cta__actions {

	display: flex;

	flex-wrap: wrap;

	gap: 0.75rem;

	justify-content: center;

}



.hvn-realty-section--cta .hvn-realty-btn--primary {

	background: var(--hvn-primary, #6c60fe);

}



.hvn-realty-section--cta .hvn-realty-btn--secondary {

	background: #fff;

	color: var(--hvn-primary, #6c60fe);

	border-color: #fff;

}



.hvn-realty-section--cta .hvn-realty-btn--on-dark {

	color: #fff;

	border-color: rgba(255, 255, 255, 0.85);

}



.hvn-realty-section--featured .hvn-realty-section__subtitle--inline {

	margin: 0.35rem 0 0;

	text-align: left;

}



@media (max-width: 1024px) {

	.hvn-realty-locations__grid {

		grid-template-columns: repeat(2, 1fr);

	}

}



@media (max-width: 640px) {

	.hvn-realty-locations__grid {

		grid-template-columns: 1fr;

	}



	.hvn-realty-cta__actions {

		flex-direction: column;

		align-items: stretch;

	}

}



/* Backward-compatible aliases */

.hvn-realty-home-section { padding: clamp(2.5rem, 5vw, 4rem) 0; }

.hvn-theme-container { max-width: var(--hvn-container, 1280px); margin-inline: auto; padding-inline: var(--hvn-theme-space-md, 1rem); }

.hvn-realty-home-btn { display: inline-flex; align-items: center; justify-content: center; padding: 0.75rem 1.5rem; border-radius: var(--hvn-radius, 8px); font-weight: 600; text-decoration: none; border: 2px solid transparent; }

.hvn-realty-home-btn--outline { background: transparent; color: var(--hvn-primary, #6c60fe); border-color: var(--hvn-primary, #6c60fe); }

.hvn-realty-home-btn--outline:hover, .hvn-realty-home-btn--outline:focus { background: var(--hvn-primary, #6c60fe); color: #fff; }

.hvn-realty-home-btn--primary { background: var(--hvn-primary, #6c60fe); color: #fff; }

.hvn-realty-home-section__actions { margin: 2rem 0 0; text-align: center; }

.hvn-realty-categories__list,

.hvn-realty-home-categories__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; list-style: none; margin: 0; padding: 0; }


