/**
 * VM Reviews Block - Styles
 *
 * @package VM_Base_Theme
 * @since 1.0.0
 */

/* ==========================================================================
   Block wrapper
   ========================================================================== */

.vm-cb-main.vm-reviews-block {
	max-width: unset !important;
	margin-inline: auto;
	width: 100vw;
	margin-left: calc(50% - 50vw) !important;
}

.vm-reviews-block.has-teal-ink-background-color,
.vm-reviews-block.has-teal-background-color,
.vm-reviews-block.has-ink-background-color {
	color: var(--wp--preset--color--white);
}

/* ==========================================================================
   Section header
   ========================================================================== */

.vm-reviews-header {
	text-align: center;
	max-width: 42rem;
	margin: 0 auto var(--wp--preset--spacing--x-large, 2rem);
}

.vm-reviews-eyebrow {
	margin: 0 0 var(--wp--preset--spacing--small);
	font-family: var(--wp--preset--font-family--manrope);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold, #b98b3d);
}

.vm-reviews-title {
	margin: 0 0 var(--wp--preset--spacing--small);
	font-family: var(--wp--preset--font-family--dm-serif-display);
	font-size: var(--wp--preset--font-size--x-large, 56px);
	line-height: 1.15;
	color: inherit;
}

.vm-reviews-subtitle {
	margin: 0;
	font-family: var(--wp--preset--font-family--manrope);
	font-size: var(--wp--preset--font-size--medium-large, 1.125rem);
	line-height: 1.7;
	color: inherit;
	opacity: 0.92;
}

/* ==========================================================================
   Aggregate rating summary
   ========================================================================== */

.vm-reviews-rating {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.75rem 1rem;
	margin-top: var(--wp--preset--spacing--large);
}

.vm-reviews-rating-stars {
	display: flex;
	gap: 0.15rem;
}

.vm-reviews-rating-text {
	margin: 0;
	font-family: var(--wp--preset--font-family--manrope);
	font-size: var(--wp--preset--font-size--medium);
	line-height: 1.4;
	color: inherit;
}

.vm-reviews-rating-score {
	font-weight: 700;
}

.vm-reviews-rating-count {
	opacity: 0.72;
}

/* ==========================================================================
   Reviews layout — row 1: 2/3 + 1/3, row 2: three equal columns
   ========================================================================== */

.vm-reviews-layout {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--medium);
	max-width: var(--wp--style--global--wide-size) !important;
	margin-inline: auto;
}

.vm-reviews-desktop-layout{
	display: grid;
	gap: var(--wp--preset--spacing--medium);
}

.vm-reviews-row {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--wp--preset--spacing--medium);
}

.vm-reviews-row--top {
	grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
}

.vm-reviews-row--bottom {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* Mobile — featured review only */
.vm-reviews-mobile-featured {
	display: none;
	list-style: none;
	margin: 0;
	padding: 0;
}

/* ==========================================================================
   Review card
   ========================================================================== */

.vm-review-card {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--medium);
	min-height: 100%;
	padding: var(--wp--preset--spacing--large);
	background: #ffffff;
	border: 0;
	border-radius: var(--vm-radius-xl, 0.75rem);
	color: var(--wp--preset--color--ink, #1a1410);
	opacity: 0;
	transform: translateY(20px);
	box-shadow: 0 2px 8px rgba(26, 20, 16, 0.06);
	transition: transform 200ms ease-out, box-shadow 200ms ease-out;
}

.vm-review-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 10px 28px rgba(26, 20, 16, 0.14);
}

.vm-review-card.animated {
	animation: vm-review-card-enter 500ms ease-out forwards;
	animation-delay: calc(var(--review-card-index, 0) * 100ms);
}

.vm-review-card.animated:hover {
	transform: translateY(-4px);
}

