/* Page Testimonial Slider — front end
 *
 * Every rule is scoped under .pts-slider (and key paint/size properties use !important) so
 * theme and page-builder resets — e.g. Elementor's `.elementor img { border:none; border-radius:0 }`
 * or Hello's `figcaption { font-style:italic }` — can't restyle the slider.
 */
.pts-slider {
	--pts-bg: #000;
	--pts-text: #fff;
	--pts-accent: #5cb82e;
	--pts-arrow: #8c8c8c;
	--pts-photo: var(--pts-photo-size, 160px);
	--pts-font: "Montserrat", system-ui, -apple-system, "Segoe UI", sans-serif;
	--pts-gutter: 72px;
	--pts-dur: 600ms;

	position: relative;
	display: block;
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	margin: 0;
	padding: 40px var(--pts-gutter);
	background: var(--pts-bg);
	color: var(--pts-text);
	font-family: var(--pts-font);
	font-style: normal;
	text-align: center;
	overflow: hidden;
	clear: both;
}
.pts-slider.pts--theme-font { font-family: inherit; }
.pts-slider *,
.pts-slider *::before,
.pts-slider *::after { box-sizing: border-box; }

/* Block themes: the band breaks out of the constrained content column. */
.is-layout-constrained > .pts-slider.alignfull { max-width: none; }

/* Inner content keeps a readable width even when the band is edge to edge. */
.pts-slider > .pts-heading,
.pts-slider > .pts-viewport,
.pts-slider > .pts-dots {
	width: 100%;
	max-width: 1400px;
	margin-left: auto;
	margin-right: auto;
}

.pts-slider > .pts-heading {
	margin-top: 0;
	margin-bottom: 28px;
	padding: 0;
	color: var(--pts-text);
	font-family: inherit;
	font-size: clamp(22px, 2.4vw, 32px);
	font-style: normal;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: .02em;
	text-transform: uppercase;
}

/* All slides share one grid cell, so the slider is as tall as the longest testimonial (no jumping).
   minmax(0,1fr) + min-width:0 stop long words/titles from widening the slider. */
.pts-slider .pts-viewport { min-width: 0; }
.pts-slider .pts-track {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	width: 100%;
	margin: 0;
	padding: 0;
}
.pts-slider .pts-slide {
	grid-area: 1 / 1;
	min-width: 0;
	width: 100%;
	max-width: 100%;
	margin: 0 !important;
	padding: 0;
	border: 0;
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--pts-dur) ease, transform var(--pts-dur) ease, visibility 0s linear var(--pts-dur);
	display: flex;
	flex-direction: column;
	justify-content: flex-start; /* top-align: shorter testimonials don't float in the middle of the tallest one */
	align-items: center;
	align-self: start;
	height: 100%;
}
.pts-slider .pts-slide.is-active {
	opacity: 1;
	visibility: visible;
	transition: opacity var(--pts-dur) ease, transform var(--pts-dur) ease, visibility 0s;
}

/* Slide transition: incoming slides drift in from the travel direction. */
.pts-slider.pts--slide .pts-slide { transform: translateX(calc(var(--pts-dir, 1) * 60px)); }
.pts-slider.pts--slide .pts-slide.is-leaving { transform: translateX(calc(var(--pts-dir, 1) * -60px)); }
.pts-slider.pts--slide .pts-slide.is-active { transform: none; }

/* Quote */
.pts-slider .pts-quote {
	width: 100%;
	max-width: 1300px;
	margin: 0 auto 36px;
	padding: 0;
	border: 0 !important;
	background: none !important;
	box-shadow: none;
	color: var(--pts-text);
	font-family: inherit;
	font-size: clamp(15px, 1.35vw, 19px);
	font-style: normal;
	font-weight: 400;
	line-height: 2.1;
	letter-spacing: normal;
	text-align: center;
	text-transform: none;
	overflow-wrap: break-word;
	quotes: none;
}
.pts-slider .pts-quote::before,
.pts-slider .pts-quote::after { content: none !important; display: none; }
.pts-slider .pts-quote p {
	margin: 0 0 .8em;
	padding: 0;
	color: inherit;
	font: inherit;
	line-height: inherit;
	text-align: inherit;
}
.pts-slider .pts-quote p:last-child { margin-bottom: 0; }
.pts-slider .pts-quote a { color: inherit; text-decoration: underline; }

