/* ==========================================================================
   Социальное доказательство: отзывы покупателей с Яндекса и 2ГИС (карусель).
   Только на главной (inc/enqueue.php → muus_is_social_proof_surface).
   Загружается последним партиалом — от него никто не зависит, каскад
   остальных файлов не трогается.
   ========================================================================== */

.muus-social-proof {
	padding: clamp(3rem, 8vw, 5.5rem) 1.5rem;
	background: var(--wp--preset--color--surface);
	border-top: 1px solid var(--wp--preset--color--border);
}

.muus-social-proof__inner {
	max-width: 1200px;
	margin: 0 auto;
}

.muus-social-proof__title {
	margin: 0 0 0.5rem;
	color: var(--wp--preset--color--text);
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.9rem, 4vw, 2.75rem);
	font-weight: 400;
	line-height: 1.15;
	text-align: center;
}

/* Раскрытие «чьи это отзывы» стоит ДО карточек и набрано читаемо, а не petit-
   шрифтом внизу: смысл в том, чтобы покупатель прочёл его раньше цитат, а не
   формально смог найти (инвариант И7). */
.muus-social-proof__disclosure {
	max-width: 46rem;
	margin: 0 auto clamp(2rem, 5vw, 3rem);
	color: var(--wp--preset--color--text);
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.95rem;
	line-height: 1.55;
	text-align: center;
}

/* Карусель в одну строку.
   До неё была кладка колонками, до неё — grid. Обе раскладки страдали одним:
   одиннадцать отзывов занимали пол-страницы по вертикали. Лента решает это
   иначе — показывает три-четыре карточки и предлагает листать дальше.

   Прокрутка нативная (`overflow-x`), поэтому пальцем и трекпадом лента работает
   БЕЗ JS; скрипт добавляет только стрелки, край и клавиши. `scroll-snap`
   доводит карточку до края, чтобы лента не замирала на половине текста. */
.muus-social-proof__carousel {
	position: relative;
}

.muus-social-proof__track {
	display: flex;
	gap: 1.25rem;
	overflow-x: auto;
	/* 🔴 `proximity`, а НЕ `mandatory`. Обязательный снап после каждой перестановки
	   позиции доводит ленту к своей точке привязки и дерётся с инерцией трекпада:
	   на длинном махе это выглядело как поломка (11.08). `proximity` выравнивает,
	   когда человек и так остановился рядом, и не мешает, когда он летит. */
	scroll-snap-type: x proximity;
	scroll-behavior: smooth;
	/* Полосу прокрутки прячем: она тут визуальный шум, а листать можно стрелками,
	   пальцем, трекпадом и клавиатурой — ни один способ не теряется. */
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.muus-social-proof__track::-webkit-scrollbar {
	display: none;
}

/* Лента фокусируется с клавиатуры (tabindex в разметке) — обводку показываем,
   а не глушим: без неё клавиатурный посетитель не понимает, где он. */
.muus-social-proof__track:focus-visible {
	outline: 2px solid var(--wp--preset--color--primary);
	outline-offset: 4px;
}

.muus-social-proof__card {
	/* Ширина фиксированная: в ленте карточка не должна тянуться под содержимое,
	   иначе короткий отзыв даст узкий столбик, а длинный — половину экрана. */
	flex: 0 0 clamp(260px, 28vw, 330px);
	scroll-snap-align: start;
	/* Флекс-колонка + margin-top:auto у подписи — чтобы имя автора стояло по
	   нижнему краю у всех карточек ряда, а не плавало по середине. */
	display: flex;
	flex-direction: column;
	margin: 0;
	padding: 1.5rem;
	background: var(--wp--preset--color--background);
	border: 1px solid var(--wp--preset--color--border);
	/* 16px — ровно как у карточки товара (muus-product-card.css:41). Своё число
	   здесь означало бы, что на одной странице два разных языка форм. */
	border-radius: 16px;
}

/* --- Стрелки ------------------------------------------------------------- */

/* Скрыты, пока JS не объявит ленту готовой: кнопка, которая ничего не делает,
   хуже отсутствующей. Скрипт ставит `is-ready` только если листать есть что. */
.muus-social-proof__nav {
	display: none;
}

.muus-social-proof__carousel.is-ready .muus-social-proof__nav {
	position: absolute;
	top: 50%;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	transform: translateY(-50%);
	color: var(--wp--preset--color--text);
	font-size: 1.5rem;
	line-height: 1;
	background: var(--wp--preset--color--surface);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: 50%;
	cursor: pointer;
	transition: color 0.2s ease, border-color 0.2s ease, opacity 0.2s ease;
}

.muus-social-proof__carousel.is-ready .muus-social-proof__nav.is-prev {
	left: -0.75rem;
}

.muus-social-proof__carousel.is-ready .muus-social-proof__nav.is-next {
	right: -0.75rem;
}

.muus-social-proof__nav:hover:not(:disabled),
.muus-social-proof__nav:focus-visible:not(:disabled) {
	color: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
}

/* На краю кнопка ГАСНЕТ, но остаётся на месте: исчезающая кнопка дёргает
   раскладку и сбивает того, кто целится в неё мышью. */
.muus-social-proof__nav:disabled {
	opacity: 0.3;
	cursor: default;
}

/* --- Звёзды -------------------------------------------------------------- */

/* Оформление, а не данные: разметки schema.org здесь нет намеренно — размечать
   чужие отзывы, собранные не этим сайтом, значит напрашиваться на ручную
   санкцию поисковика (инвариант И2 спеки). */
.muus-social-proof__stars {
	display: flex;
	gap: 0.15rem;
	margin-bottom: 0.85rem;
	font-size: 1rem;
	line-height: 1;
}

.muus-social-proof__star {
	color: var(--wp--preset--color--border);
}

.muus-social-proof__star.is-filled {
	color: var(--wp--preset--color--primary);
}

/* --- Текст отзыва -------------------------------------------------------- */

/* Цитата забирает весь остаток высоты карточки и центрируется в нём по вертикали.
   В ленте карточки одной высоты, и короткий отзыв («Отличные ножи, рекомендую»)
   иначе висел бы вверху, оставляя под собой пустоту в половину карточки.
   По ГОРИЗОНТАЛИ текст остаётся слева: центрированный абзац в 300 знаков читается
   рвано — каждая строка начинается в новом месте. */
.muus-social-proof__quote {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	justify-content: center;
	gap: 0.35rem;
	margin: 0 0 0.85rem;
	padding: 0;
	border: 0;
}

/* Кавычка — чистое оформление: она говорит «это чужая прямая речь» раньше, чем
   человек дочитает до подписи. Псевдоэлементом, а не разметкой: в тексте отзыва
   её нет, и в разметке ей делать нечего (скринридер её не увидит). */
.muus-social-proof__quote::before {
	content: '\201C';
	height: 1.1rem;
	color: var(--wp--preset--color--primary);
	font-family: var(--wp--preset--font-family--display);
	font-size: 2.6rem;
	line-height: 0.62;
	opacity: 0.45;
}

.muus-social-proof__quote p {
	margin: 0;
	color: var(--wp--preset--color--text);
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.95rem;
	line-height: 1.65;
}

/* --- Подпись ------------------------------------------------------------- */

.muus-social-proof__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.35rem 0.6rem;
	margin-top: auto;
	padding-top: 0.85rem;
	border-top: 1px solid var(--wp--preset--color--border);
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.8rem;
}