@keyframes vm-review-card-enter {
	from {
		opacity: 0;
		transform: translateY(20px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.vm-review-card.is-featured{
	background: var(--wp--preset--color--secondary, #f0e1c2);
}

.vm-review-card.is-featured .vm-review-text p {
	font-size: var(--wp--preset--font-size--medium-large, 1.125rem);
}

/* ==========================================================================
   Star rating
   ========================================================================== */

.vm-review-stars {
	display: flex;
	gap: 0.15rem;
}

.vm-review-card .vm-review-star {
	opacity: 0;
	transform: scale(0.6);
	transform-origin: center;
}

.vm-review-card.animated .vm-review-star {
	animation: vm-review-star-pop 450ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
	animation-delay: calc(var(--review-card-index, 0) * 100ms + 500ms + var(--star-index, 0) * 80ms);
}

@keyframes vm-review-star-pop {
	to {
		opacity: 1;
		transform: scale(1);
	}
}

.vm-review-star.is-filled {
	color: var(--wp--preset--color--primary, #c75a2c);
}

.vm-review-star.is-empty {
	color: var(--wp--preset--color--neutral-light, #e8e0d0);
}

/* ==========================================================================
   Review quote
   ========================================================================== */

.vm-review-text {
	margin: 0;
	flex: 1;
}

.vm-review-text p {
	margin: 0;
	font-family: var(--wp--preset--font-family--dm-serif-display);
	font-size: var(--wp--preset--font-size--medium);
	line-height: 1.55;
	color: var(--wp--preset--color--ink, #1a1410);
}

.vm-review-text p::before {
	content: "\201C";
}

.vm-review-text p::after {
	content: "\201D";
}

/* ==========================================================================
   Review footer
   ========================================================================== */

.vm-review-footer {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--medium);
	margin-top: auto;
	padding-top: var(--wp--preset--spacing--small);
}

.vm-review-author {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--small);
	min-width: 0;
}

.vm-review-avatar {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: var(--vm-radius-full, 9999px);
	font-family: var(--wp--preset--font-family--manrope);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	color: #fff;
	z-index: 0;
}

.vm-review-avatar::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	opacity: 0;
	transform: scale(1);
	pointer-events: none;
	z-index: -1;
}

.vm-review-avatar--primary::after {
	background: var(--wp--preset--color--primary, #c75a2c);
}

.vm-review-avatar--teal::after {
	background: var(--wp--preset--color--teal, #0e6b58);
}

.vm-review-card.animated .vm-review-avatar::after {
	animation: vm-review-avatar-ripple 600ms ease-out forwards;
	animation-delay: calc(var(--review-card-index, 0) * 100ms + 500ms);
}

@keyframes vm-review-avatar-ripple {
	from {
		opacity: 0.3;
		transform: scale(1);
	}

	to {
		opacity: 0;
		transform: scale(1.6);
	}
}

.vm-review-avatar--primary {
	background: var(--wp--preset--color--primary, #c75a2c);
}

.vm-review-avatar--teal {
	background: var(--wp--preset--color--teal, #0e6b58);
}

.vm-review-author-meta {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	min-width: 0;
}

.vm-reviewer-name {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	color: var(--wp--preset--color--ink, #1a1410);
}

.vm-reviewer-location {
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 0.8125rem;
	color: var(--wp--preset--color--neutral-medium, #6b6560);
}

.vm-review-tag {
	flex-shrink: 0;
	font-family: var(--wp--preset--font-family--manrope);
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--teal, #0e6b58);
}

/* ==========================================================================
   Editor placeholder
   ========================================================================== */

.vm-reviews-placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 200px;
	background: var(--wp--preset--color--neutral-lighter);
	border: 2px dashed var(--wp--preset--color--neutral-light);
	border-radius: var(--vm-radius-lg, 8px);
	color: var(--wp--preset--color--neutral-medium);
	font-size: var(--wp--preset--font-size--medium);
}

/* ==========================================================================
   Responsive
   ========================================================================== */

@media (max-width: 900px) {
	.vm-reviews-desktop-layout {
		display: none;
	}

	.vm-reviews-mobile-featured {
		display: grid;
	}

	.vm-reviews-row--top {
		grid-template-columns: minmax(0, 1fr);
	}

	.vm-reviews-row--bottom {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 640px) {
	.vm-reviews-title {
		font-size: var(--wp--preset--font-size--large, 42px);
	}

	.vm-reviews-row--bottom {
		grid-template-columns: 1fr;
	}

	.vm-review-footer {
		flex-direction: column;
		align-items: flex-start;
	}
}

@media (prefers-reduced-motion: reduce) {
	.vm-review-card {
		opacity: 1;
		transform: none;
		box-shadow: none;
		transition: none;
	}

	.vm-review-card:hover {
		transform: none;
		box-shadow: none;
	}

	.vm-review-card.animated,
	.vm-review-card.animated .vm-review-star,
	.vm-review-card.animated .vm-review-avatar::after {
		animation: none;
	}

	.vm-review-card .vm-review-star {
		opacity: 1;
		transform: none;
	}

	.vm-review-avatar::after {
		display: none;
	}
}
