/*
 * Reviews (design page tokens). Everything is scoped to .fpx-rv* so nothing leaks into the theme.
 * Colours read the theme's own variables first and fall back to the design's values. Fonts are the
 * theme's self-hosted Glory and Inter; this file loads no font.
 * Breakpoints match the theme (Tailwind sm 640px, lg 1024px).
 */
.fpx-rv,
.fpx-rv-page,
.fpx-rv-layer {
	--fpx-rv-deep: var(--brand-deep, #148d9f);
	--fpx-rv-cyan: var(--brand-light, #56ccf2);
	--fpx-rv-grad: var(--brand-grad, linear-gradient(340deg, #148d9f 30%, #56ccf2 100%));
	--fpx-rv-grad-pill: var(--brand-grad-pill, linear-gradient(100deg, #56ccf2 0%, #148d9f 62%));
	--fpx-rv-soft: var(--brand-grad-soft, linear-gradient(135deg, rgba(20, 141, 159, 0.1) 0%, rgba(86, 204, 242, 0.18) 100%));
	--fpx-rv-teal-text: var(--color-primary-dark, #166a73);
	--fpx-rv-ink: #1a1a1a;
	--fpx-rv-muted: #6b7280;
	--fpx-rv-line: #e5e7eb;
	--fpx-rv-input: #d1d5db;
	--fpx-rv-surface: #fff;
	--fpx-rv-grey: #f3f4f6;
	--fpx-rv-success: #15803d;
	--fpx-rv-error: #dc2626;
	--fpx-rv-error-bg: #fef2f2;
	--fpx-rv-head: 'Glory', 'Trebuchet MS', system-ui, sans-serif;
	--fpx-rv-body: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
	--fpx-rv-shadow-sm: 0 1px 2px rgba(17, 24, 39, 0.05), 0 1px 3px rgba(20, 141, 159, 0.06);
	--fpx-rv-shadow-md: 0 8px 24px rgba(20, 141, 159, 0.16);
	--fpx-rv-shadow-lg: 0 -8px 32px rgba(17, 24, 39, 0.18);
	--fpx-rv-ring: 0 0 0 3px rgba(20, 141, 159, 0.18);
	font-family: var(--fpx-rv-body);
	color: var(--fpx-rv-ink);
	font-size: 16px;
	line-height: 1.5;
}

.fpx-rv *,
.fpx-rv-page *,
.fpx-rv-layer * {
	box-sizing: border-box;
}

.fpx-rv :focus-visible,
.fpx-rv-page :focus-visible,
.fpx-rv-layer :focus-visible {
	outline: 3px solid var(--fpx-rv-deep);
	outline-offset: 2px;
}

.fpx-rv-visually-hidden,
.fpx-rv-hp {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ---------- Section ---------- */
.fpx-rv {
	padding-block: 48px 64px;
	scroll-margin-top: 80px;
}

.fpx-rv__inner {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.fpx-rv__heading {
	font-family: var(--fpx-rv-head);
	font-weight: 700;
	font-size: 24px;
	line-height: 32px;
	margin: 0;
	color: var(--fpx-rv-ink);
}

.fpx-rv__heading:focus {
	outline: none;
}

.fpx-rv__layout,
.fpx-rv__side,
.fpx-rv__main {
	display: flex;
	flex-direction: column;
	gap: 16px;
	min-width: 0;
}

.fpx-rv-card {
	background: var(--fpx-rv-surface);
	border: 1px solid var(--fpx-rv-line);
	border-radius: 12px;
	box-shadow: var(--fpx-rv-shadow-sm);
	padding: 16px;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.fpx-rv-small,
.fpx-rv-hint {
	font-size: 14px;
	line-height: 20px;
	color: var(--fpx-rv-muted);
	margin: 0;
}

/* Stars: an empty row with a filled row clipped on top, so 4.8 shows 4.8. */
.fpx-rv-stars {
	position: relative;
	display: inline-flex;
	line-height: 0;
	vertical-align: middle;
	flex: none;
}

.fpx-rv-stars__row {
	display: inline-flex;
	gap: 2px;
}

.fpx-rv-stars__row svg {
	width: var(--fpx-rv-size, 16px);
	height: var(--fpx-rv-size, 16px);
	flex: none;
}

.fpx-rv-stars__empty {
	color: var(--fpx-rv-line);
}

.fpx-rv-stars__full {
	position: absolute;
	inset: 0 auto 0 0;
	width: var(--fpx-rv-fill, 0%);
	overflow: hidden;
	color: var(--fpx-rv-deep);
}

/* Summary card */
.fpx-rv-summary__grid {
	display: grid;
	grid-template-columns: 96px 1fr;
	gap: 16px;
	align-items: center;
}

.fpx-rv-summary__avg {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
}

.fpx-rv-summary__num {
	font-family: var(--fpx-rv-head);
	font-weight: 700;
	font-size: 40px;
	line-height: 48px;
	font-variant-numeric: tabular-nums;
}

.fpx-rv-summary__verified {
	display: flex;
	gap: 6px;
	align-items: center;
}

.fpx-rv-summary__verified svg {
	color: var(--fpx-rv-deep);
	flex: none;
}

.fpx-rv-bars {
	display: flex;
	flex-direction: column;
}

.fpx-rv-bar {
	all: unset;
	box-sizing: border-box;
	display: grid;
	grid-template-columns: 30px 1fr 34px;
	align-items: center;
	gap: 8px;
	min-height: 40px;
	padding: 0 4px;
	border-radius: 8px;
	font-size: 14px;
	cursor: pointer;
	font-variant-numeric: tabular-nums;
	transition: background-color 150ms;
}

.fpx-rv-bar:hover:not(:disabled) {
	background: var(--fpx-rv-soft);
}

.fpx-rv-bar:disabled {
	cursor: default;
}

.fpx-rv-bar:focus-visible {
	outline: 3px solid var(--fpx-rv-deep);
	outline-offset: 0;
}

.fpx-rv-bar.is-on {
	background: var(--fpx-rv-soft);
	box-shadow: inset 0 0 0 2px var(--fpx-rv-deep);
}

.fpx-rv-bar__label {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	font-weight: 500;
}

.fpx-rv-bar__label svg {
	width: 12px;
	height: 12px;
	color: var(--fpx-rv-deep);
}

.fpx-rv-bar__track {
	height: 8px;
	border-radius: 999px;
	background: var(--fpx-rv-grey);
	overflow: hidden;
}

.fpx-rv-bar__track i {
	display: block;
	height: 100%;
	background: var(--fpx-rv-deep);
	border-radius: 999px;
}

.fpx-rv-bar.is-dim .fpx-rv-bar__track i {
	background: #b7c9cc;
}

.fpx-rv-bar__count {
	color: var(--fpx-rv-muted);
	text-align: right;
}

.fpx-rv-comply {
	display: flex;
	gap: 8px;
	margin: 0;
	font-size: 13px;
	line-height: 18px;
	color: var(--fpx-rv-muted);
}

.fpx-rv-comply svg {
	flex: none;
	margin-top: 1px;
}

/* Buttons */
.fpx-rv-btn {
	all: unset;
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 48px;
	padding: 0 20px;
	border-radius: 8px;
	font-family: var(--fpx-rv-body);
	font-weight: 600;
	font-size: 16px;
	line-height: 1.2;
	cursor: pointer;
	text-align: center;
	text-decoration: none;
	transition:
		filter 150ms,
		background-color 150ms;
}

.fpx-rv-btn:focus-visible {
	outline: 3px solid var(--fpx-rv-deep);
	outline-offset: 2px;
}

.fpx-rv-btn--primary {
	background: var(--fpx-rv-grad);
	color: #fff;
	box-shadow: 0 2px 8px rgba(20, 141, 159, 0.25);
}

.fpx-rv-btn--primary:hover {
	filter: brightness(1.06);
	color: #fff;
}

.fpx-rv-btn--primary:active {
	filter: brightness(0.96);
}

.fpx-rv-btn--secondary {
	background: var(--fpx-rv-surface);
	color: var(--fpx-rv-teal-text);
	box-shadow: inset 0 0 0 1.5px var(--fpx-rv-deep);
}

.fpx-rv-btn--secondary:hover {
	background: var(--fpx-rv-soft);
	color: var(--fpx-rv-teal-text);
}

.fpx-rv-btn--danger {
	background: var(--fpx-rv-error);
	color: #fff;
}

.fpx-rv-btn--block {
	width: 100%;
}

.fpx-rv-btn--small {
	min-height: 44px;
	padding: 0 16px;
	font-size: 15px;
}

.fpx-rv-btn[aria-disabled='true'] {
	background: var(--fpx-rv-line);
	color: var(--fpx-rv-muted);
	box-shadow: none;
	cursor: not-allowed;
	filter: none;
}

.fpx-rv-btn.is-loading::before {
	content: '';
	width: 18px;
	height: 18px;
	border-radius: 50%;
	border: 2px solid currentColor;
	border-right-color: transparent;
	animation: fpx-rv-spin 0.8s linear infinite;
}

@keyframes fpx-rv-spin {
	to {
		transform: rotate(360deg);
	}
}

/* Sticky bar (phones and tablets, D169) */
.fpx-rv-sticky {
	position: sticky;
	top: var(--fpx-rv-sticky-top, 0px);
	z-index: 40;
	margin-inline: 0;
	border-radius: 12px;
	padding: 8px 16px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	background: rgba(255, 255, 255, 0.95);
	backdrop-filter: blur(8px);
	border-bottom: 1px solid var(--fpx-rv-line);
	box-shadow: 0 4px 12px rgba(17, 24, 39, 0.06);
	/* Takes no room in the page: it floats over the reviews, so nothing moves when it appears. */
	margin-bottom: calc(-1 * var(--fpx-rv-sticky-h, 60px));
	opacity: 0;
	visibility: hidden;
	transform: translateY(-8px);
	transition:
		top 200ms,
		opacity 200ms,
		transform 200ms,
		visibility 0s 200ms;
}

.fpx-rv-sticky.is-shown {
	opacity: 1;
	visibility: visible;
	transform: none;
	transition:
		top 200ms,
		opacity 200ms,
		transform 200ms;
}

.fpx-rv-sticky__sum {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 14px;
	font-weight: 600;
}

/* Photo strip and thumbnails */
.fpx-rv-strip {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.fpx-rv-strip__title {
	font-family: var(--fpx-rv-head);
	font-weight: 600;
	font-size: 16px;
	line-height: 24px;
	margin: 0;
}

.fpx-rv-strip__list,
.fpx-rv-review__media {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	gap: 8px;
	overflow-x: auto;
	scrollbar-width: thin;
}

.fpx-rv-thumb {
	all: unset;
	box-sizing: border-box;
	position: relative;
	display: block;
	flex: none;
	width: 72px;
	height: 72px;
	border-radius: 8px;
	overflow: hidden;
	cursor: zoom-in;
	background: linear-gradient(160deg, #dcf0f2, #bfe5ee);
}

.fpx-rv-thumb:focus-visible {
	outline: 3px solid var(--fpx-rv-deep);
	outline-offset: 2px;
}

.fpx-rv-thumb img {
	width: 100%;
	height: 100%;
	-o-object-fit: cover;
	   object-fit: cover;
	display: block;
	transition: transform 200ms;
}

.fpx-rv-thumb:hover img {
	transform: scale(1.03);
}

.fpx-rv-thumb__play {
	position: absolute;
	inset: 0;
	margin: auto;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: rgba(17, 24, 39, 0.6);
	color: #fff;
	display: grid;
	place-items: center;
}

.fpx-rv-thumb__dur {
	position: absolute;
	right: 4px;
	bottom: 4px;
	font-size: 11px;
	font-weight: 600;
	color: #fff;
	background: rgba(17, 24, 39, 0.7);
	border-radius: 4px;
	padding: 0 4px;
}

.fpx-rv-thumb__more {
	position: absolute;
	inset: 0;
	background: rgba(17, 24, 39, 0.55);
	color: #fff;
	display: grid;
	place-items: center;
	font-weight: 600;
	font-size: 15px;
}

/* Filters and sort */
.fpx-rv-tools {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.fpx-rv-chips {
	display: flex;
	gap: 8px;
	overflow-x: auto;
	padding: 2px;
}

.fpx-rv-chip {
	all: unset;
	box-sizing: border-box;
	flex: none;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 44px;
	padding: 0 16px;
	border-radius: 999px;
	border: 1px solid var(--fpx-rv-line);
	background: var(--fpx-rv-surface);
	font-size: 15px;
	font-weight: 500;
	cursor: pointer;
	color: var(--fpx-rv-ink);
	transition:
		border-color 150ms,
		background-color 150ms;
}

.fpx-rv-chip:hover {
	border-color: var(--fpx-rv-deep);
}

.fpx-rv-chip:focus-visible {
	outline: 3px solid var(--fpx-rv-deep);
	outline-offset: 2px;
}

.fpx-rv-chip[aria-pressed='true'],
.fpx-rv-chip--rating {
	border-color: var(--fpx-rv-deep);
	background: var(--fpx-rv-soft);
	color: var(--fpx-rv-teal-text);
	box-shadow: inset 0 0 0 1px var(--fpx-rv-deep);
}

.fpx-rv-chip[hidden] {
	display: none;
}

.fpx-rv-chip__n {
	color: var(--fpx-rv-muted);
	font-weight: 400;
}

.fpx-rv-toolbar {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 8px;
}

.fpx-rv-sort select {
	min-height: 44px;
	padding: 0 36px 0 12px;
	border-radius: 8px;
	border: 1px solid var(--fpx-rv-line);
	background: var(--fpx-rv-surface)
		url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2716%27 height=%2716%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%231a1a1a%27 stroke-width=%272.2%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27m6 9 6 6 6-6%27/%3E%3C/svg%3E")
		no-repeat right 12px center;
	font: 500 15px/1.2 var(--fpx-rv-body);
	color: var(--fpx-rv-ink);
	-webkit-appearance: none;
	   -moz-appearance: none;
	        appearance: none;
	cursor: pointer;
}

/* Review cards */
.fpx-rv-list {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.fpx-rv-list[aria-busy='true'] {
	opacity: 0.9;
}

.fpx-rv-review {
	background: var(--fpx-rv-surface);
	border: 1px solid var(--fpx-rv-line);
	border-radius: 12px;
	box-shadow: var(--fpx-rv-shadow-sm);
	padding: 16px;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 12px;
}

.fpx-rv-review__person {
	display: flex;
	gap: 12px;
	align-items: flex-start;
}

.fpx-rv-avatar {
	flex: none;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--fpx-rv-soft);
	border: 1px solid rgba(20, 141, 159, 0.25);
	color: var(--fpx-rv-teal-text);
	display: grid;
	place-items: center;
	font-weight: 600;
}

.fpx-rv-review__who {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}

.fpx-rv-review__name {
	font-weight: 600;
	line-height: 20px;
}

.fpx-rv-badges {
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
}

.fpx-rv-badge {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 13px;
	font-weight: 600;
	line-height: 16px;
	padding: 4px 8px;
	border-radius: 999px;
	margin: 0;
}

.fpx-rv-badge--verified {
	background: var(--fpx-rv-soft);
	color: var(--fpx-rv-teal-text);
}

.fpx-rv-badge--verified svg {
	color: var(--fpx-rv-deep);
}

.fpx-rv-badge--subscriber {
	background: var(--fpx-rv-surface);
	color: var(--fpx-rv-teal-text);
	box-shadow: inset 0 0 0 1px rgba(20, 141, 159, 0.45);
}

.fpx-rv-badge--incentivized {
	background: var(--fpx-rv-grey);
	color: #4b5563;
}

.fpx-rv-review__main {
	display: flex;
	flex-direction: column;
	gap: 8px;
	min-width: 0;
}

.fpx-rv-review__rate {
	display: flex;
	align-items: center;
	gap: 8px;
}

.fpx-rv-review__date {
	font-size: 14px;
	color: var(--fpx-rv-muted);
}

.fpx-rv-review__title {
	font-family: var(--fpx-rv-head);
	font-weight: 600;
	font-size: 18px;
	line-height: 24px;
	margin: 0;
}

.fpx-rv-review__text {
	font-size: 16px;
	line-height: 24px;
	max-width: 66ch;
	display: -webkit-box;
	-webkit-line-clamp: 4;
	line-clamp: 4;
	-webkit-box-orient: vertical;
	overflow: hidden;
	overflow-wrap: anywhere;
}

.fpx-rv-review__text p {
	margin: 0 0 8px;
}

.fpx-rv-review__text p:last-child {
	margin-bottom: 0;
}

.fpx-rv-review__text.is-open {
	display: block;
	-webkit-line-clamp: unset;
	line-clamp: unset;
}

.fpx-rv-more {
	all: unset;
	color: var(--fpx-rv-teal-text);
	font-weight: 600;
	font-size: 15px;
	cursor: pointer;
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	align-self: flex-start;
}

.fpx-rv-more[hidden] {
	display: none;
}

.fpx-rv-more:focus-visible {
	outline: 3px solid var(--fpx-rv-deep);
}

.fpx-rv-review__facts {
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 4px 16px;
	font-size: 14px;
	line-height: 20px;
}

.fpx-rv-review__facts div {
	display: flex;
	gap: 4px;
}

.fpx-rv-review__facts dt {
	color: var(--fpx-rv-muted);
}

.fpx-rv-review__facts dd {
	margin: 0;
	font-weight: 500;
}

.fpx-rv-review__helpful {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
	font-size: 14px;
	color: var(--fpx-rv-muted);
	border-top: 1px solid var(--fpx-rv-line);
	padding-top: 12px;
}

.fpx-rv-review__helpful.is-own .fpx-rv-votes,
.fpx-rv-review__helpful.is-own .fpx-rv-review__helpful-q {
	display: none;
}

.fpx-rv-votes {
	display: inline-flex;
	gap: 8px;
}

.fpx-rv-vote {
	all: unset;
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 44px;
	min-width: 44px;
	padding: 0 12px;
	border-radius: 8px;
	border: 1px solid var(--fpx-rv-line);
	color: var(--fpx-rv-ink);
	font-size: 14px;
	font-weight: 500;
	cursor: pointer;
	transition:
		border-color 150ms,
		background-color 150ms;
}

.fpx-rv-vote:hover {
	border-color: var(--fpx-rv-deep);
}

.fpx-rv-vote:focus-visible {
	outline: 3px solid var(--fpx-rv-deep);
	outline-offset: 2px;
}

.fpx-rv-vote[aria-pressed='true'] {
	border-color: var(--fpx-rv-deep);
	color: var(--fpx-rv-teal-text);
	background: var(--fpx-rv-soft);
}

.fpx-rv-vote__msg {
	color: var(--fpx-rv-error);
	font-weight: 500;
}

.fpx-rv-reply {
	background: var(--fpx-rv-soft);
	border-radius: 8px;
	padding: 12px;
	display: flex;
	flex-direction: column;
	gap: 4px;
	font-size: 15px;
	line-height: 22px;
}

.fpx-rv-reply p {
	margin: 0;
}

.fpx-rv-reply__who {
	display: flex;
	align-items: center;
	gap: 6px;
	font-weight: 600;
	color: var(--fpx-rv-teal-text);
	font-size: 14px;
}

.fpx-rv-list__end {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.fpx-rv-list__all {
	text-align: center;
}

.fpx-rv-nomatch {
	align-items: center;
	text-align: center;
}

.fpx-rv-nomatch p {
	margin: 0;
}

/* Skeleton */
.fpx-rv-skel {
	background: var(--fpx-rv-surface);
	border: 1px solid var(--fpx-rv-line);
	border-radius: 12px;
	padding: 16px;
	display: flex;
	flex-direction: column;
	gap: 10px;
	min-height: 120px;
}

.fpx-rv-skel i {
	display: block;
	height: 12px;
	border-radius: 6px;
	background: linear-gradient(90deg, #eef1f3 0%, #f7f9fa 50%, #eef1f3 100%);
	background-size: 200% 100%;
	animation: fpx-rv-shimmer 1.4s linear infinite;
}

.fpx-rv-skel i:nth-child(2) {
	width: 80%;
}

.fpx-rv-skel i:nth-child(3) {
	width: 60%;
}

@keyframes fpx-rv-shimmer {
	to {
		background-position: -200% 0;
	}
}

/* Empty state (M3) */
.fpx-rv-empty {
	align-items: center;
	text-align: center;
	padding: 32px 20px;
	gap: 16px;
}

.fpx-rv-empty__stars {
	display: flex;
	gap: 6px;
	color: var(--fpx-rv-line);
}

.fpx-rv-empty__stars svg {
	width: 32px;
	height: 32px;
}

.fpx-rv-empty__stars svg:first-child {
	color: var(--fpx-rv-deep);
}

.fpx-rv-empty__title {
	font-family: var(--fpx-rv-head);
	font-weight: 600;
	font-size: 20px;
	line-height: 28px;
	margin: 0;
}

.fpx-rv-empty__text {
	margin: 0;
	max-width: 46ch;
}

/* ---------- Form: sheet / window ---------- */
.fpx-rv-layer {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: flex;
	align-items: flex-end;
	justify-content: center;
}

.fpx-rv-scrim {
	position: absolute;
	inset: 0;
	background: rgba(17, 24, 39, 0.48);
	opacity: 0;
	transition: opacity 260ms ease-out;
}

.fpx-rv-sheet {
	position: relative;
	width: 100%;
	max-height: 96%;
	background: var(--fpx-rv-surface);
	border-radius: 16px 16px 0 0;
	box-shadow: var(--fpx-rv-shadow-lg);
	display: flex;
	flex-direction: column;
	transform: translateY(100%);
	transition: transform 260ms ease-out;
	padding-bottom: env(safe-area-inset-bottom, 0);
}

.fpx-rv-layer.is-open .fpx-rv-scrim {
	opacity: 1;
}

.fpx-rv-layer.is-open .fpx-rv-sheet {
	transform: none;
}

.fpx-rv-sheet__handle {
	width: 40px;
	height: 4px;
	border-radius: 2px;
	background: var(--fpx-rv-input);
	margin: 8px auto 0;
}

.fpx-rv-sheet__head {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 8px 8px 8px 16px;
}

.fpx-rv-sheet__titles {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
}

.fpx-rv-sheet__title {
	font-family: var(--fpx-rv-head);
	font-weight: 600;
	font-size: 18px;
	line-height: 24px;
	margin: 0;
}

.fpx-rv-sheet__step {
	font-size: 14px;
	color: var(--fpx-rv-muted);
}

.fpx-rv-iconbtn {
	all: unset;
	box-sizing: border-box;
	width: 48px;
	height: 48px;
	border-radius: 50%;
	display: grid;
	place-items: center;
	cursor: pointer;
	color: inherit;
	flex: none;
}

.fpx-rv-iconbtn:focus-visible {
	outline: 3px solid var(--fpx-rv-deep);
}

.fpx-rv-progress {
	display: flex;
	gap: 4px;
	padding: 0 16px 8px;
	border-bottom: 1px solid var(--fpx-rv-line);
}

.fpx-rv-progress i {
	flex: 1;
	height: 4px;
	border-radius: 2px;
	background: var(--fpx-rv-line);
}

.fpx-rv-progress i.is-on {
	background: var(--fpx-rv-grad-pill);
}

.fpx-rv-sheet__body {
	padding: 24px 16px;
	overflow-y: auto;
	overscroll-behavior: contain;
	flex: 1;
}

.fpx-rv-sheet__foot {
	padding: 12px 16px 16px;
	border-top: 1px solid var(--fpx-rv-line);
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.fpx-rv-sheet__foot .fpx-rv-btn {
	flex: 1;
}

.fpx-rv-sheet__foot > span:empty {
	display: none;
}

.fpx-rv-postingas {
	flex-basis: 100%;
	text-align: center;
}

.fpx-rv-banner {
	margin: 12px 16px 0;
	padding: 12px;
	border-radius: 8px;
	background: var(--fpx-rv-error-bg);
	color: var(--fpx-rv-error);
	font-weight: 500;
	font-size: 15px;
	display: flex;
	gap: 8px;
	align-items: flex-start;
}

.fpx-rv-banner[hidden] {
	display: none;
}

.fpx-rv-confirm {
	position: absolute;
	inset: auto 16px 16px;
	z-index: 2;
	background: var(--fpx-rv-surface);
	border-radius: 12px;
	box-shadow: 0 24px 64px rgba(17, 24, 39, 0.28);
	border: 1px solid var(--fpx-rv-line);
	padding: 20px;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.fpx-rv-confirm p {
	margin: 0;
}

.fpx-rv-confirm__title {
	font-family: var(--fpx-rv-head);
	font-weight: 600;
	font-size: 20px;
}

.fpx-rv-confirm__actions {
	display: flex;
	gap: 8px;
	margin-top: 8px;
}

.fpx-rv-confirm__actions .fpx-rv-btn {
	flex: 1;
}

/* Steps and fields */
.fpx-rv-step {
	display: flex;
	flex-direction: column;
	gap: 24px;
}

.fpx-rv-step__q {
	font-family: var(--fpx-rv-head);
	font-weight: 600;
	font-size: 22px;
	line-height: 28px;
	margin: 0 0 4px;
	text-align: center;
}

.fpx-rv-starinput {
	display: flex;
	justify-content: center;
	gap: 4px;
}

.fpx-rv-starinput button {
	all: unset;
	width: 56px;
	height: 56px;
	display: grid;
	place-items: center;
	cursor: pointer;
	border-radius: 8px;
	color: var(--fpx-rv-line);
}

.fpx-rv-starinput button svg {
	width: 44px;
	height: 44px;
}

.fpx-rv-starinput button.is-on {
	color: var(--fpx-rv-deep);
}

.fpx-rv-starinput button.is-pop {
	animation: fpx-rv-pop 220ms ease-out;
}

.fpx-rv-starinput button:focus-visible {
	outline: 3px solid var(--fpx-rv-deep);
	outline-offset: 0;
}

@keyframes fpx-rv-pop {
	50% {
		transform: scale(1.2);
	}
}

.fpx-rv-starword {
	text-align: center;
	font-family: var(--fpx-rv-head);
	font-weight: 600;
	font-size: 20px;
	min-height: 28px;
	margin: 0;
	color: var(--fpx-rv-teal-text);
}

.fpx-rv-starword.is-preview {
	color: var(--fpx-rv-muted);
}

.fpx-rv-field,
.fpx-rv-fieldset {
	display: flex;
	flex-direction: column;
	gap: 8px;
	border: 0;
	margin: 0;
	padding: 0;
	min-width: 0;
}

.fpx-rv-label {
	font-weight: 600;
	font-size: 16px;
	margin: 0;
	padding: 0;
}

.fpx-rv-opt {
	font-weight: 400;
	color: var(--fpx-rv-muted);
	font-size: 14px;
}

.fpx-rv-input {
	width: 100%;
	border: 1.5px solid var(--fpx-rv-input);
	border-radius: 8px;
	min-height: 48px;
	padding: 12px;
	font: 16px/24px var(--fpx-rv-body);
	background: var(--fpx-rv-surface);
	color: var(--fpx-rv-ink);
}

.fpx-rv-input::-moz-placeholder {
	color: var(--fpx-rv-muted);
}

.fpx-rv-input::placeholder {
	color: var(--fpx-rv-muted);
}

.fpx-rv-input:hover {
	border-color: #9ca3af;
}

.fpx-rv-input:focus {
	outline: none;
	border-color: var(--fpx-rv-deep);
	box-shadow: var(--fpx-rv-ring);
}

.fpx-rv-input.is-error {
	border-color: var(--fpx-rv-error);
}

.fpx-rv-input--area {
	min-height: 128px;
	resize: vertical;
}

.fpx-rv-countrow {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 8px;
}

.fpx-rv-ok,
.fpx-rv-err {
	font-size: 14px;
	display: inline-flex;
	gap: 4px;
	align-items: center;
	font-weight: 500;
	margin: 0;
}

.fpx-rv-ok {
	color: var(--fpx-rv-success);
}

.fpx-rv-err {
	color: var(--fpx-rv-error);
}

.fpx-rv-err[hidden] {
	display: none;
}

.fpx-rv-ideas,
.fpx-rv-opts {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.fpx-rv-idea {
	all: unset;
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 0 12px;
	border-radius: 999px;
	background: var(--fpx-rv-grey);
	font-size: 14px;
	cursor: pointer;
}

.fpx-rv-idea:focus-visible {
	outline: 3px solid var(--fpx-rv-deep);
}

.fpx-rv-opt-chip span {
	box-sizing: border-box;
	min-height: 44px;
	padding: 0 14px;
	display: inline-flex;
	align-items: center;
	border: 1.5px solid var(--fpx-rv-input);
	border-radius: 8px;
	font-size: 15px;
	cursor: pointer;
	background: var(--fpx-rv-surface);
}

.fpx-rv-opt-chip input:checked + span {
	border-color: var(--fpx-rv-deep);
	background: var(--fpx-rv-soft);
	color: var(--fpx-rv-teal-text);
	font-weight: 600;
}

.fpx-rv-opt-chip input:focus-visible + span {
	outline: 3px solid var(--fpx-rv-deep);
	outline-offset: 2px;
}

/* Uploads */
.fpx-rv-upload {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 8px;
}

.fpx-rv-up {
	aspect-ratio: 1;
	border-radius: 8px;
	position: relative;
	overflow: hidden;
	background: var(--fpx-rv-grey);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 4px;
	text-align: center;
}

.fpx-rv-upload > li:last-child {
	aspect-ratio: 1;
}

.fpx-rv-up img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	-o-object-fit: cover;
	   object-fit: cover;
}

.fpx-rv-up__video {
	font-size: 13px;
	font-weight: 600;
	color: var(--fpx-rv-teal-text);
}

.fpx-rv-up--add {
	height: 100%;
	border: 1.5px dashed var(--fpx-rv-deep);
	background: var(--fpx-rv-soft);
	color: var(--fpx-rv-teal-text);
	font-size: 13px;
	font-weight: 600;
	padding: 4px;
	cursor: pointer;
}

.fpx-rv-upload li:has(input:focus-visible) .fpx-rv-up--add {
	outline: 3px solid var(--fpx-rv-deep);
	outline-offset: 2px;
}

.fpx-rv-up--add.is-full {
	border-style: solid;
	border-color: var(--fpx-rv-line);
	background: var(--fpx-rv-grey);
	color: var(--fpx-rv-muted);
	cursor: not-allowed;
}

.fpx-rv-up__ring {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	background: rgba(255, 255, 255, 0.55);
}

.fpx-rv-up__ring::before {
	content: '';
	position: absolute;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: conic-gradient(var(--fpx-rv-deep) calc(var(--p, 0) * 1%), var(--fpx-rv-line) 0);
	-webkit-mask: radial-gradient(circle, transparent 16px, #000 17px);
	        mask: radial-gradient(circle, transparent 16px, #000 17px);
}

.fpx-rv-up__ring b {
	position: relative;
	font-size: 11px;
	font-weight: 600;
}

.fpx-rv-up__rm {
	all: unset;
	position: absolute;
	top: 0;
	right: 0;
	width: 44px;
	height: 44px;
	display: grid;
	place-items: center;
	cursor: pointer;
}

.fpx-rv-up__rm svg {
	box-sizing: content-box;
	padding: 7px;
	border-radius: 50%;
	background: rgba(17, 24, 39, 0.7);
	color: #fff;
}

.fpx-rv-up__rm:focus-visible svg {
	outline: 3px solid var(--fpx-rv-deep);
}

.fpx-rv-up--bad {
	border: 1.5px solid var(--fpx-rv-error);
	background: var(--fpx-rv-error-bg);
	color: var(--fpx-rv-error);
	font-size: 12px;
	font-weight: 600;
	padding: 6px;
	line-height: 15px;
}

.fpx-rv-up--bad .fpx-rv-up__rm svg {
	background: var(--fpx-rv-error);
}

/* Thank-you (M8) */
.fpx-rv-thanks {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 16px;
	padding: 16px 0 8px;
}

.fpx-rv-thanks p {
	margin: 0;
}

.fpx-rv-thanks__check {
	width: 72px;
	height: 72px;
	border-radius: 50%;
	background: var(--fpx-rv-grad);
	color: #fff;
	display: grid;
	place-items: center;
	box-shadow: var(--fpx-rv-shadow-md);
}

.fpx-rv-thanks__title {
	font-family: var(--fpx-rv-head);
	font-weight: 700;
	font-size: 24px;
	line-height: 32px;
	margin: 0;
}

.fpx-rv-thanks__title:focus {
	outline: none;
}

.fpx-rv-next {
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: 8px;
	text-align: left;
}

.fpx-rv-next__title {
	font-family: var(--fpx-rv-head);
	font-weight: 600;
	font-size: 18px;
	margin: 0;
}

.fpx-rv-next__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.fpx-rv-next__item {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px;
	border: 1px solid var(--fpx-rv-line);
	border-radius: 12px;
}

.fpx-rv-next__item img {
	border-radius: 8px;
	flex: none;
}

.fpx-rv-next__text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.fpx-rv-next__stars {
	display: flex;
	gap: 2px;
}

.fpx-rv-next__stars a {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	color: var(--fpx-rv-line);
}

.fpx-rv-next__stars a:hover,
.fpx-rv-next__stars a:focus-visible,
.fpx-rv-next__stars:hover a,
.fpx-rv-next__stars a:hover ~ a {
	color: var(--fpx-rv-deep);
}

.fpx-rv-next__stars:hover a:hover ~ a {
	color: var(--fpx-rv-line);
}

.fpx-rv-next__stars svg {
	width: 28px;
	height: 28px;
}

/* ---------- Viewer (M10) ---------- */
.fpx-rv-layer--viewer {
	align-items: stretch;
	background: #0b0f10;
}

.fpx-rv-viewer {
	width: 100%;
	display: flex;
	flex-direction: column;
	color: #f3f4f6;
}

.fpx-rv-viewer__top {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 8px 8px 8px 16px;
	font-size: 14px;
	color: #d1d5db;
}

.fpx-rv-viewer .fpx-rv-iconbtn {
	color: #fff;
}

.fpx-rv-viewer__media {
	flex: 1;
	position: relative;
	min-height: 0;
	display: grid;
}

.fpx-rv-viewer__stage {
	display: grid;
	place-items: center;
	min-height: 0;
	touch-action: pan-y;
}

.fpx-rv-viewer__stage img,
.fpx-rv-viewer__stage video {
	max-width: 100%;
	max-height: 100%;
	-o-object-fit: contain;
	   object-fit: contain;
}

.fpx-rv-viewer__arrow {
	all: unset;
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 48px;
	height: 48px;
	border-radius: 50%;
	background: rgba(17, 24, 39, 0.55);
	color: #fff;
	display: grid;
	place-items: center;
	cursor: pointer;
}

.fpx-rv-viewer__arrow[hidden] {
	display: none;
}

.fpx-rv-viewer__arrow:hover {
	background: rgba(17, 24, 39, 0.8);
}

.fpx-rv-viewer__arrow:focus-visible {
	outline: 3px solid var(--fpx-rv-cyan);
}

.fpx-rv-viewer__arrow--prev {
	left: 8px;
}

.fpx-rv-viewer__arrow--next {
	right: 8px;
}

.fpx-rv-viewer__caption {
	padding: 16px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	font-size: 15px;
	line-height: 22px;
}

.fpx-rv-viewer__caption p {
	margin: 0;
}

.fpx-rv-viewer__caption .fpx-rv-stars__empty {
	color: #3b4446;
}

.fpx-rv-viewer__caption .fpx-rv-stars__full {
	color: var(--fpx-rv-cyan);
}

.fpx-rv-viewer__who {
	font-weight: 600;
}

.fpx-rv-viewer__read {
	all: unset;
	color: #8fddf5;
	font-weight: 600;
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	cursor: pointer;
	align-self: flex-start;
}

.fpx-rv-viewer__read:focus-visible {
	outline: 3px solid var(--fpx-rv-cyan);
}

.fpx-rv-viewer__error {
	color: #d1d5db;
}

.fpx-rv-spinner {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	border: 3px solid rgba(255, 255, 255, 0.3);
	border-top-color: #fff;
	animation: fpx-rv-spin 0.8s linear infinite;
	grid-area: 1 / 1;
}

/* ---------- /review/ page (M9) ---------- */
.fpx-rv-page {
	background: #f9fafb;
	padding: 24px 16px 64px;
}

.fpx-rv-page__inner {
	max-width: 640px;
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.fpx-rv-page__head {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.fpx-rv-page__step {
	align-self: flex-start;
	font-size: 13px;
	font-weight: 600;
	padding: 4px 10px;
	border-radius: 999px;
	background: var(--fpx-rv-grey);
	color: #374151;
}

.fpx-rv-page__title {
	font-family: var(--fpx-rv-head);
	font-weight: 700;
	font-size: 26px;
	line-height: 32px;
	margin: 0;
}

.fpx-rv-page__message p {
	margin: 0;
}

.fpx-rv-page__promise {
	align-self: flex-start;
}

.fpx-rv-order {
	flex-direction: row;
	align-items: center;
}

.fpx-rv-order img {
	border-radius: 8px;
	flex: none;
}

.fpx-rv-order__text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.fpx-rv-pageform {
	gap: 24px;
}

.fpx-rv-pageform > .fpx-rv-banner {
	margin: 0;
}

.fpx-rv-more-details summary {
	list-style: none;
	cursor: pointer;
	min-height: 48px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 8px 12px;
	border: 1px solid var(--fpx-rv-line);
	border-radius: 8px;
}

.fpx-rv-more-details summary::-webkit-details-marker {
	display: none;
}

.fpx-rv-more-details[open] summary {
	margin-bottom: 16px;
}

/* ---------- All-reviews page (M12, M13, D3) ---------- */
.fpx-rv--all {
	padding-block: 24px 64px;
}

.fpx-rv-hero {
	background: var(--fpx-rv-surface);
	border: 1px solid var(--fpx-rv-line);
	border-radius: 12px;
	box-shadow: var(--fpx-rv-shadow-sm);
	padding: 24px 16px;
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.fpx-rv-hero .fpx-rv__heading {
	font-size: 28px;
	line-height: 36px;
}

.fpx-rv-hero__score {
	display: flex;
	align-items: center;
	gap: 12px;
}

.fpx-rv-hero__of {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.fpx-rv-stats {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.fpx-rv-stat {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 12px;
	border-radius: 999px;
	background: var(--fpx-rv-soft);
	color: var(--fpx-rv-teal-text);
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
}

.fpx-rv-stat svg {
	color: var(--fpx-rv-deep);
	flex: none;
}

.fpx-rv-hero__write {
	width: 100%;
}

.fpx-rv-new-pill {
	font-size: 12px;
	font-weight: 600;
	color: #fff;
	background: var(--fpx-rv-grad-pill);
	padding: 2px 8px;
	border-radius: 999px;
}

.fpx-rv-barsbox {
	padding: 8px 12px;
}

/* "Review of [product]" on each card */
.fpx-rv-review__for {
	margin: 0;
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	line-height: 20px;
	padding-bottom: 12px;
	border-bottom: 1px solid var(--fpx-rv-line);
}

.fpx-rv-review__for img {
	width: 32px;
	height: 32px;
	border-radius: 6px;
	-o-object-fit: cover;
	   object-fit: cover;
	flex: none;
}

.fpx-rv-review__for span {
	color: var(--fpx-rv-muted);
}

.fpx-rv-review__for a {
	color: var(--fpx-rv-teal-text);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* "See reviews of all our products" under a product's summary */
.fpx-rv-alllink {
	margin: 0;
}

.fpx-rv-alllink a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--fpx-rv-teal-text);
	font-weight: 600;
	font-size: 15px;
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* "Which product?" step (M13) */
.fpx-rv-pick {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
}

.fpx-rv-pick__item {
	all: unset;
	box-sizing: border-box;
	width: 100%;
	min-height: 64px;
	padding: 8px 4px;
	display: flex;
	align-items: center;
	gap: 12px;
	border-bottom: 1px solid var(--fpx-rv-line);
	cursor: pointer;
}

.fpx-rv-pick__item:hover,
.fpx-rv-pick__item[aria-pressed='true'] {
	background: var(--fpx-rv-soft);
}

.fpx-rv-pick__item:focus-visible {
	outline: 3px solid var(--fpx-rv-deep);
	outline-offset: -3px;
}

.fpx-rv-pick__item img,
.fpx-rv-pick__img {
	width: 48px;
	height: 48px;
	border-radius: 8px;
	-o-object-fit: cover;
	   object-fit: cover;
	flex: none;
	background: var(--fpx-rv-grey);
}

.fpx-rv-pick__text {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.fpx-rv-pick__item > svg {
	color: var(--fpx-rv-muted);
	flex: none;
}

.fpx-rv-thanks__actions {
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

@media (min-width: 640px) {
	.fpx-rv-hero__write {
		width: auto;
		align-self: flex-start;
	}
}

@media (min-width: 1024px) {
	.fpx-rv-hero {
		padding: 32px;
		display: grid;
		grid-template-columns: 1fr auto;
		grid-template-areas:
			'title write'
			'score write'
			'stats write';
		-moz-column-gap: 24px;
		     column-gap: 24px;
		align-items: center;
	}

	.fpx-rv-hero .fpx-rv__heading {
		grid-area: title;
		font-size: 32px;
		line-height: 40px;
	}

	.fpx-rv-hero__score {
		grid-area: score;
	}

	.fpx-rv-stats {
		grid-area: stats;
	}

	.fpx-rv-hero__write {
		grid-area: write;
	}

	.fpx-rv__layout--all {
		grid-template-columns: 300px minmax(0, 1fr);
	}

	/* "Review of" spans the card above the person and the text. */
	.fpx-rv-review--for .fpx-rv-review__for {
		grid-column: 1 / -1;
		grid-row: 1;
	}

	.fpx-rv-review--for .fpx-rv-review__person {
		grid-row: 2;
	}

	.fpx-rv-review--for .fpx-rv-review__main {
		grid-row: 2;
	}

	.fpx-rv-review--for .fpx-rv-review__facts {
		grid-row: 3 / span 4;
	}
}

/*
 * ---------- Theme reset guard ----------
 * The FoliumpX theme resets every <button> inside WooCommerce content (`.fpx-woo button`: padding,
 * radius, background, border, shadow and colour, all !important). The section's own buttons restate
 * their look here, scoped to .fpx-rv so nothing else on the page changes. The sheet and the viewer
 * are added to <body>, outside .fpx-woo, and need none of this.
 */
.fpx-rv .fpx-rv-btn {
	padding: 0 20px !important;
	border-radius: 8px !important;
}

.fpx-rv .fpx-rv-btn--small {
	padding: 0 16px !important;
}

.fpx-rv .fpx-rv-btn--primary {
	background-image: var(--fpx-rv-grad) !important;
	color: #fff !important;
	box-shadow: 0 2px 8px rgba(20, 141, 159, 0.25) !important;
}

.fpx-rv .fpx-rv-btn--secondary {
	background-color: var(--fpx-rv-surface) !important;
	color: var(--fpx-rv-teal-text) !important;
	box-shadow: inset 0 0 0 1.5px var(--fpx-rv-deep) !important;
}

.fpx-rv .fpx-rv-btn--secondary:hover {
	background-image: var(--fpx-rv-soft) !important;
}

.fpx-rv .fpx-rv-bar {
	padding: 0 4px !important;
	border-radius: 8px !important;
}

.fpx-rv .fpx-rv-bar:hover:not(:disabled),
.fpx-rv .fpx-rv-bar.is-on {
	background-image: var(--fpx-rv-soft) !important;
}

.fpx-rv .fpx-rv-bar.is-on {
	box-shadow: inset 0 0 0 2px var(--fpx-rv-deep) !important;
}

.fpx-rv .fpx-rv-chip {
	padding: 0 16px !important;
	border-radius: 999px !important;
	border: 1px solid var(--fpx-rv-line) !important;
	background-color: var(--fpx-rv-surface) !important;
	color: var(--fpx-rv-ink) !important;
}

.fpx-rv .fpx-rv-chip:hover {
	border-color: var(--fpx-rv-deep) !important;
}

.fpx-rv .fpx-rv-chip[aria-pressed='true'],
.fpx-rv .fpx-rv-chip--rating {
	border-color: var(--fpx-rv-deep) !important;
	background-image: var(--fpx-rv-soft) !important;
	color: var(--fpx-rv-teal-text) !important;
	box-shadow: inset 0 0 0 1px var(--fpx-rv-deep) !important;
}

.fpx-rv .fpx-rv-vote {
	padding: 0 12px !important;
	border-radius: 8px !important;
	border: 1px solid var(--fpx-rv-line) !important;
	color: var(--fpx-rv-ink) !important;
}

.fpx-rv .fpx-rv-vote:hover {
	border-color: var(--fpx-rv-deep) !important;
}

.fpx-rv .fpx-rv-vote[aria-pressed='true'] {
	border-color: var(--fpx-rv-deep) !important;
	color: var(--fpx-rv-teal-text) !important;
	background-image: var(--fpx-rv-soft) !important;
}

.fpx-rv .fpx-rv-more {
	color: var(--fpx-rv-teal-text) !important;
}

.fpx-rv .fpx-rv-thumb {
	border-radius: 8px !important;
	background-image: linear-gradient(160deg, #dcf0f2, #bfe5ee) !important;
}

.fpx-rv .fpx-rv-sort select {
	padding: 0 36px 0 12px !important;
	min-height: 44px !important;
	border-radius: 8px !important;
}

/* ---------- Tablet (640px+) ---------- */
@media (min-width: 640px) {
	.fpx-rv-summary {
		max-width: 560px;
	}

	.fpx-rv-chips {
		flex-wrap: wrap;
		overflow: visible;
	}

	.fpx-rv-thumb {
		width: 80px;
		height: 80px;
	}

	.fpx-rv-sheet {
		width: 600px;
	}

	.fpx-rv-page__title {
		font-size: 28px;
		line-height: 36px;
	}
}

/* ---------- Desktop (1024px+): summary column + window (D1, D2) ---------- */
@media (min-width: 1024px) {
	.fpx-rv__heading {
		font-size: 28px;
		line-height: 36px;
	}

	.fpx-rv__layout {
		display: grid;
		grid-template-columns: 340px minmax(0, 1fr);
		gap: 48px;
		align-items: start;
	}

	.fpx-rv__side {
		position: sticky;
		top: 96px;
	}

	.fpx-rv-summary__num {
		font-size: 48px;
		line-height: 56px;
	}

	.fpx-rv-sticky {
		display: none;
	}

	.fpx-rv-tools {
		flex-direction: row;
		justify-content: space-between;
		align-items: center;
		flex-wrap: wrap;
	}

	.fpx-rv-thumb {
		width: 96px;
		height: 96px;
	}

	.fpx-rv-review {
		grid-template-columns: 200px minmax(0, 1fr);
		-moz-column-gap: 24px;
		     column-gap: 24px;
		padding: 24px;
	}

	.fpx-rv-review__person,
	.fpx-rv-review__facts {
		grid-column: 1;
	}

	.fpx-rv-review__facts {
		flex-direction: column;
		align-self: start;
		grid-row: 2 / span 4;
	}

	.fpx-rv-review__main,
	.fpx-rv-review__media,
	.fpx-rv-review__helpful,
	.fpx-rv-reply {
		grid-column: 2;
	}

	.fpx-rv-review__main {
		grid-row: 1;
	}

	.fpx-rv-layer {
		align-items: center;
	}

	.fpx-rv-sheet {
		width: 560px;
		max-height: calc(100vh - 112px);
		border-radius: 16px;
		box-shadow: 0 24px 64px rgba(17, 24, 39, 0.28);
		transform: translateY(16px);
		opacity: 0;
		transition:
			transform 260ms ease-out,
			opacity 260ms ease-out;
	}

	.fpx-rv-layer.is-open .fpx-rv-sheet {
		opacity: 1;
	}

	.fpx-rv-sheet__handle {
		display: none;
	}

	.fpx-rv-layer--viewer {
		background: rgba(11, 15, 16, 0.92);
	}

	.fpx-rv-viewer {
		display: grid;
		grid-template-columns: minmax(0, 1fr) 320px;
		grid-template-rows: auto minmax(0, 1fr);
		max-height: 100vh;
	}

	.fpx-rv-viewer__top {
		grid-column: 1 / -1;
	}

	.fpx-rv-viewer__stage img,
	.fpx-rv-viewer__stage video {
		max-height: 80vh;
	}

	.fpx-rv-viewer__caption {
		align-self: center;
	}
}

@media (prefers-reduced-motion: reduce) {
	.fpx-rv *,
	.fpx-rv-layer *,
	.fpx-rv-page * {
		animation: none !important;
		transition: none !important;
	}
}