/* Person row */
.pts-slider .pts-person {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 24px;
	width: auto;
	max-width: 100%;
	margin: 0;
	padding: 0;
	color: var(--pts-text);
	font-family: inherit;
	font-size: inherit;
	font-style: normal;
	line-height: 1.2;
	text-align: left;
}
.pts-slider .pts-photo {
	display: block !important;
	flex: 0 0 auto;
	width: var(--pts-photo) !important;
	height: var(--pts-photo) !important;
	min-width: var(--pts-photo);
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 3px solid var(--pts-accent) !important;
	border-radius: 50% !important;
	box-shadow: none !important;
	object-fit: cover !important;
	object-position: center;
	background: none;
}
.pts-slider .pts-photo--initials {
	display: flex !important;
	align-items: center;
	justify-content: center;
	background: rgba(127, 127, 127, .15);
	color: var(--pts-text);
	font-size: calc(var(--pts-photo) * .3);
	font-style: normal;
	font-weight: 700;
	line-height: 1;
}
.pts-slider .pts-meta {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	flex: 0 1 auto;
	min-width: 0;
	max-width: 720px;
	text-align: left;
	text-transform: uppercase;
	line-height: 1.2;
	overflow-wrap: break-word;
}
.pts-slider .pts-name {
	display: block;
	margin: 0;
	padding: 0;
	color: var(--pts-text);
	font-family: inherit;
	font-size: clamp(20px, 2.1vw, 30px);
	font-style: normal;
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: .01em;
	text-transform: uppercase;
}
.pts-slider .pts-role {
	display: block;
	margin: 6px 0 0;
	padding: 0;
	color: var(--pts-text);
	font-family: inherit;
	font-size: clamp(13px, 1.25vw, 18px);
	font-style: normal;
	font-weight: 500;
	line-height: 1.35;
	text-transform: uppercase;
}

/* Arrows (paint props use !important so theme button styles can't bleed in) */
.pts-slider .pts-arrow {
	position: absolute;
	top: 50%;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 64px;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: 0 !important;
	transform: translateY(-50%);
	border: 0 !important;
	border-radius: 4px;
	background: transparent !important;
	box-shadow: none !important;
	color: var(--pts-arrow) !important;
	line-height: 1;
	text-decoration: none !important;
	cursor: pointer;
	transition: color .2s ease;
}
.pts-slider .pts-arrow:hover,
.pts-slider .pts-arrow:focus-visible { color: var(--pts-text) !important; }
.pts-slider .pts-arrow:focus:not(:focus-visible) { outline: none; }
.pts-slider .pts-arrow:focus-visible { outline: 2px solid var(--pts-accent); outline-offset: 2px; }
.pts-slider .pts-arrow svg {
	display: block;
	width: 34px;
	height: 34px;
	fill: none;
	stroke: currentColor;
	stroke-width: 2.6;
	stroke-linecap: round;
	stroke-linejoin: round;
	pointer-events: none;
}
.pts-slider .pts-prev { left: 8px; right: auto; }
.pts-slider .pts-next { right: 8px; left: auto; }

/* Dots */
.pts-slider > .pts-dots { display: flex; justify-content: center; gap: 10px; margin-top: 28px; }
.pts-slider .pts-dot {
	display: block;
	width: 10px;
	height: 10px;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 50% !important;
	background: var(--pts-arrow) !important;
	box-shadow: none !important;
	opacity: .5;
	cursor: pointer;
	transition: opacity .2s, transform .2s;
}
.pts-slider .pts-dot:hover { opacity: .85; }
.pts-slider .pts-dot[aria-current="true"] { background: var(--pts-accent) !important; opacity: 1; transform: scale(1.2); }
.pts-slider .pts-dot:focus:not(:focus-visible) { outline: none; }
.pts-slider .pts-dot:focus-visible { outline: 2px solid var(--pts-accent); outline-offset: 3px; }

/* Neutralize stray <p> wrappers that content filters (wpautop) may add around inline controls. */
.pts-slider .pts-nav,
.pts-slider > p,
.pts-slider .pts-nav > p { display: contents; margin: 0; padding: 0; }
.pts-slider .pts-dots > p { display: contents; }

/* Before JS runs, show only the first slide. */
.pts-slider:not(.pts-ready) .pts-slide:not(.is-active) { display: none; }

@media (max-width: 782px) {
	.pts-slider { --pts-gutter: 44px; --pts-photo: min(120px, var(--pts-photo-size, 160px)); padding-top: 32px; padding-bottom: 32px; }
	.pts-slider .pts-quote { line-height: 1.85; margin-bottom: 28px; }
	.pts-slider .pts-arrow { width: 36px; height: 52px; }
	.pts-slider .pts-arrow svg { width: 26px; height: 26px; }
	.pts-slider .pts-prev { left: 4px; }
	.pts-slider .pts-next { right: 4px; }
}
@media (max-width: 560px) {
	.pts-slider { --pts-gutter: 36px; --pts-photo: min(96px, var(--pts-photo-size, 160px)); }
	.pts-slider .pts-person { flex-direction: column; gap: 14px; text-align: center; }
	.pts-slider .pts-meta { align-items: center; text-align: center; }
}

@media (prefers-reduced-motion: reduce) {
	.pts-slider { --pts-dur: 1ms; }
}
