/* BiO-G Customer Reviews carousel - scoped to .biog-cr. Colours, spacing and counts come from Elementor controls
   as CSS variables. The viewport is a normal horizontal scroll container (native touch swipe + snapping); the
   script adds paging, looping, drag and autoplay. Without the script it is simply a scrollable row. */

.biog-cr {
	--cr-h-fw: 600;
	box-sizing: border-box;
	width: 100%;
	background-color: transparent; /* the section background is independent of the card colour */
}
.biog-cr *,
.biog-cr *::before,
.biog-cr *::after { box-sizing: border-box; }
.biog-cr__inner { margin-right: auto; margin-left: auto; }

/* ---- header --------------------------------------------------------------- */
.biog-cr .biog-cr__header { margin: 0 0 44px; text-align: center; }
.biog-cr .biog-cr__eyebrow { margin: 0 0 12px; font-size: 14px; font-weight: 700; line-height: 1.3; letter-spacing: 0.12em; text-transform: uppercase; color: #1b8559; }
.biog-cr .biog-cr__heading {
	margin: 0 0 14px;
	font-size: 46px;
	font-weight: var(--cr-h-fw, 700) !important; /* the theme forces heading weights with !important */
	line-height: 1.12;
	letter-spacing: -0.01em;
	text-wrap: balance;
	text-transform: none;
	color: #252525;
}
.biog-cr .biog-cr__desc { margin: 0; font-size: 17px; line-height: 1.65; color: #5f635d; }
.biog-cr .biog-cr__desc > * { margin: 0; }
@media (max-width: 1024px) {
	.biog-cr .biog-cr__heading { font-size: 38px; }
	.biog-cr .biog-cr__eyebrow { font-size: 13px; }
	.biog-cr .biog-cr__desc { font-size: 16px; }
	.biog-cr .biog-cr__header { margin-bottom: 36px; }
}
@media (max-width: 767px) {
	.biog-cr .biog-cr__heading { font-size: 30px; }
	.biog-cr .biog-cr__eyebrow { font-size: 12px; }
	.biog-cr .biog-cr__desc { font-size: 15px; }
	.biog-cr .biog-cr__header { margin-bottom: 28px; }
}

/* ---- carousel variables ------------------------------------------------------ */
.biog-cr .biog-cr__carousel {
	--cr-per: 3;
	--cr-gap: 20px;
	--cr-inset: 0px;
	--cr-card-bg: #ffffff;
	--cr-card-text: #252525;
	--cr-card-name: #252525;
	--cr-star: #f5b301;
	--cr-star-off: #e3e5e0;
	--cr-divider: #e6e8e4;
	--cr-radius: 20px;
	--cr-card-pad: 30px;
	--cr-nav: #252525;
	--cr-nav-bg: #fff;
	--cr-nav-border: #d5d9d3;
	--cr-dot: #d3d6d1;
	--cr-dot-on: #3cc08f;
	--cr-focus: #1fa97a;
	position: relative;
	width: 100%;
}
@media (max-width: 1024px) {
	.biog-cr .biog-cr__carousel { --cr-per: 2; --cr-gap: 18px; --cr-card-pad: 28px; }
}
@media (max-width: 767px) {
	.biog-cr .biog-cr__carousel { --cr-per: 1; --cr-gap: 14px; --cr-inset: 16px; --cr-card-pad: 24px; }
}

/* ---- viewport + track ---------------------------------------------------------- */
.biog-cr .biog-cr__viewport {
	container-type: inline-size; /* card width is measured against the viewport (100cqw) */
	overflow-x: auto;
	overflow-y: hidden;
	overscroll-behavior-x: contain; /* a sideways swipe never triggers browser back/forward */
	padding: 0 var(--cr-inset);
	scroll-padding-inline: var(--cr-inset);
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
	cursor: grab;
}
.biog-cr .biog-cr__viewport::-webkit-scrollbar { display: none; }
.biog-cr .biog-cr__viewport:focus-visible { outline: 2px solid var(--cr-focus); outline-offset: 4px; border-radius: var(--cr-radius); }
.biog-cr .biog-cr__viewport.is-animating,
.biog-cr .biog-cr__viewport.is-dragging { scroll-snap-type: none; }
.biog-cr .biog-cr__viewport.is-dragging { cursor: grabbing; user-select: none; -webkit-user-select: none; }
.biog-cr .biog-cr__track { display: flex; width: max-content; }

/* One set = the real list; the script appends aria-hidden/inert copies for a seamless loop. */
.biog-cr .biog-cr__set {
	display: flex;
	flex: 0 0 auto;
	align-items: stretch; /* every card in the row is as tall as the tallest */
	gap: var(--cr-gap);
	margin: 0;
	padding: 0 var(--cr-gap) 0 0; /* trailing gap so every set has the same width */
	list-style: none;
}
.biog-cr .biog-cr__item {
	flex: 0 0 auto;
	width: calc((100cqw - 2 * var(--cr-inset) - (var(--cr-per) - 1) * var(--cr-gap)) / var(--cr-per));
	margin: 0;
	padding: 0;
	list-style: none;
	scroll-snap-align: start;
}
@supports not (width: 1cqw) {
	.biog-cr .biog-cr__item { width: calc((100vw - 2 * var(--cr-inset) - (var(--cr-per) - 1) * var(--cr-gap)) / var(--cr-per)); }
}

/* ---- card ------------------------------------------------------------------------ */
.biog-cr .biog-cr__card {
	display: flex;
	flex-direction: column;
	height: 100%;
	margin: 0;
	padding: var(--cr-card-pad);
	color: var(--cr-card-text);
	background-color: var(--cr-card-bg);
	border: 1px solid #e6e8e4;
	border-radius: var(--cr-radius);
	box-shadow: none;
}
.biog-cr .biog-cr__stars { display: flex; gap: 3px; margin: 0 0 18px; }
.biog-cr .biog-cr__star { display: block; flex: 0 0 auto; fill: var(--cr-star-off); }
.biog-cr .biog-cr__star.is-on { fill: var(--cr-star); }
.biog-cr .biog-cr__text {
	flex: 1 1 auto; /* pushes the reviewer to the bottom of every card */
	margin: 0 0 22px;
	padding: 0;
	font-size: 16px;
	font-style: normal;
	line-height: 1.65;
	color: var(--cr-card-text);
	border: 0;
	overflow-wrap: break-word;
}
.biog-cr .biog-cr__text::before,
.biog-cr .biog-cr__text::after { content: none; }
.biog-cr .biog-cr__text > * { margin: 0; font: inherit; color: inherit; opacity: 1; } /* the theme styles bare paragraphs separately */
.biog-cr .biog-cr__text > * + * { margin-top: 0.8em; }
.biog-cr .biog-cr__text strong,
.biog-cr .biog-cr__text b { font-weight: 600; color: var(--cr-card-name); }
.biog-cr .biog-cr__who {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin: 0;
	padding: 18px 0 0;
	border-top: 1px solid var(--cr-divider);
}
.biog-cr .biog-cr__name { font-size: 16px; font-weight: 600; line-height: 1.3; color: var(--cr-card-name); }
.biog-cr .biog-cr__role { font-size: 13px; line-height: 1.3; opacity: 0.7; }

/* ---- controls (arrows, indicators, pause) ------------------------------------------ */
/* The row keeps its space before the script runs (hidden, not removed), so nothing shifts when it appears. */
.biog-cr .biog-cr__controls { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 24px; visibility: hidden; }
.biog-cr--js .biog-cr__controls { visibility: visible; }
.biog-cr--static .biog-cr__controls { display: none; }
.biog-cr .biog-cr__btn,
.biog-cr .biog-cr__btn:hover,
.biog-cr .biog-cr__btn:focus,
.biog-cr .biog-cr__btn:active {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 32px;
	height: 32px;
	min-height: 0;
	margin: 0;
	padding: 0;
	line-height: 1;
	color: var(--cr-nav);
	background: none;
	border: 0;
	border-radius: 6px;
	box-shadow: none;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
	-webkit-tap-highlight-color: transparent;
	transition: color 0.2s ease;
}
.biog-cr .biog-cr__btn svg { width: 16px; height: 16px; }
.biog-cr .biog-cr__btn:hover { color: var(--cr-dot-on); }
.biog-cr .biog-cr__btn:focus-visible { outline: 2px solid var(--cr-focus); outline-offset: 2px; }
.biog-cr .biog-cr__btn--pause { width: 36px; height: 36px; }
.biog-cr .biog-cr__ico-play { display: none; }
.biog-cr .biog-cr__btn--pause[aria-pressed="true"] .biog-cr__ico-pause { display: none; }
.biog-cr .biog-cr__btn--pause[aria-pressed="true"] .biog-cr__ico-play { display: block; }
.biog-cr .biog-cr__dots { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0; max-width: 60%; }
.biog-cr .biog-cr__dot,
.biog-cr .biog-cr__dot:hover,
.biog-cr .biog-cr__dot:focus,
.biog-cr .biog-cr__dot:active {
	position: relative;
	width: 18px; /* touch target; the visible dot is the ::before */
	height: 28px;
	min-height: 0;
	margin: 0;
	padding: 0;
	background: none;
	border: 0;
	border-radius: 50%;
	box-shadow: none;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
	-webkit-tap-highlight-color: transparent;
}
.biog-cr .biog-cr__dot::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 8px;
	height: 8px;
	margin: -4px 0 0 -4px;
	background-color: var(--cr-dot);
	border-radius: 999px;
	transition: background-color 0.2s ease, width 0.25s ease, margin 0.25s ease;
}
.biog-cr .biog-cr__dot[aria-current="true"] { width: 30px; }
.biog-cr .biog-cr__dot[aria-current="true"]::before { width: 22px; margin-left: -11px; background-color: var(--cr-dot-on); }
.biog-cr .biog-cr__dot:focus-visible { outline: 2px solid var(--cr-focus); outline-offset: 0; }

.biog-cr--empty { padding: 20px; text-align: center; }
.biog-cr__notice { margin: 0; font-size: 14px; color: #6b7280; }

@media (prefers-reduced-motion: reduce) {
	.biog-cr .biog-cr__btn,
	.biog-cr .biog-cr__dot::before { transition: none; }
}