.muus-social-proof__author {
	color: var(--wp--preset--color--text);
	font-weight: 600;
}

.muus-social-proof__date {
	color: var(--wp--preset--color--text-muted);
}

/* Источник стоит на КАЖДОЙ карточке, а не только в шапке блока: отзыв написан
   на чужой площадке, и с любого экрана должно быть видно, где именно
   (инвариант И1 спеки). */
.muus-social-proof__source {
	flex-basis: 100%;
	color: var(--wp--preset--color--primary);
	font-size: 0.75rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.muus-social-proof__note {
	flex-basis: 100%;
	color: var(--wp--preset--color--text-muted);
	font-size: 0.75rem;
	font-style: italic;
}

/* --- Ссылка на источник --------------------------------------------------- */

/* Ссылок две — по одной на площадку; на телефоне встают в столбик. */
.muus-social-proof__all {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.75rem 2rem;
	margin: clamp(1.75rem, 4vw, 2.5rem) 0 0;
	text-align: center;
}

.muus-social-proof__all a {
	color: var(--wp--preset--color--primary);
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.95rem;
	text-decoration: none;
	border-bottom: 1px solid transparent;
	transition: border-color 0.2s ease;
}

.muus-social-proof__all a:hover,
.muus-social-proof__all a:focus-visible {
	border-bottom-color: var(--wp--preset--color--primary);
}

@media (max-width: 781px) {
	/* 🔴 На телефоне свайп листает РОВНО ОДИН отзыв.
	   Одного `scroll-snap` для этого мало: он лишь доводит ленту до ближайшей
	   точки привязки, а инерция свайпа успевает пролететь три-четыре карточки и
	   встанет ровно, но далеко. Один отзыв за свайп даёт `scroll-snap-stop:
	   always` — прокрутка физически не может миновать точку привязки, не
	   остановившись на ней.
	   Снап здесь возвращается в `mandatory`: `stop` работает только при активном
	   снапе, а конфликта с инерцией, из-за которого его сняли на десктопе, тут
	   нет — перестановка позиции всё равно ждёт покоя прокрутки. */
	.muus-social-proof__track {
		scroll-snap-type: x mandatory;
	}

	.muus-social-proof__card {
		/* Карточка почти во всю ширину, но край следующей видно — это
		   единственная подсказка, что ленту можно листать.
		   🔴 Доля от ЛЕНТЫ, а не `vw`: экран шире ленты на внутренние отступы
		   секции (2×1.5rem). При 82vw на экране 390px карточка выходила 320px при
		   ленте 342px, и от следующей оставалось ДВА пикселя — не подсказка, а
		   артефакт у самого края (поймано владельцем 11.08). Проценты считаются
		   от ленты, поэтому подглядывание держится при любой ширине экрана. */
		flex-basis: 84%;
		padding: 1.25rem;
		scroll-snap-stop: always;
	}

	/* Стрелки на телефоне не нужны: там листают пальцем, а кружки съедали бы
	   края карточек. */
	.muus-social-proof__carousel.is-ready .muus-social-proof__nav {
		display: none;
	}
}
