/*
 * Блок отзывов — один на весь сайт.
 *
 * Живёт отдельным файлом, потому что и разметка отдельная: блок зовут
 * с разных страниц, и цвета он берёт свои, а не от страницы-хозяина.
 * Иначе на светлой странице он однажды окажется белым по белому.
 */

.ssr {
	--ssr-card: #161616;
	--ssr-ink: #ffffff;
	--ssr-muted: rgba(255, 255, 255, 0.66);
	--ssr-dim: rgba(255, 255, 255, 0.42);
	--ssr-line: rgba(255, 255, 255, 0.1);
	--ssr-accent: #25cbc2;

	color: var(--ssr-ink);
	display: block;
	font-family: "Gotham Pro", system-ui, -apple-system, sans-serif;
}

.ssr .ssr__head {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: clamp(16px, 2vw, 32px);
	justify-content: space-between;
	margin-block-end: clamp(20px, 3vh, 32px);
}

.ssr .ssr__title {
	color: var(--ssr-ink);
	font-family: "Unbounded", system-ui, sans-serif;
	font-size: var(--ss-h2);
	font-weight: 500;
	letter-spacing: -0.02em;
	line-height: 1.12;
	margin: 0;
	text-transform: none;
}

/* Плашка с оценкой — та же, что в шапке и в панели меню: значки
   источников слева, справа сверху оценка со звёздами, снизу число. */
.ssr .ssr__rating {
	align-items: center;
	color: var(--ssr-ink);
	display: inline-flex;
	gap: 10px;
	text-decoration: none;
	transition: opacity 0.2s ease;
}

.ssr .ssr__sources {
	align-items: center;
	display: inline-flex;
	gap: 5px;
}

.ssr .ssr__sources img {
	block-size: 28px;
	border-radius: 6px;
	display: block;
	inline-size: 28px;
}

.ssr .ssr__rating-rows {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.ssr .ssr__rating-top {
	align-items: center;
	display: flex;
	gap: 7px;
}

.ssr .ssr__score {
	font-family: "Unbounded", system-ui, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 1;
}

.ssr .ssr__stars {
	color: #ffb800;
	font-size: 12px;
	letter-spacing: 0.5px;
	line-height: 1;
}

.ssr .ssr__count {
	font-size: 13px;
	line-height: 1;
}

.ssr .ssr__arrow {
	display: block;
	flex: none;
	height: 13px;
	opacity: 0.45;
	transition: opacity 0.2s ease, transform 0.2s ease;
	width: 13px;
}

/* Витрина плагина: своей вёрстки у неё хватает, нам остаётся дать ей
   место. Карточки там светлые — это тот же блок, что на странице
   отзывов, и сайт остаётся согласован сам с собой. */
/*
 * Витрина плагина раздвигается до краёв экрана сама: её корень считает
 * отрицательное поле от ширины окна, а не от контейнера. Обрезать её
 * нашей обёрткой нельзя — срезалась первая вкладка «Все» и левый край
 * карточек. Горизонтальной прокрутки от этого нет: проверено замером
 * на 1433, 761 и 390, ширина документа равна окну.
 */
.ssr .ssr__plugin {
	margin-block-start: clamp(8px, 1.6vh, 16px);
}

@supports not (overflow: clip) {
	.ssr .ssr__plugin {
		overflow-x: hidden;
	}
}

/* ------------------------------------------------------------- карточки */

.ssr .ssr__cards {
	display: grid;
	gap: clamp(14px, 1.6vw, 22px);
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ssr .ssr__card {
	background: var(--ssr-card);
	border: 1px solid var(--ssr-line);
	border-radius: 18px;
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: clamp(18px, 1.8vw, 24px);
}

.ssr .ssr__card-head {
	align-items: center;
	display: flex;
	gap: 12px;
}

.ssr .ssr__avatar {
	block-size: 48px;
	border-radius: 50%;
	display: block;
	flex: none;
	inline-size: 48px;
	object-fit: cover;
}

.ssr .ssr__who {
	min-inline-size: 0;
}

.ssr .ssr__name {
	font-size: 16px;
	font-weight: 600;
	margin: 0;
}

.ssr .ssr__meta {
	align-items: center;
	color: var(--ssr-dim);
	display: flex;
	flex-wrap: wrap;
	font-size: 13px;
	gap: 8px;
	margin: 4px 0 0;
}

.ssr .ssr__source {
	block-size: 24px;
	border-radius: 5px;
	display: block;
	flex: none;
	inline-size: 24px;
	margin-inline-start: auto;
}

/* Текст обрезан по строкам, а не по буквам: обрезка на сервере рвала бы
   слово посередине, а целиком отзыв всё равно читают на своей странице. */
.ssr .ssr__text {
	color: var(--ssr-muted);
	display: -webkit-box;
	font-size: var(--ss-text);
	line-height: 1.55;
	margin: 0;
	overflow: hidden;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 6;
}

.ssr .ssr__all {
	align-items: center;
	border: 1px solid var(--ssr-line);
	border-radius: 999px;
	color: var(--ssr-ink);
	display: inline-flex;
	font-size: 15px;
	gap: 10px;
	margin-block-start: clamp(18px, 2.4vh, 26px);
	min-block-size: 50px;
	padding-inline: 24px;
	text-decoration: none;
	transition: border-color 0.2s ease;
}

@media (hover: hover) {
	.ssr .ssr__rating:hover {
		opacity: 0.82;
	}

	.ssr .ssr__rating:hover .ssr__arrow {
		opacity: 1;
		transform: translate(1px, -1px);
	}

	.ssr .ssr__all:hover {
		border-color: rgba(255, 255, 255, 0.28);
	}
}

.ssr a:focus-visible {
	outline: 2px solid var(--ssr-accent);
	outline-offset: 3px;
}

/* ---------------------------------------------------------- уже 1024 */

@media (max-width: 1024px) {
	.ssr .ssr__cards {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ----------------------------------------------------------- уже 767 */

@media (max-width: 767px) {
	.ssr .ssr__cards {
		grid-template-columns: minmax(0, 1fr);
	}

	.ssr .ssr__all {
		inline-size: 100%;
		justify-content: center;
	}
}
