/* Testimonials carousel: one quote at a time, on the page's one canvas.
   Enqueued only on pages containing .abs-testimonials (see functions.php).

   Without the script all quotes stack, which is a complete layout. The script
   adds .is-tc-on to the section; only then do the slides collapse into one grid
   cell, so the track is as tall as the tallest collapsed slide (lead, one more sentence,
   a closed Full quote disclosure). Opening a disclosure may grow the section.

   The lit phrase is bold by default (no script, reduced motion). When armed it
   rests at 300 and goes to 700 when its slide is active: Hanken Grotesk is a
   variable font (100-900), so the weight change is real. Colour does not change;
   gold is only the short 1px rule above each quote. */

.abs-testimonials .abs-tc__track { display: grid; gap: 4.5rem; margin-block: 0; }
.entry-content .abs-testimonials .abs-tc__track > * { margin-block: 0; max-width: none; }

.abs-tq { max-width: 60rem; }
.abs-tq::before {
	content: "";
	display: block;
	width: 1.75rem;
	height: 1px;
	margin-bottom: 1.25rem;
	background: var(--abs-accent);
}
.entry-content .abs-tq > * { margin-block: 0; max-width: none; }
.entry-content .abs-tq .abs-tq__lead {
	font-size: clamp(1.6rem, 3vw, 2.6rem);
	font-weight: 300;
	line-height: 1.2;
	letter-spacing: -.02em;
	color: var(--abs-ink);
	text-wrap: balance;
	margin-bottom: 1.5rem;
}
.entry-content .abs-tq .abs-tq__lead--long {
	font-size: clamp(1.3rem, 2.2vw, 1.95rem);
	line-height: 1.25;
	margin-bottom: 1.25rem;
}
.entry-content .abs-tq .abs-tq__rest {
	font-size: var(--abs-t-body);
	font-weight: 300;
	line-height: 1.6;
	color: var(--abs-ink-2);
	max-width: 44rem;
	margin-bottom: 1.75rem;
}
.entry-content .abs-tq .abs-tq__more {
	max-width: 44rem;
	margin-bottom: 1.75rem;
	color: var(--abs-ink-2);
}
.abs-tq__more summary {
	display: inline-block;
	min-height: 44px;
	line-height: 44px;
	font-size: .8125rem;
	letter-spacing: .01em;
	font-weight: 600;
	color: var(--abs-ink);
	cursor: pointer;
	border-bottom: 1px solid var(--abs-line);
}
.abs-tq__more summary:hover { border-bottom-color: var(--abs-ink); }
.entry-content .abs-tq .abs-tq__more p {
	margin: 1rem 0 0;
	font-size: var(--abs-t-body);
	font-weight: 300;
	line-height: 1.6;
}
.entry-content .abs-tq .abs-tq__who {
	font-size: .8125rem;
	letter-spacing: .01em;
	font-weight: 600;
	color: var(--abs-ink);
	margin-bottom: .35rem;
}
.entry-content .abs-tq .abs-tq__ctx {
	font-size: var(--abs-t-body);
	line-height: 1.45;
	color: var(--abs-ink-2);
}
.abs-tq__lit { font-weight: 700; color: inherit; }

/* ---------- enhanced: one slide at a time ---------- */
.abs-testimonials.is-tc-on .abs-tc__track { gap: 0; touch-action: pan-y; }
.abs-testimonials.is-tc-on .abs-tq {
	grid-area: 1 / 1;
	opacity: 0;
	visibility: hidden;
	transform: translateX(1.25rem);
	transition: opacity .3s ease, transform .3s ease, visibility 0s linear .3s;
}
.abs-testimonials.is-tc-on .abs-tq.is-active {
	opacity: 1;
	visibility: visible;
	transform: none;
	transition: opacity .3s ease, transform .3s ease, visibility 0s;
}
.abs-testimonials.is-tc-on .abs-tq__lit {
	font-weight: 300;
	transition: font-weight .4s ease;
}
.abs-testimonials.is-tc-on .abs-tq.is-lit .abs-tq__lit { font-weight: 700; }

/* ---------- controls (built by the script) ---------- */
.abs-tc__controls {
	display: flex;
	align-items: center;
	gap: 1.5rem;
	margin-top: 2rem;
}
.abs-tc__btn {
	appearance: none;
	background: none;
	border: 0;
	border-bottom: 1px solid var(--abs-line);
	border-radius: 0;
	min-width: 44px;
	min-height: 44px;
	margin: 0;
	padding: 0 .25rem;
	font: inherit;
	font-size: .8125rem;
	letter-spacing: .01em;
	font-weight: 600;
	color: var(--abs-ink);
	cursor: pointer;
}
.entry-content .abs-tc__btn:is(:hover, :focus, :focus-visible, :active) {
	background: none;
	color: var(--abs-ink);
	box-shadow: none;
}
.abs-tc__btn:hover { border-bottom-color: var(--abs-ink); }
.abs-tc__count {
	font-size: .8125rem;
	letter-spacing: .01em;
	font-weight: 600;
	color: var(--abs-ink-2);
	font-variant-numeric: tabular-nums;
	min-width: 4.5em;
	text-align: center;
}
.abs-tc__count b { color: var(--abs-ink); font-weight: 600; }
.abs-tc__sr {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
	.abs-testimonials.is-tc-on .abs-tq,
	.abs-testimonials.is-tc-on .abs-tq.is-active { transition: none; transform: none; }
	.abs-testimonials .abs-tq__lit,
	.abs-testimonials.is-tc-on .abs-tq__lit,
	.abs-testimonials.is-tc-on .abs-tq.is-lit .abs-tq__lit { font-weight: 700; transition: none; }
}

/* Row layout (layout="row"): every quote in full, side by side from 880px,
   stacked below. Each has the same 1px gold rule above it as a carousel quote. */
.abs-tq-row { display: grid; gap: clamp(2rem, 4vw, 3.5rem); grid-template-columns: 1fr; margin-top: 0; }
@media (min-width: 880px) { .abs-tq-row { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.entry-content .abs-tqr { margin: 0; }
.abs-tqr::before { content: ""; display: block; width: 1.75rem; height: 1px; margin-bottom: 1.25rem; background: var(--abs-accent); }
.entry-content .abs-tqr__quote { margin: 0; padding: 0; border: 0; }
.entry-content .abs-tqr__quote p { margin: 0; font-size: var(--abs-t-body); line-height: 1.6; color: var(--abs-ink); max-width: none; }
.abs-tqr__who { display: grid; gap: .15rem; margin-top: 1.25rem; }
.abs-tqr__name { font-size: .9375rem; font-weight: 700; color: var(--abs-ink); }
.abs-tqr__ctx { font-size: .875rem; color: var(--abs-ink-dim); }
