.quote {
	background: var(--c-white);
}

.quote__grid {
	display: grid;
	grid-template-columns: 1.5fr 1fr;
	gap: 4rem;
	/* start (not center) gives the sticky photo room to move within its own
	   grid area — a stretched/centred area has no travel room to stick in. */
	align-items: start;
}

.quote__name {
	margin-block-end: 1.5rem;
	font-family: var(--ff-alt);
	font-size: clamp(1.75rem, 3.4vw, 2.5rem);
	font-weight: 800;
	line-height: 1.1;
	letter-spacing: -0.02em;
	color: var(--c-black);
}

.quote__body p {
	margin-block-end: 1rem;
	font-size: 0.9375rem;
	font-weight: 300;
	line-height: 1.75;
	color: var(--c-mid);
}

/* ------------------------------------------------------------------ text */
/* Unclamped by default — a visitor without JS reads the whole story, since
   there is no way to know the fit without measuring. */
.quote__text {
	position: relative;
}

.quote__text--clamp {
	overflow: hidden;
	max-block-size: var(--_h, none);
	transition: max-block-size 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Fades the cut edge instead of slicing straight through a line of text. */
.quote__text--clamp:not(.is-open)::after {
	content: "";
	position: absolute;
	inset-inline: 0;
	inset-block-end: 0;
	block-size: 3.5rem;
	background: linear-gradient(to bottom, transparent, var(--c-white));
	pointer-events: none;
}

.quote__text p:last-child {
	margin-block-end: 0;
}

/* Hidden until the script confirms there is actually more to show. */
.quote__more-wrap {
	display: none;
	margin-block-start: 0.25rem;
}

.quote__more-wrap.is-visible {
	display: block;
	margin-block-start: 1.25rem;
}

.quote__more {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	padding-block-end: 2px;
	font-size: 0.84375rem;
	font-weight: 700;
	color: var(--c-black);
	text-decoration: none;
	cursor: pointer;
	border-block-end: 2px solid var(--c-gold);
	transition: color 0.2s;
}

.quote__more:hover {
	color: var(--c-gold-dk);
}

/* ----------------------------------------------------------------- photo */
.quote__photo {
	position: sticky;
	inset-block-start: calc(var(--header-h, 4.75rem) + 1.5rem);
	margin: 0;
	aspect-ratio: 4 / 5;
	background: var(--c-bg);
	border-radius: 0.75rem;
	overflow: hidden;
}

.quote__photo img {
	inline-size: 100%;
	block-size: 100%;
	object-fit: cover;
	object-position: center top;
}

@media (width <= 56.25rem) {
	.quote__grid {
		grid-template-columns: 1fr;
		gap: 2.5rem;
	}

	/* Stacked layout gives the photo no room to travel, so sticky is
	   naturally inert here — no override needed to turn it off. */
	.quote__photo {
		order: -1;
		aspect-ratio: 4 / 3;
	}
}

@media (width <= 40rem) {
	.quote__body p {
		font-size: 0.875rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.quote__text--clamp {
		transition: none;
	}
}