/* Отзывы с внешних площадок: сводная оценка, карточки площадок, карусель отзывов. */

.bl-rex-head { margin-bottom: 2rem; }
.bl-rex-head .bl-subheading { margin-bottom: 0; }

.bl-rex-top { display: grid; gap: 1.5rem; }

@media (min-width: 880px) {
	.bl-rex-top--summary {
		grid-template-columns: minmax(0, 15rem) minmax(0, 1fr);
		align-items: start;
	}
}

/* --- звёзды --- */

/* width по содержимому обязателен: доля заливки считается в процентах
   от ширины виджета, а растянутый flex-элемент сломал бы дробную оценку. */
.bl-rex-stars {
	position: relative;
	display: inline-block;
	width: max-content;
	align-self: start;
	color: var(--bl-accent);
	font-size: 1rem;
}

.bl-rex-stars__layer { display: flex; gap: .1em; }

.bl-rex-stars__layer svg {
	flex: 0 0 auto;
	width: 1.05em;
	height: 1.05em;
	fill: currentColor;
}

/* Нижний слой — все пять звёзд приглушённо, верхний обрезан по доле оценки. */
.bl-rex-stars__layer:not(.bl-rex-stars__layer--fill) { opacity: .22; }

.bl-rex-stars__layer--fill {
	position: absolute;
	top: 0;
	left: 0;
	height: 100%;
	overflow: hidden;
}

/* --- сводная оценка --- */

.bl-rex-summary {
	display: grid;
	justify-items: center;
	gap: .6rem;
	padding: clamp(1.25rem, 3vw, 1.75rem);
	text-align: center;
}

.bl-rex-summary__score {
	font-size: clamp(2.75rem, 2rem + 3vw, 3.75rem);
	font-weight: 760;
	line-height: 1;
	letter-spacing: -0.03em;
	color: var(--bl-accent);
}

.bl-rex-summary .bl-rex-stars { font-size: 1.15rem; }

.bl-rex-summary__note {
	margin: 0;
	font-size: .85rem;
	line-height: 1.5;
	color: var(--bl-muted);
	text-wrap: pretty;
}

/* --- карточки площадок --- */

.bl-rex-platforms {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(1, minmax(0, 1fr));
	align-items: start;
}

@media (min-width: 480px) {
	.bl-rex-platforms-cols--2 .bl-rex-platforms,
	.bl-rex-platforms-cols--3 .bl-rex-platforms,
	.bl-rex-platforms-cols--4 .bl-rex-platforms,
	.bl-rex-platforms-cols--5 .bl-rex-platforms { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 720px) {
	.bl-rex-platforms-cols--3 .bl-rex-platforms,
	.bl-rex-platforms-cols--4 .bl-rex-platforms,
	.bl-rex-platforms-cols--5 .bl-rex-platforms { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
	.bl-rex-platforms-cols--4 .bl-rex-platforms { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.bl-rex-platforms-cols--5 .bl-rex-platforms { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

/* В режиме карусели .bl-rex-platforms не рендерится — разметку слайдера
   печатает bl_swiper_open()/close(), карточка сама является слайдом. */
.bl-rex-platforms--carousel .bl-rex-platform { height: 100%; }

.bl-rex-platforms:has(> :only-child) { grid-template-columns: minmax(0, 18rem); }

.bl-rex-platform {
	display: flex;
	flex-direction: column;
	gap: .6rem;
	height: 100%;
	padding: clamp(1.1rem, 3vw, 1.4rem);
	overflow-wrap: anywhere;
}

.bl-rex-platform__head { display: flex; align-items: center; gap: .6rem; }

.bl-rex-platform__logo {
	display: grid;
	place-items: center;
	flex-shrink: 0;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: calc(var(--bl-card-radius, 16px) * .4);
	overflow: hidden;
}
.bl-rex-platform__logo img {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
}

.bl-rex-platform__name {
	margin: 0;
	font-size: 1.02rem;
	font-weight: 700;
	line-height: 1.3;
}

.bl-rex-platform__rating {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .5rem;
	margin: 0;
}

.bl-rex-platform__score { font-size: 1.05rem; font-weight: 720; }

.bl-rex-platform__count {
	margin: -.25rem 0 0;
	font-size: .84rem;
	color: var(--bl-muted);
}

.bl-rex-platform__link {
	margin-top: auto;
	align-self: stretch;
	width: 100%;
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: .45em;
	/* Иконка и подпись не должны ужиматься до потери слов — у самой кнопки
	   уже есть вся ширина карточки, сжимать содержимое незачем. */
	overflow-wrap: normal;
}

.bl-rex-platform__ext { display: inline-grid; place-items: center; }
.bl-rex-platform__ext svg { width: .9em; height: .9em; }

/* --- карусель избранных отзывов --- */

.bl-rex-featured { margin-top: 2.25rem; }
.bl-rex--reviews .bl-rex-featured { margin-top: 0; }

.bl-rex-review {
	display: flex;
	flex-direction: column;
	gap: .85rem;
	padding: clamp(1.25rem, 3vw, 1.6rem);
	overflow-wrap: anywhere;
}

/* Обёртка нужна, чтобы правило Swiper «прямой потомок слайда во всю ширину»
   не растянуло сами звёзды и не сбило долю заливки. */
.bl-rex-review__rating { margin: 0; }
.bl-rex-review .bl-rex-stars { font-size: .95rem; }

.bl-rex-review__text {
	margin: 0;
	font-size: .95rem;
	line-height: 1.65;
	color: var(--bl-text);
}

.bl-rex-review__foot {
	margin-top: auto;
	padding-top: .5rem;
	border-top: 1px solid var(--bl-border);
}

.bl-rex-review__author { display: block; font-size: .95rem; font-weight: 700; }

.bl-rex-review__meta {
	display: block;
	margin-top: .15rem;
	font-size: .8rem;
	color: var(--bl-muted);
}
