/* Front-end + editor styling for the real-estate/* custom blocks. */

.ret-block { margin: 2.5rem 0; }
.ret-block__title {
	font-size: 1.4rem;
	position: relative;
	padding-bottom: 0.5em;
	margin-bottom: 1.25rem;
}
.ret-block__title::after {
	content: "";
	position: absolute;
	bottom: 0; left: 0;
	width: 42px; height: 3px;
	background: var(--color-primary, #a8442c);
	border-radius: 2px;
}

/* Feature list */
.ret-feature-list__items { list-style: none; margin: 0; padding: 0; }
.ret-feature-list--distance .ret-feature-list__items li {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.65em 0;
	border-bottom: 1px solid var(--color-border, #e3d5bc);
}
.ret-feature-list--distance .ret-feature-list__value { color: var(--color-text-muted, #746a5a); white-space: nowrap; }
.ret-feature-list--amenities .ret-feature-list__items {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap: 0.75rem 1.5rem;
}
.ret-feature-list--amenities .ret-feature-list__items li { display: flex; align-items: center; gap: 0.6em; }
.ret-feature-list__check {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px; height: 22px;
	border-radius: 50%;
	background: var(--color-primary, #a8442c);
	color: var(--color-on-primary, #fdf8f2);
	font-size: 0.75rem;
	flex-shrink: 0;
}

/* Image set: carousel */
.ret-carousel { position: relative; }
.ret-carousel__track {
	display: flex;
	gap: 1rem;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	padding-bottom: 0.5rem;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
}
.ret-carousel__track::-webkit-scrollbar { display: none; }
.ret-carousel__slide {
	flex: 0 0 min(360px, 85%);
	scroll-snap-align: start;
	margin: 0;
	border-radius: var(--radius-md, 10px);
	overflow: hidden;
	background: var(--color-surface, #f2e9db);
}
.ret-carousel__slide img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.ret-carousel__slide figcaption { padding: 0.6em 0.8em; font-size: 0.85rem; color: var(--color-text-muted, #746a5a); }

/* Hero variant: one full-width photo per slide (single-listing.php gallery) */
.ret-carousel--hero .ret-carousel__track { gap: 0; padding-bottom: 0; }
.ret-carousel--hero .ret-carousel__slide {
	flex: 0 0 100%;
	border-radius: var(--radius-lg, 20px);
}
.ret-carousel--hero .ret-carousel__slide img { aspect-ratio: 16 / 9; }
.ret-carousel--hero .ret-carousel__nav { top: 50%; }
.ret-carousel__nav {
	display: none;
	position: absolute;
	top: 40%;
	transform: translateY(-50%);
	width: 40px; height: 40px;
	border-radius: 50%;
	border: 1px solid var(--color-border, #e3d5bc);
	background: var(--color-bg, #faf6ef);
	color: var(--color-text, #2b241c);
	font-size: 1.3rem;
	line-height: 1;
	cursor: pointer;
	align-items: center;
	justify-content: center;
	box-shadow: var(--shadow-sm, 0 1px 2px rgba(0,0,0,0.1));
}
.ret-carousel__nav--prev { left: -8px; }
.ret-carousel__nav--next { right: -8px; }
@media (min-width: 640px) {
	.ret-carousel__nav { display: flex; }
}
.ret-carousel--no-overflow .ret-carousel__nav { display: none; }

/* Image set: grid */
.ret-image-set__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 1.25rem;
}
.ret-image-set__grid figure { margin: 0; border-radius: var(--radius-md, 10px); overflow: hidden; background: var(--color-surface, #f2e9db); }
.ret-image-set__grid img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.ret-image-set__grid figcaption { padding: 0.6em 0.8em; font-size: 0.85rem; color: var(--color-text-muted, #746a5a); }

/* Lightbox (click-to-enlarge gallery images -- see assets/js/lightbox.js) */
.ret-lightbox-gallery img { cursor: zoom-in; }
body.ret-lightbox-open { overflow: hidden; }
.ret-lightbox {
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, 0.9);
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 9999;
	padding: 2rem;
}
.ret-lightbox[hidden] { display: none; }
.ret-lightbox__image { max-width: 100%; max-height: 100%; object-fit: contain; }
.ret-lightbox__close {
	position: absolute;
	top: 1rem;
	right: 1.25rem;
	background: transparent;
	border: none;
	color: #fff;
	font-size: 2.25rem;
	line-height: 1;
	cursor: pointer;
	padding: 0.25rem 0.5rem;
}
.ret-lightbox__nav {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	background: rgba(255, 255, 255, 0.1);
	border: none;
	color: #fff;
	font-size: 2.5rem;
	line-height: 1;
	width: 3rem;
	height: 3rem;
	border-radius: 50%;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
}
.ret-lightbox__nav:hover { background: rgba(255, 255, 255, 0.2); }
.ret-lightbox__nav--prev { left: 1rem; }
.ret-lightbox__nav--next { right: 1rem; }

/* Price guide */
.ret-price-guide__table-wrap { overflow-x: auto; border: 1px solid var(--color-border, #e3d5bc); border-radius: var(--radius-md, 10px); }
.ret-price-guide__table { width: 100%; border-collapse: collapse; }
.ret-price-guide__table th, .ret-price-guide__table td { padding: 0.85em 1.1em; text-align: left; border-bottom: 1px solid var(--color-border, #e3d5bc); }
.ret-price-guide__table thead th { background: var(--color-surface, #f2e9db); font-family: var(--font-serif, serif); }
.ret-price-guide__table tbody tr:last-child td { border-bottom: none; }

/* Google map */
.ret-google-map__frame { border-radius: var(--radius-md, 10px); overflow: hidden; aspect-ratio: 16 / 9; border: 1px solid var(--color-border, #e3d5bc); }
.ret-google-map__frame iframe { width: 100%; height: 100%; border: 0; }

/* Partners / "In Association With" logo strip */
.ret-carousel--logos .ret-carousel__track { justify-content: center; align-items: stretch; gap: 1.75rem; padding: 0.5rem 0.5rem 1rem; }
.ret-carousel--logos .ret-carousel__slide {
	flex: 0 0 auto;
	background: none;
	border-radius: 0;
	display: flex;
	align-items: stretch;
}
.ret-partners__grid {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	justify-content: center;
	gap: 1.75rem;
}
/* Logos sit on a fixed white card so they stay legible regardless of the
   section's background choice (Default/Tinted/Dark) or light/dark mode --
   most partner logos are designed for a white background. */
.ret-partners__link,
.ret-partners__grid > img,
.ret-carousel--logos .ret-carousel__slide > img {
	background: #fff;
	border-radius: var(--radius-md, 10px);
	box-shadow: var(--shadow-sm, 0 1px 2px rgba(0,0,0,0.1));
	padding: 1rem 1.75rem;
	display: flex;
	align-items: center;
	justify-content: center;
}
.ret-partners__logo,
.ret-carousel--logos img {
	width: auto;
	height: 56px;
	max-width: 170px;
	object-fit: contain;
}

/* Testimonials */
/* One review fills the whole track per slide (like the hero photo
   carousel) rather than ~1.5-2 fitting side by side. With a partial-width
   slide, the last review can never scroll far enough to become the
   flush-left "current" one -- there's no track left after it -- which is
   what made "next" appear to stall or land on a blank "phantom" slide.
   A full-width slide sidesteps that entirely: its own flush-left position
   always exactly matches the natural scroll limit. */
.ret-carousel--testimonials .ret-carousel__slide {
	flex: 0 0 100%;
	display: flex;
	justify-content: center;
	background: var(--color-surface, #f2e9db);
	border-radius: var(--radius-lg, 20px);
	padding: 2.25rem;
}
.ret-carousel--testimonials .ret-testimonial {
	max-width: 640px;
	width: 100%;
}
.ret-testimonials__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
	gap: 1.5rem;
}
/* .ret-testimonial itself carries no card chrome -- whichever wrapper
   contains it (the carousel slide above, or the grid below) is the only
   card, so there's never a card nested inside another card. */
.ret-testimonials__grid .ret-testimonial {
	background: var(--color-surface, #f2e9db);
	border-radius: var(--radius-lg, 20px);
	padding: 1.75rem;
}
.ret-testimonial__stars { display: flex; gap: 0.2rem; margin-bottom: 0.9rem; color: #d1a13a; }
.ret-testimonial__stars svg { width: 20px; height: 20px; }
.ret-testimonial__stars svg.is-empty { opacity: 0.3; }
.ret-testimonial__quote { margin: 0 0 1.1rem; font-size: 1.05rem; }
.ret-testimonial__author { font-weight: 600; }
.ret-testimonial__location { font-size: 0.85rem; color: var(--color-text-muted, #746a5a); }
.section--dark .ret-carousel--testimonials .ret-carousel__slide,
.section--dark .ret-testimonials__grid .ret-testimonial { background: rgba(250, 246, 239, 0.08); }
.section--dark .ret-testimonial__location { color: var(--color-bg); opacity: 0.6; }

/* Accordion (Services / FAQ) */
.ret-accordion__item {
	border-bottom: 1px solid var(--color-border, #e3d5bc);
}
.ret-accordion__item summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1.1rem 0;
	cursor: pointer;
	list-style: none;
	font-family: var(--font-serif, serif);
	font-size: 1.1rem;
}
.ret-accordion__item summary::-webkit-details-marker { display: none; }
.ret-accordion__icon { flex-shrink: 0; transition: transform 0.2s ease; color: var(--color-primary, #a8442c); }
.ret-accordion__item[open] .ret-accordion__icon { transform: rotate(180deg); }
.ret-accordion__panel { margin: 0 0 1.25rem; color: var(--color-text-muted, #746a5a); max-width: 68ch; }
.section--dark .ret-accordion__panel { color: var(--color-bg); opacity: 0.7; }

/* -------- Editor-only styling -------- */
.ret-block-editor { border: 1px dashed var(--color-border, #ddd); border-radius: 6px; padding: 16px; margin: 8px 0; }
.ret-repeater-row { display: flex; gap: 12px; align-items: flex-end; flex-wrap: wrap; margin: 10px 0; padding-bottom: 10px; border-bottom: 1px solid #e0e0e0; }
.ret-repeater-row > div { flex: 1; min-width: 140px; }
.ret-image-set-editor__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 12px; margin: 12px 0; }
.ret-image-set-editor__item img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 4px; margin-bottom: 6px; }
.ret-google-map-editor__preview { width: 100%; height: 260px; border: 0; margin-top: 10px; border-radius: 6px; }
