.alovesinh-card-review::after,
.elementor-widget-alovesinh-card-review .alovesinh-card::after {
	content: '\201D';
	position: absolute;
	top: var(--alv-sp-1a);
	right: var(--alv-sp-3b);
	font-size: var(--alv-fs-9a);
	font-weight: var(--alv-fw-bold);
	line-height: 1;
	color: var(--alv-quote-mark, var(--alv-c-border));
	pointer-events: none;
}

.alovesinh-card-review-quote {
	position: relative;
	z-index: 1;
	flex: 1;
	font-size: var(--alv-fs-3);
}

.alovesinh-card-review-reviewer {
	position: relative;
	z-index: 1;
	padding-top: var(--alv-sp-2b);
	border-top: var(--alv-bd-hairline) solid var(--alv-card-border);
}

/* A column of its own beside the initial: the name and the note are two lines, and a long name
	in a plain row would push the note past the card edge. */
.alovesinh-card-review-reviewer-text {
	display: flex;
	flex-direction: column;
	gap: var(--alv-sp-1);
	min-width: 0;
}

.alovesinh-card-review-name {
	font-size: var(--alv-fs-3);
	font-weight: var(--alv-fw-bold);
	color: var(--alv-card-title);
}

.alovesinh-card-review-note {
	display: flex;
	align-items: center;
	gap: var(--alv-sp-1);
	font-size: var(--alv-fs-2);
	color: var(--alv-card-text);
}

.alovesinh-card-review-note svg,
.alovesinh-card-review-note i {
	width: var(--alv-sp-2b);
	height: var(--alv-sp-2b);
	font-size: var(--alv-sp-2b);
}

.elementor-widget-alovesinh-card-review .alovesinh-card-review-photo::after {
	content: none;
}

.alovesinh-card-review-photo {
	--alv-star-size: var(--alv-fs-2a);
	--alv-card-shadow: none;
	--alv-card-shadow-hover: none;
	border-radius: var(--alv-r-3);
}

.alovesinh-card-review-photo:hover {
	transform: none;
}

.alovesinh-card-review-image {
	position: relative;
	overflow: hidden;
	flex-shrink: 0;
	aspect-ratio: var(--alv-ratio-card);
}

.alovesinh-card-review-image img {
	transition: transform var(--alv-dur-4) ease;
}

.alovesinh-card-review-image img:hover {
	transform: scale(var(--alv-scale-highlight));
}

.alovesinh-card-review-body {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--alv-sp-2);
	padding: var(--alv-sp-3);
}

.alovesinh-card-review-photo .alovesinh-card-review-quote {
	flex: none;
	font-size: var(--alv-fs-3a);
}

.alovesinh-card-review-photo .alovesinh-card-review-reviewer {
	padding-top: 0;
	border-top: 0;
	font-size: var(--alv-fs-2a);
	line-height: var(--alv-lh-base);
	color: var(--alv-c-text-muted);
}

.alovesinh-card-review-photo .alovesinh-card-review-reviewer-text {
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--alv-sp-0d) var(--alv-sp-1a);
}

.alovesinh-card-review-photo .alovesinh-card-review-name,
.alovesinh-card-review-photo .alovesinh-card-review-note {
	font-size: inherit;
	white-space: nowrap;
}

.alovesinh-card-review-photo .alovesinh-card-review-name {
	font-weight: var(--alv-fw-semibold);
	color: var(--alv-c-ink);
}

.alovesinh-card-review-photo .alovesinh-card-review-note {
	color: inherit;
}

.alovesinh-card-review-tag {
	--alv-pill-text: var(--alv-c-brand-text);
	--alv-pill-bg: var(--alv-c-brand-wash);
	padding: var(--alv-sp-0b) var(--alv-sp-1c);
	font-size: var(--alv-fs-1a);
	font-weight: var(--alv-fw-semibold);
}

/* One step lighter than the shared card ink: six of these run side by side and the darker text
	turns the row into a wall of type the eye slides off. */
.alovesinh-card-icon {
	--alv-card-text: var(--alv-c-text-muted);
	--alv-card-icon-card-position: relative;
	--alv-card-icon-card-display: flex;
	--alv-card-icon-card-direction: column;
	--alv-card-icon-card-columns: none;
	--alv-card-icon-card-align: normal;
	--alv-card-icon-card-gap: var(--alv-sp-2);
	--alv-card-icon-card-height: 100%;
	--alv-card-icon-card-padding: var(--alv-card-pad, var(--alv-sp-4));
	--alv-card-icon-card-border: var(--alv-bd-hairline) solid var(--alv-card-border);
	--alv-card-icon-card-radius: var(--alv-r-4);
	--alv-card-icon-card-background: var(--alv-card-bg);
	--alv-card-icon-card-shadow: var(--alv-card-shadow);
	--alv-card-icon-card-hover-border: var(--alv-card-border-hover);
	--alv-card-icon-card-hover-background: var(--alv-card-bg-hover, var(--alv-card-bg));
	--alv-card-icon-card-hover-shadow: var(--alv-card-shadow-hover);
	--alv-card-icon-card-hover-lift: translateY(calc(-1 * var(--alv-sp-0d)));
	--alv-card-icon-card-icon-row: auto;
	--alv-card-icon-card-title-color: var(--alv-card-title);
	--alv-card-icon-card-title-tracking: var(--alv-tr-tight-1);
	--alv-card-icon-card-text-color: var(--alv-card-text);
	--alv-card-icon-card-text-leading: var(--alv-lh-copy);
	--alv-card-icon-plain-position: static;
	--alv-card-icon-plain-display: grid;
	--alv-card-icon-plain-columns: auto 1fr;
	--alv-card-icon-plain-align: flex-start;
	--alv-card-icon-plain-gap: 0 var(--alv-sp-2);
	--alv-card-icon-plain-height: auto;
	--alv-card-icon-plain-padding: 0;
	--alv-card-icon-plain-border: 0;
	--alv-card-icon-plain-radius: 0;
	--alv-card-icon-plain-background: none;
	--alv-card-icon-plain-shadow: none;
	--alv-card-icon-plain-hover-border: transparent;
	--alv-card-icon-plain-hover-background: none;
	--alv-card-icon-plain-hover-shadow: none;
	--alv-card-icon-plain-hover-lift: none;
	--alv-card-icon-plain-icon-row: span 2;
	--alv-card-icon-plain-title-color: var(--alv-c-ink);
	--alv-card-icon-plain-title-tracking: var(--alv-tr-card-title);
	--alv-card-icon-plain-text-color: var(--alv-c-text-2);
	--alv-card-icon-plain-text-leading: var(--alv-lh-body);
}

/* The line above is written on the card itself, which outranks the dark skin's value however the
	skin is reached, so on a dark block the copy stays at the light ink and all but vanishes. */
.alovesinh-dark .alovesinh-card-icon {
	--alv-card-text: var(--alv-c-text-muted-dark);
}

/* Here, not on the card root: the top and bottom it reads are set on the heading itself, and a variable resolves
	where it is declared. */
.alovesinh-card-icon-title {
	--alv-card-icon-card-title-margin: var(--alv-card-icon-title-top, 0) 0
		var(--alv-card-icon-title-bottom, 0);
	--alv-card-icon-plain-title-margin: 0 0 var(--alv-sp-0d);
}

/* Nothing by default: three of the four blocks that use this card leave the heading on the card's own
	12px rhythm. Written from the widget root: the shared card resets every h3 and h4 margin at 0-1-1. */
.alovesinh-card-icon .alovesinh-card-icon-title {
	margin: var(--alv-card-icon-card-title-margin);
}

.alovesinh-icon-box {
	line-height: normal;
}

/* The tag follows the outline; compact keeps the small h4 look on an h3 where a block draws small titles. */
h3.alovesinh-card-icon-title {
	--alv-card-icon-title-top: var(--alv-sp-2d);
	--alv-card-icon-title-bottom: var(--alv-sp-1a);
}

.alovesinh-card-icon-compact .alovesinh-card-icon-title {
	--alv-card-icon-title-top: 0;
	--alv-card-icon-title-bottom: 0;
	font-size: var(--alv-fs-4);
}

.alovesinh-card-icon-description {
	font-size: var(--alv-fs-3);
}

.alovesinh-card-icon-tone-accent {
	--alv-icon-color: var(--alv-c-accent);
	--alv-icon-bg: var(--alv-c-accent-wash);
}

/* Deep green on a pale wash, not the bright mid-green: on a white card the bright one reads as a
	status light rather than as part of the type it sits beside. The dark block below swaps both. */
.alovesinh-card-icon-tone-success {
	--alv-icon-color: var(--alv-c-green-deep);
	--alv-icon-bg: var(--alv-c-green-pale);
}

.alovesinh-card-icon-tone-neutral {
	--alv-icon-color: var(--alv-c-slate);
	--alv-icon-bg: var(--alv-c-slate-pale);
}

.alovesinh-card-icon-tone-warning {
	--alv-icon-color: var(--alv-c-warning-text);
	--alv-icon-bg: var(--alv-c-warning-pale);
}

/* The plain card is a row of icon and text with no card chrome at all, so the grid is declared
	here rather than inherited: the widget prints no card class in this mode. The icon holds one
	cell across both rows, which keeps the title and its paragraph beside it without a wrapper. */
.alovesinh-card-icon-plain:not(.elementor-widget) {
	display: var(--alv-card-icon-plain-display);
	grid-template-columns: var(--alv-card-icon-plain-columns);
	align-items: var(--alv-card-icon-plain-align);
	gap: var(--alv-card-icon-plain-gap);
}

.alovesinh-card-icon-plain .alovesinh-icon-box {
	grid-row: var(--alv-card-icon-plain-icon-row);
}

.alovesinh-card-icon-plain .alovesinh-card-icon-title {
	margin: var(--alv-card-icon-plain-title-margin);
	letter-spacing: var(--alv-card-icon-plain-title-tracking);
}

/* No frame here either, so the last line is where the block ends: cut to the baseline, as the step
	does, or its line spacing adds to the padding of the block it closes. */
.alovesinh-card-icon-plain > :last-child {
	text-box: trim-end cap alphabetic;
}

.alovesinh-card-tile {
	gap: var(--alv-sp-3);
	height: 100%;
	padding: var(--alv-sp-4a) var(--alv-sp-4);
	border-radius: var(--alv-r-4);
	background: var(--alv-tile-bg);
	transition:
		transform var(--alv-dur-3) ease,
		box-shadow var(--alv-dur-3) ease;
}

.alovesinh-card-tile-title {
	font-size: var(--alv-fs-4);
	letter-spacing: var(--alv-tr-tight-1);
}

.alovesinh-card-tile:hover {
	box-shadow: var(--alv-sh-2);
	transform: translateY(calc(-1 * var(--alv-sp-0d)));
}

.alovesinh-card-tile .alovesinh-icon-box {
	--alv-icon-color: var(--alv-c-ink);
	--alv-icon-bg: var(--alv-c-white);
	box-shadow: var(--alv-sh-1);
}

.alovesinh-card-tile-description {
	flex: 1;
	font-size: var(--alv-fs-3);
	line-height: var(--alv-lh-body);
	color: var(--alv-c-text-2);
}

.alovesinh-card-tile-link {
	display: inline-flex;
	align-items: center;
	gap: var(--alv-sp-1);
	padding-top: var(--alv-sp-2b);
	border-top: var(--alv-bd-hairline) dashed var(--alv-c-ink-rule);
	font-size: var(--alv-fs-3);
	font-weight: var(--alv-fw-bold);
	color: var(--alv-c-brand-deep);
}

.alovesinh-card-tile-link svg {
	transition: transform var(--alv-dur-2) ease;
}

.alovesinh-card-tile-tone-one,
.alovesinh-card-tile-tone-three {
	--alv-tile-bg: var(--alv-c-accent-wash);
}

.alovesinh-card-tile-tone-two,
.alovesinh-card-tile-tone-four {
	--alv-tile-bg: var(--alv-c-brand-wash);
}

.alovesinh-card-tile-tone-five {
	--alv-tile-bg: var(--alv-c-bg-light);
}

.alovesinh-card-tile-tone-six {
	--alv-tile-bg: var(--alv-c-success-wash);
}

.alovesinh-card-step-step-number {
	margin-bottom: var(--alv-sp-1);
	font-size: clamp(
		var(--alv-fs-step-number-min),
		var(--alv-fs-grow-6),
		var(--alv-fs-step-number-max)
	);
	font-weight: var(--alv-fw-extrabold);
	line-height: 1;
	letter-spacing: var(--alv-tr-display);
	color: var(--alv-c-accent-text);
}

.alovesinh-card-step-title {
	font-size: var(--alv-fs-4);
	letter-spacing: var(--alv-tr-tight-1);
}

.alovesinh-card-step-outline .alovesinh-card-step-step-number {
	color: transparent;
	-webkit-text-stroke: var(--alv-bd-thick) var(--alv-c-accent-text);
}

.alovesinh-card-step-description {
	width: min(100%, var(--alv-w-step-text));
	font-size: var(--alv-fs-3);
	line-height: var(--alv-lh-body);
	color: var(--alv-c-text-2);
}

/* A step has no frame, so its last line is where the block it closes ends: cut to the baseline, or the
	line spacing under it adds to the block's padding below. */
.elementor-widget-alovesinh-card-step .alovesinh-column > :last-child {
	text-box: trim-end cap alphabetic;
}

.alovesinh-card-step-link {
	margin-top: var(--alv-sp-1);
	font-size: var(--alv-fs-3);
	font-weight: var(--alv-fw-bold);
	color: var(--alv-c-brand-text);
}

.alovesinh-card-step-link:hover {
	text-decoration: underline;
	text-underline-offset: var(--alv-sp-0c);
}

.alovesinh-card-guarantee {
	--alv-icon-color: var(--alv-c-brand-deep);
	--alv-icon-bg: var(--alv-scene-guarantee-icon);
}

.alovesinh-card-guarantee .alovesinh-icon-box {
	margin-bottom: var(--alv-sp-3);
}

.alovesinh-card-guarantee-label {
	display: inline-flex;
	align-items: center;
	gap: var(--alv-sp-1);
	margin-bottom: var(--alv-sp-2);
	font-size: var(--alv-fs-1);
	font-weight: var(--alv-fw-bold);
	letter-spacing: var(--alv-tr-label);
	color: var(--alv-c-ink);
}

.alovesinh-card-guarantee-label::before,
.alovesinh-card-combo-label::before {
	content: '';
	flex-shrink: 0;
	width: var(--alv-sp-1);
	height: var(--alv-sp-1);
	border-radius: var(--alv-r-circle);
	background: var(--alv-c-accent);
}

/* From the widget root, past the shared card's 0-1-1 reset of every h4 margin. 24px is the source
	design's own step - at the h4 default of 18px the promise reads as a label. */
.alovesinh-card-guarantee .alovesinh-card-guarantee-title {
	margin: 0 0 var(--alv-sp-1);
	font-size: var(--alv-fs-5);
	font-weight: var(--alv-fw-extrabold);
}

.alovesinh-card-guarantee-summary {
	font-size: var(--alv-fs-3);
	font-weight: var(--alv-fw-bold);
}

.alovesinh-card-guarantee-description {
	flex: 1;
	font-size: var(--alv-fs-3);
}

.alovesinh-card-guarantee-note {
	padding-top: var(--alv-sp-2b);
	border-top: var(--alv-bd-hairline) solid var(--alv-card-border);
	font-size: var(--alv-fs-2);
	font-weight: var(--alv-fw-semibold);
	color: var(--alv-c-text-muted);
}

.alovesinh-card-guarantee-highlight {
	--alv-card-bg: var(--alv-scene-guarantee-highlight);
	--alv-card-border: transparent;
	--alv-card-border-hover: transparent;
	--alv-card-title: var(--alv-c-white);
	--alv-card-text: var(--alv-c-on-dark);
	--alv-icon-color: var(--alv-c-white);
	--alv-icon-bg: var(--alv-c-glass-fill);
	color: var(--alv-c-white);

	/* Below the tablet-extra breakpoint the cards stack, and a card left at --alv-scale-highlight
		overlaps the one under it while its own edges run past the gutter. */
	transform: none;
}

.alovesinh-card-guarantee-highlight:hover {
	transform: translateY(calc(-1 * var(--alv-sp-0d)));
}

/* Accent orange has nothing to sit on once the card goes deep teal, so the two accented lines
	step up to a light apricot. */
.alovesinh-card-guarantee-highlight .alovesinh-card-guarantee-label,
.alovesinh-card-guarantee-highlight .alovesinh-card-guarantee-summary {
	color: var(--alv-c-orange-soft);
}

.alovesinh-card-guarantee-highlight .alovesinh-card-guarantee-note {
	border-top-color: var(--alv-c-glass-border);
	color: var(--alv-c-on-dark);
}

.alovesinh-card-guarantee-highlight-label {
	position: absolute;
	top: calc(-1 * var(--alv-sp-2));
	left: var(--alv-pos-center);
	padding: var(--alv-sp-0e) var(--alv-sp-2c);
	border-radius: var(--alv-r-pill);
	font-size: var(--alv-fs-1);
	font-weight: var(--alv-fw-extrabold);
	letter-spacing: var(--alv-tr-label-sm);
	white-space: nowrap;
	color: var(--alv-c-ink);
	background: var(--alv-c-accent-wash);
	box-shadow: var(--alv-sh-lift);
	transform: translateX(calc(-1 * var(--alv-pos-center)));
}

.alovesinh-card-person {
	padding-bottom: var(--alv-sp-3a);
	text-align: center;
}

.alovesinh-card-person-image {
	position: relative;
	overflow: hidden;
	aspect-ratio: 1;
	background: var(--alv-scene-person);
}

.alovesinh-card-person-image::after {
	content: '';
	position: absolute;
	inset: 0;
	background: var(--alv-scene-person-glint);
}

/* From the widget root, past the shared card's 0-1-1 reset of every h3 and h4 margin, or the name
	presses against the photograph above it. */
.alovesinh-card-person .alovesinh-card-person-name {
	margin: var(--alv-sp-2d) 0 var(--alv-sp-0d);
	font-size: var(--alv-fs-4);
}

.alovesinh-card-person-job-title {
	margin-bottom: var(--alv-sp-2);
	font-size: var(--alv-fs-2);
	font-weight: var(--alv-fw-semibold);
	letter-spacing: var(--alv-tr-wide-1);
	text-transform: uppercase;
	color: var(--alv-c-brand-deep);
}

.alovesinh-card-person-stat {
	justify-content: center;
	font-size: var(--alv-fs-2);
	color: var(--alv-c-text-muted);
}

.alovesinh-card-combo-image {
	position: relative;
	overflow: hidden;
	aspect-ratio: var(--alv-ratio-classic);
	color: var(--alv-c-brand-deep);
	background: var(--alv-scene-warm);
}

.alovesinh-card-combo-image::after {
	content: '';
	position: absolute;
	inset: 0;
	background: var(--alv-scrim-combo);
	pointer-events: none;
}

.alovesinh-card-combo-label {
	position: absolute;
	top: var(--alv-sp-2);
	left: var(--alv-sp-2);
	letter-spacing: var(--alv-tr-wide-1);
	color: var(--alv-c-ink);
	background: var(--alv-c-white);
}

/* The parts space themselves with their own margins, as the source design does, so the gap the
	shared column would add lands on top of every one of them. */
.alovesinh-card-combo-body {
	--alv-column-gap: 0;

	flex: 1;
	padding: var(--alv-sp-3);
}

/* Written from the widget root, not from the part alone: the shared card resets the margin and
	the colour of every h4 and p it holds, and that reset is one step more specific. */
.alovesinh-card-combo .alovesinh-card-combo-title {
	margin-bottom: var(--alv-sp-1);
	font-size: var(--alv-fs-4);
}

.alovesinh-card-combo .alovesinh-card-combo-description {
	flex: 1;
	margin-bottom: var(--alv-sp-2);
	font-size: var(--alv-fs-2);
	color: var(--alv-c-text-muted);
}

/* The card's paragraph leading is set for running copy; the price is a paragraph only because it
	is one line of text, and at 24px the looser value adds a visible step under the figure, so the
	price takes the body rung instead. */
.alovesinh-card-combo .alovesinh-card-combo-price {
	display: flex;
	align-items: baseline;
	gap: var(--alv-sp-1);
	margin: 0 0 var(--alv-sp-2);
	font-size: var(--alv-fs-5);
	line-height: var(--alv-lh-body);
	font-weight: var(--alv-fw-extrabold);
	letter-spacing: var(--alv-tr-tight-1);
	color: var(--alv-c-brand-deep);
}

/* The weight is stated, not left out: the row above sets extrabold for the figure, and an unset
	weight here would hand the unit that same weight instead of the body's plain text. */
.alovesinh-card-combo .alovesinh-price-unit {
	font-size: var(--alv-fs-2);
	font-weight: var(--alv-fw-regular);
	letter-spacing: 0;
	color: var(--alv-c-text-muted);
}

.alovesinh-card-combo-button {
	--alv-btn-icon: var(--alv-fs-3a);
	justify-content: center;
	width: 100%;
	padding: var(--alv-sp-1d);
}

/* flex-shrink is the load-bearing part: without it the body squeezes the frame and the ratio
	stops holding, which the source design warns about in its own comment. */
.alovesinh-card-post-image {
	position: relative;
	overflow: hidden;
	flex-shrink: 0;
	aspect-ratio: var(--alv-card-post-ratio, var(--alv-ratio-card));
	background: var(--alv-c-bg-light);
}

.alovesinh-card-post-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: var(--alv-sp-2);
	padding: var(--alv-sp-3);
}

.alovesinh-card-post-category {
	width: fit-content;
	color: var(--alv-c-brand-deep);
	background: var(--alv-c-brand-wash);
}

.alovesinh-card-post-title {
	font-size: var(--alv-fs-4a);
	line-height: var(--alv-lh-snug);
}

/* The whole card is the target, not the headline alone: the reader aims at the picture as often
	as at the words. */
.alovesinh-card-post:hover .alovesinh-card-post-title {
	color: var(--alv-c-brand-deep);
}

.alovesinh-card-post-link {
	color: inherit;
}

.alovesinh-card-post-meta {
	margin-top: auto;
	font-size: var(--alv-fs-2);
	color: var(--alv-c-text-muted);
}

/* The rule belongs to the by-line: a card that carries only a date leaves the line unruled. */
.alovesinh-card-post-meta-ruled {
	padding-top: var(--alv-sp-2);
	border-top: var(--alv-bd-hairline) solid var(--alv-c-border);
}

.alovesinh-card-post-meta .alovesinh-initial {
	--alv-initial-size: var(--alv-sp-4);
	font-size: var(--alv-fs-2);
}

.alovesinh-card-cert {
	align-items: flex-start;
	height: 100%;
	transition:
		border-color var(--alv-dur-2) ease,
		transform var(--alv-dur-2) ease;
}

.alovesinh-card-cert:hover {
	border-color: var(--alv-c-brand);
	transform: translateY(calc(-1 * var(--alv-sp-0b)));
}

.alovesinh-card-cert .alovesinh-icon-box {
	--alv-icon-color: var(--alv-c-brand-deep);
	--alv-icon-bg: var(--alv-scene-cert-icon);
}

/* Sized to its content instead of growing across the row. */
.alovesinh-card-cert-content {
	flex-grow: 0;
	width: auto;
}

.alovesinh-card-cert-title {
	margin-bottom: var(--alv-sp-0c);
}

.alovesinh-card-cert-description {
	font-size: var(--alv-fs-2);
	line-height: var(--alv-lh-base);
	color: var(--alv-c-text-muted);
}

.alovesinh-card-service {
	--alv-service-color: var(--alv-c-brand);
	--alv-service-bg: var(--alv-c-brand-wash);
	--alv-service-ink: var(--alv-c-brand-deep);
	--alv-service-strong: var(--alv-c-brand-strong);
	position: relative;
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--alv-sp-3);
	overflow: hidden;
	padding: var(--alv-sp-4);
	border: var(--alv-bd-hairline) solid var(--alv-c-border);
	border-radius: var(--alv-r-4);
	background: var(--alv-c-white);
	transition:
		transform var(--alv-dur-3) ease,
		border-color var(--alv-dur-3) ease,
		box-shadow var(--alv-dur-3) ease;
}

/* The stripe grows on hover; scaling a 4px bar from zero avoids repainting the card's own border. */
.alovesinh-card-service::before {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: var(--alv-sp-0d);
	background: var(--alv-service-color);
	transform: scaleY(0);
	transform-origin: top;
	transition: transform var(--alv-dur-4) ease;
}

.alovesinh-card-service:hover {
	border-color: var(--alv-service-color);
	box-shadow: var(--alv-sh-2);
	transform: translateY(calc(-1 * var(--alv-sp-0c)));
}

.alovesinh-card-service:hover::before {
	transform: scaleY(1);
}

.alovesinh-card-service-tone-deep {
	--alv-service-color: var(--alv-c-brand-deep);
	--alv-service-strong: var(--alv-c-brand-deep);
}

.alovesinh-card-service-tone-accent {
	--alv-service-color: var(--alv-c-accent);
	--alv-service-bg: var(--alv-c-accent-wash);
	--alv-service-ink: var(--alv-c-ink);
	--alv-service-strong: var(--alv-c-accent-strong);
}

.alovesinh-card-service-visual-cyan-white,
.alovesinh-card-service-visual-teal-white {
	--alv-service-visual: var(--alv-scene-white);
}

.alovesinh-card-service-visual-cyan-warm,
.alovesinh-card-service-visual-teal-warm,
.alovesinh-card-service-visual-mist-warm {
	--alv-service-visual: var(--alv-scene-warm);
}

.alovesinh-card-service-visual-peach-white {
	--alv-service-visual: var(--alv-scene-peach);
}

.alovesinh-card-service-visual-peach-warm {
	--alv-service-visual: var(--alv-scene-peach-warm);
}

.alovesinh-card-service-content {
	min-width: 0;
}

/* Wider and looser than the badge the rest of the page uses: this one carries a service name in
	capitals, which needs more room around it than a two-word eyebrow. */
.alovesinh-card-service-label {
	--alv-badge-text: var(--alv-service-ink);
	--alv-badge-bg: var(--alv-service-bg);

	gap: var(--alv-sp-2);
	margin-bottom: var(--alv-sp-2);
	padding: var(--alv-sp-1) var(--alv-sp-2b);
	letter-spacing: var(--alv-tr-label-lg);
}

.alovesinh-card-service-title {
	margin: 0 0 var(--alv-sp-1);
	font-size: clamp(var(--alv-fs-5), var(--alv-fs-grow-1), var(--alv-fs-6a));
	font-weight: var(--alv-fw-extrabold);
	letter-spacing: var(--alv-tr-tight-1);
	color: var(--alv-c-ink);
}

.alovesinh-card-service-summary {
	margin: 0 0 var(--alv-sp-3);
	font-size: var(--alv-fs-3);
	font-style: italic;
	font-weight: var(--alv-fw-semibold);
	color: var(--alv-service-ink);
}

.alovesinh-card-service-description {
	margin: 0 0 var(--alv-sp-3);
	font-size: var(--alv-fs-3);
	line-height: var(--alv-lh-relaxed);
	color: var(--alv-c-text-2);
}

.alovesinh-card-service-list {
	display: grid;
	gap: var(--alv-sp-2);
	margin: 0 0 var(--alv-sp-3);
	padding: 0;
	list-style: none;
}

.alovesinh-card-service-list li {
	position: relative;
	padding-left: var(--alv-sp-3d);
	font-size: var(--alv-fs-3);
	line-height: var(--alv-lh-copy);
	color: var(--alv-c-text-2);
}

.alovesinh-card-service-list li strong {
	margin-right: var(--alv-sp-1a);
	font-weight: var(--alv-fw-bold);
	color: var(--alv-c-ink);
}

.alovesinh-card-guarantee-highlight .alovesinh-card-guarantee-description strong {
	color: var(--alv-c-white);
}

.alovesinh-card-service-description em {
	padding: 0 var(--alv-sp-0b);
	font-style: normal;
	font-weight: var(--alv-fw-bold);
	color: var(--alv-c-ink);
	background: linear-gradient(
		to bottom,
		transparent var(--alv-stop-marker),
		var(--alv-service-bg) var(--alv-stop-marker)
	);
}

.alovesinh-card-service-actions {
	flex-direction: column;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--alv-sp-2);
	padding-top: var(--alv-sp-3);
	border-top: var(--alv-bd-hairline) dashed var(--alv-c-border);
}

.alovesinh-card-service-price-group {
	display: flex;
	align-items: baseline;
	gap: var(--alv-sp-1);
}

.alovesinh-card-service-price-label {
	font-size: var(--alv-fs-1);
	font-weight: var(--alv-fw-semibold);
	letter-spacing: var(--alv-tr-label-sm);
	text-transform: uppercase;
	color: var(--alv-c-text-muted);
}

.alovesinh-card-service .alovesinh-price-price {
	font-size: var(--alv-fs-5);
	font-weight: var(--alv-fw-extrabold);
	letter-spacing: var(--alv-tr-tight-2);
	color: var(--alv-c-ink);
}

.alovesinh-card-service .alovesinh-price-unit {
	font-size: var(--alv-fs-2);
	font-weight: var(--alv-fw-semibold);
	letter-spacing: 0;
	color: var(--alv-c-text-muted);
}

/* The button takes the row's own colour rather than the shared accent: seven rows sit one under
	the other and a single accent on all of them loses the tone each row is built around. */
.alovesinh-card-service .alovesinh-card-service-button {
	color: var(--alv-c-white);
	background: var(--alv-service-strong);
}

.alovesinh-card-service .alovesinh-card-service-button:hover {
	transform: translateX(var(--alv-sp-0b));
}

/* The arrow reads as punctuation after the words rather than as a button icon, so it keeps the
	measure the shared drawing gives it instead of being stretched to the button's icon size. */
.alovesinh-card-service-button svg {
	width: auto;
	height: auto;
}

.alovesinh-card-service-image {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;

	/* The picture stops reserving 380px of height once it is no longer beside the text, or a short
		row leaves a band of empty gradient under the photograph. */
	aspect-ratio: var(--alv-ratio-card);
	min-height: auto;
	border-radius: var(--alv-r-3);
	background: var(--alv-service-visual);
	box-shadow: inset 0 0 0 var(--alv-sp-0a) var(--alv-c-ink-ring);
}

/* One order swap serves the mirrored rows instead of a second rule set.
	The order goes on both children, not a negative order on the image alone, so the pair keeps its
	intended sequence when the row collapses to a single column. */
.alovesinh-card-service-reversed .alovesinh-card-service-content {
	order: var(--alv-order-after);
}

.alovesinh-card-service-reversed .alovesinh-card-service-image {
	order: 0;
}

/* A scrim, not a tint on the photograph: the floating label sits at the bottom edge and needs a
	dark footing whatever picture the buyer uploads. */
.alovesinh-card-service-image::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 1;
	background: var(--alv-scrim-service);
	pointer-events: none;
}

.alovesinh-card-service-image-label {
	position: absolute;
	bottom: var(--alv-sp-2d);
	left: var(--alv-sp-2d);
	z-index: var(--alv-z-lift);
	display: flex;
	align-items: center;
	gap: var(--alv-sp-1);
	padding: var(--alv-sp-1) var(--alv-sp-2);
	border-radius: var(--alv-r-pill);
	font-size: var(--alv-fs-2);
	font-weight: var(--alv-fw-bold);
	color: var(--alv-c-ink);
	background: var(--alv-c-white);
	box-shadow: var(--alv-sh-1);
}

.alovesinh-card-service-image-label::before {
	content: '';
	width: var(--alv-w-label-dot);
	height: var(--alv-w-label-dot);
	border-radius: var(--alv-r-circle);
	background: var(--alv-service-color);
}

/* Fixed rows, not the card's own flex: the description takes the slack so the chip row and the
	foot line sit on the same baseline across the row however long the wording runs. */
.alovesinh-card-persona {
	--alv-icon-color: var(--alv-persona-color);
	--alv-icon-bg: var(--alv-persona-bg);

	display: grid;
	grid-template-rows: auto auto 1fr auto auto;
	overflow: hidden;
	min-height: auto;
	text-align: left;
}

/* Only the picker answers a press, so only its cards promise one to the pointer. */
.alovesinh-persona-picker .alovesinh-card-persona {
	cursor: pointer;
}

.alovesinh-card-persona-brand {
	--alv-persona-color: var(--alv-c-brand);
	--alv-persona-bg: var(--alv-c-brand-wash);
	--alv-persona-ink: var(--alv-c-brand-deep);
	--alv-persona-glow: var(--alv-c-brand-glow);
}

.alovesinh-card-persona-accent {
	--alv-persona-color: var(--alv-c-accent);
	--alv-persona-bg: var(--alv-c-accent-wash);
	--alv-persona-ink: var(--alv-c-ink);
	--alv-persona-glow: var(--alv-c-accent-glow);
}

.alovesinh-card-persona-deep {
	--alv-persona-color: var(--alv-c-brand-deep);
	--alv-persona-bg: var(--alv-c-brand-wash);
	--alv-persona-ink: var(--alv-c-brand-deep);
	--alv-persona-glow: var(--alv-c-brand-deep-glow);
}

.alovesinh-card-persona::before {
	content: '';
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: var(--alv-sp-0c);
	background: var(--alv-persona-color);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform var(--alv-dur-4) ease;
}

.alovesinh-card-persona::after {
	content: '';
	position: absolute;
	inset: var(--alv-inset-persona-glow);
	width: var(--alv-w-corner-glow);
	aspect-ratio: 1;
	border-radius: var(--alv-r-circle);
	background: radial-gradient(
		circle,
		var(--alv-persona-glow) 0%,
		transparent var(--alv-stop-glow-fade)
	);
	opacity: 0;
	transition: opacity var(--alv-dur-4) ease;
	pointer-events: none;
}

.alovesinh-persona-picker .alovesinh-card-persona:hover,
.alovesinh-card-persona[aria-pressed='true'] {
	--alv-persona-shift: var(--alv-sp-0c);

	border-color: var(--alv-persona-color);
	box-shadow: var(--alv-sh-2);
	transform: translateY(calc(-1 * var(--alv-sp-0d)));
}

.alovesinh-persona-picker .alovesinh-card-persona:hover::before,
.alovesinh-card-persona[aria-pressed='true']::before {
	transform: scaleX(1);
}

.alovesinh-persona-picker .alovesinh-card-persona:hover::after,
.alovesinh-card-persona[aria-pressed='true']::after {
	opacity: 1;
}

/* Every part of the card sits above the glow, which is the card's own last child and would
	otherwise wash the wording out as it fades in. */
.alovesinh-card-persona-icon,
.alovesinh-card-persona-title,
.alovesinh-card-persona-description,
.alovesinh-card-persona-chips,
.alovesinh-card-persona-cta {
	position: relative;
	z-index: 1;
}

/* Two lines held open from the start: a one-line title next to a two-line one would drop the
	rows below it out of step across the grid. */
.alovesinh-card-persona .alovesinh-card-persona-title {
	min-height: calc(var(--alv-lh-title) * var(--alv-lines-persona-title) * 1em);
	font-size: var(--alv-fs-4);
	font-weight: var(--alv-fw-extrabold);
	line-height: var(--alv-lh-title);
	letter-spacing: var(--alv-tr-tight-1);
	color: var(--alv-card-title);
}

.alovesinh-card-persona .alovesinh-card-persona-description {
	font-size: var(--alv-fs-3);
	line-height: var(--alv-lh-body);
	color: var(--alv-c-text-2);
}

.alovesinh-card-persona-chips {
	display: flex;
	flex-wrap: wrap;
	align-content: flex-start;
	gap: var(--alv-sp-1);
	min-height: var(--alv-sp-5c);
}

.alovesinh-card-persona-chip {
	padding: var(--alv-sp-0d) var(--alv-sp-1b);
	border-radius: var(--alv-r-1);
	font-size: var(--alv-fs-1);
	font-weight: var(--alv-fw-semibold);
	letter-spacing: var(--alv-tr-label-xs);
	color: var(--alv-persona-ink);
	background: var(--alv-persona-bg);
}

.alovesinh-card-persona-cta {
	display: flex;
	align-items: center;
	gap: var(--alv-sp-1);
	padding-top: var(--alv-sp-1a);
	border-top: var(--alv-bd-hairline) dashed var(--alv-c-border);
	font-size: var(--alv-fs-2);
	font-weight: var(--alv-fw-bold);
	color: var(--alv-persona-ink);
}

.alovesinh-card-persona-cta-arrow {
	color: var(--alv-persona-color);
	transform: translateX(var(--alv-persona-shift, 0));
	transition: transform var(--alv-dur-2) ease;
}

.alovesinh-post-grid-compact {
	--alv-card-post-ratio: var(--alv-ratio-cover);
}

/* The source design parts a section head from the steps by 48. The steps' container adds its own
	gap on top, so the head gives that same gap back. */
.elementor-widget-alovesinh-section-head:has(+ .elementor-widget-alovesinh-card-process)
	.alovesinh-section-head {
	margin-bottom: max(0px, calc(var(--alv-sp-5) - var(--alv-quy-trinh-buoc-gap)));
}

/* Held to the grid measure although each step is a widget of its own rather than a cell of a grid:
	left at the section's full width the picture gains 6px of column, and a 4:3 frame turns that
	into 4px of height on every step. */
.alovesinh-card-process {
	--alv-card-pad: var(--alv-sp-2d);
	width: min(100%, var(--alv-w-grid));
	margin-inline: auto;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--alv-sp-3b);
}

/* The drawing stops being half the card and becomes a banner over the text, so it is capped
	rather than left to run the full width of a stacked card. */
.alovesinh-card-process-frame {
	position: relative;
	overflow: hidden;
	width: min(100%, var(--alv-w-process-frame));
	aspect-ratio: var(--alv-ratio-process-banner);
	border-radius: var(--alv-r-3);
	background: var(--alv-process-frame, var(--alv-scene-warm));
}

.alovesinh-card-process-reversed .alovesinh-card-process-frame {
	order: 0;
}

.alovesinh-card-process-frame svg {
	display: block;
	width: 100%;
	height: 100%;
}

.alovesinh-card-service-list li svg {
	position: absolute;
	top: var(--alv-sp-0e);
	left: 0;
	width: var(--alv-sp-2d);
	height: var(--alv-sp-2d);
	padding: var(--alv-sp-0d);
	border-radius: var(--alv-r-circle);
	color: var(--alv-service-color);
	background: var(--alv-service-bg);
}

/* Nearly opaque, not a tint: the label sits over whatever the illustration puts under it, and a
	see-through chip loses its wording on the pale part of the drawing. */
.alovesinh-card-process-frame-label {
	position: absolute;
	right: var(--alv-sp-2b);
	bottom: var(--alv-sp-2b);
	padding: var(--alv-sp-0e) var(--alv-sp-2);
	border-radius: var(--alv-r-pill);
	font-size: var(--alv-fs-1);
	font-weight: var(--alv-fw-bold);
	letter-spacing: var(--alv-tr-label-sm);
	text-transform: uppercase;
	color: var(--alv-c-brand-deep);
	background: var(--alv-c-glass-frost);
	box-shadow: var(--alv-sh-1);
}

.alovesinh-card-process-body {
	min-width: 0;
}

.alovesinh-card-process-head {
	gap: var(--alv-sp-2);
	margin-bottom: var(--alv-sp-2);
}

.alovesinh-card-process-number {
	flex-shrink: 0;
	width: var(--alv-sp-4d);
	height: var(--alv-sp-4d);
	border-radius: var(--alv-r-3);
	font-size: var(--alv-fs-cta);
	font-weight: var(--alv-fw-extrabold);
	letter-spacing: var(--alv-tr-tight-2);
	color: var(--alv-c-white);
	background: var(--alv-scene-number-badge);
	box-shadow: var(--alv-sh-lift);
}

.alovesinh-card-process-title {
	font-size: clamp(var(--alv-fs-cta), var(--alv-fs-grow-0), var(--alv-fs-5a));
	font-weight: var(--alv-fw-extrabold);
	letter-spacing: var(--alv-tr-tight-1);
}

/* From the widget root, past the shared card's 0-1-1 margin, line height and colour of every p. */
.alovesinh-card-process .alovesinh-card-process-summary {
	margin: 0 0 var(--alv-sp-2c);
	font-size: var(--alv-fs-3);
	line-height: var(--alv-lh-loose);
	color: var(--alv-c-text-2);
}

.alovesinh-card-process-work-label {
	display: block;
	margin-bottom: var(--alv-sp-1c);
	font-size: var(--alv-fs-1);
	font-weight: var(--alv-fw-bold);
	letter-spacing: var(--alv-tr-label-lg);
	text-transform: uppercase;
	color: var(--alv-c-text-muted);
}

.alovesinh-card-process-list {
	display: flex;
	flex-direction: column;
	gap: var(--alv-sp-1c);
	margin: 0;
	padding: 0;
	list-style: none;
}

.alovesinh-card-process-list li {
	display: flex;
	align-items: flex-start;
	gap: var(--alv-sp-1c);
	font-size: var(--alv-fs-3);
	line-height: var(--alv-lh-body);
	color: var(--alv-c-text-2);
}

.alovesinh-card-process-list li svg {
	flex-shrink: 0;
	width: var(--alv-sp-3);
	height: var(--alv-sp-3);
	margin-top: var(--alv-sp-0a);
	padding: var(--alv-sp-0d);
	border-radius: var(--alv-r-circle);
	color: var(--alv-c-brand-deep);
	background: var(--alv-c-brand-tint);
}

.alovesinh-card-tile-link:hover svg {
	transform: translateX(var(--alv-sp-1));
}

.alovesinh-dark .alovesinh-card-icon .alovesinh-icon-box {
	--alv-icon-color: var(--alv-c-brand-light);
	--alv-icon-bg: var(--alv-c-brand-haze);
}

.alovesinh-dark .alovesinh-card-icon-tone-accent .alovesinh-icon-box {
	--alv-icon-color: var(--alv-c-orange-soft);
	--alv-icon-bg: var(--alv-c-accent-haze);
}

.alovesinh-dark .alovesinh-card-icon-tone-success .alovesinh-icon-box {
	--alv-icon-color: var(--alv-c-success-light);
	--alv-icon-bg: var(--alv-c-success-haze);
}

.alovesinh-dark .alovesinh-card-icon-description {
	line-height: var(--alv-lh-loose);
}

.alovesinh-dark .alovesinh-card-review,
.alovesinh-dark .elementor-widget-alovesinh-card-review .alovesinh-card {
	--alv-quote-mark: var(--alv-c-glass-faint);
}

/* The rule above the author is a hair lighter than the card's own edge: on a dark card the two
	would otherwise merge and the quote would run straight into the name. */
.alovesinh-dark .alovesinh-card-review-reviewer {
	border-top-color: var(--alv-c-glass-rule);
}

.alovesinh-dark .alovesinh-card-service {
	--alv-service-ink: var(--alv-c-brand-light);
	--alv-service-bg: var(--alv-c-brand-mist);

	border-color: var(--alv-card-border);
	background: var(--alv-card-bg);
}

.alovesinh-dark .alovesinh-card-service-title {
	color: var(--alv-c-white);
}

.alovesinh-dark .alovesinh-card-service-tone-accent {
	--alv-service-ink: var(--alv-c-orange-soft);
	--alv-service-bg: var(--alv-c-accent-mist);
}

.alovesinh-ly-do-tin-tuong .alovesinh-card-icon-title {
	line-height: var(--alv-lh-tight);
}

.alovesinh-ly-do-tin-tuong .alovesinh-card-icon-description strong {
	font-weight: var(--alv-fw-bold);
	color: var(--alv-c-on-dark);
}

.alovesinh-loi-hua-alo-ve-sinh .alovesinh-card-icon-description {
	line-height: var(--alv-lh-body);
	color: var(--alv-c-text-2);
}

.alovesinh-bao-hanh-vang .alovesinh-card-icon-description {
	line-height: var(--alv-lh-body);
}

.alovesinh-xem-tan-mat-ba-buoc {
	--alv-grid-cols-md: 3;
	--alv-grid-cols: 3;
	--alv-grid-gap-md: var(--alv-sp-4);
	--alv-grid-gap: var(--alv-sp-4);
	--alv-grid-width: 100%;
}

.alovesinh-xem-tan-mat-ba-buoc > .elementor-widget-alovesinh-card-step {
	padding-top: var(--alv-sp-3);
	border-top: var(--alv-bd-hairline) solid var(--alv-c-ink-rule);
}

.alovesinh-xem-tan-mat-ba-buoc .alovesinh-column {
	--alv-column-gap: var(--alv-sp-1a);
}

.alovesinh-xem-tan-mat-ba-buoc .alovesinh-card-step-step-number {
	margin-bottom: 0;
	font-size: var(--alv-fs-2a);
	font-weight: var(--alv-fw-bold);
	font-variant-numeric: tabular-nums;
	line-height: inherit;
	letter-spacing: var(--alv-tr-label);
	color: var(--alv-c-brand-text);
}

.alovesinh-xem-tan-mat-ba-buoc .alovesinh-card-step-title {
	line-height: var(--alv-lh-title);
}

.alovesinh-xem-tan-mat-ba-buoc .alovesinh-card-step-description {
	width: auto;
	line-height: var(--alv-lh-copy);
}

.alovesinh-niem-vui-sau-giat-bento {
	--alv-grid-cols: 2;
	--alv-grid-width: 100%;
}

.alovesinh-niem-vui-sau-giat-bento
	> .elementor-widget-alovesinh-card-review
	> .elementor-widget-container {
	height: 100%;
}

@media (min-width: 561px) {
	.alovesinh-card-persona {
		min-height: var(--alv-h-persona-card);
	}

	.alovesinh-card-process {
		--alv-card-pad: var(--alv-sp-4);
	}

	.alovesinh-card-process-head {
		gap: var(--alv-sp-2b);
	}

	.alovesinh-card-process-number {
		width: var(--alv-w-process-number);
		height: var(--alv-w-process-number);
		font-size: var(--alv-fs-4a);
	}

	.alovesinh-card-process .alovesinh-card-process-summary {
		margin-bottom: var(--alv-sp-2d);
		font-size: inherit;
	}

	.alovesinh-xem-tan-mat-ba-buoc {
		--alv-grid-gap-md: var(--alv-sp-3);
	}

	.alovesinh-niem-vui-sau-giat-o-lon {
		grid-column: 1 / -1;
	}
}

@media (min-width: 821px) {
	/* The tablet breakpoint, not the shared tablet-extra one: the row holds a picture of
		--alv-h-service-image beside a paragraph, a feature list and a price line, and it is that
		combination - not the page frame - that runs out of room first. */
	.alovesinh-card-service {
		grid-template-columns: 1fr 1fr;
		gap: var(--alv-sp-5);
		padding: var(--alv-sp-5);
	}

	.alovesinh-card-service-image {
		aspect-ratio: auto;
		min-height: var(--alv-h-service-image);
	}

	.alovesinh-card-service-reversed .alovesinh-card-service-image {
		order: 1;
	}

	.alovesinh-card-service-actions {
		flex-direction: row;
		align-items: var(--alv-row-align, center);
		gap: var(--alv-sp-3);
	}
}

@media (min-width: 981px) {
	.alovesinh-card-guarantee-highlight {
		transform: scale(var(--alv-scale-highlight));
	}

	.alovesinh-card-guarantee-highlight:hover {
		transform: scale(var(--alv-scale-highlight)) translateY(calc(-1 * var(--alv-sp-0d)));
	}

	.alovesinh-card-process {
		grid-template-columns: 1fr 1fr;
		gap: var(--alv-sp-5);
	}

	.alovesinh-card-process-frame {
		width: auto;
		aspect-ratio: var(--alv-ratio-classic);
	}

	.alovesinh-card-process-reversed .alovesinh-card-process-frame {
		order: var(--alv-order-after);
	}

	.alovesinh-xem-tan-mat-ba-buoc .alovesinh-card-step-title {
		font-size: var(--alv-fs-4a);
	}

	.alovesinh-niem-vui-sau-giat-bento {
		grid-auto-rows: minmax(0, 1fr);
		aspect-ratio: var(--alv-ratio-card);
	}

	.alovesinh-niem-vui-sau-giat-o-lon {
		grid-column: 1;
		grid-row: span 2;
	}

	.alovesinh-niem-vui-sau-giat-bento .alovesinh-card-review-photo {
		--alv-card-bg: var(--alv-c-ink);
		justify-content: flex-end;
		border: 0;
	}

	.alovesinh-niem-vui-sau-giat-bento .alovesinh-card-review-image {
		position: absolute;
		inset: 0;
		aspect-ratio: auto;
	}

	.alovesinh-niem-vui-sau-giat-bento .alovesinh-card-review-body {
		position: relative;
		padding: var(--alv-sp-5) var(--alv-sp-4) var(--alv-sp-4);
		background: var(--alv-scrim-caption);
	}

	.alovesinh-niem-vui-sau-giat-bento .alovesinh-card-review-quote {
		font-size: var(--alv-fs-3);
		line-height: var(--alv-lh-body);
		color: var(--alv-c-white);
	}

	.alovesinh-niem-vui-sau-giat-bento .alovesinh-card-review-reviewer {
		color: var(--alv-c-on-dark);
	}

	.alovesinh-niem-vui-sau-giat-bento .alovesinh-card-review-name {
		color: var(--alv-c-white);
	}

	.alovesinh-niem-vui-sau-giat-bento .alovesinh-card-review-tag {
		--alv-pill-text: var(--alv-c-white);
		--alv-pill-bg: var(--alv-c-glass-fill);
	}

	.alovesinh-niem-vui-sau-giat-o-lon .alovesinh-card-review-body {
		gap: var(--alv-sp-3);
		padding: var(--alv-sp-6) var(--alv-sp-5) var(--alv-sp-5);
	}

	.alovesinh-niem-vui-sau-giat-o-lon .alovesinh-card-review-quote {
		font-size: var(--alv-fs-4b);
		font-weight: var(--alv-fw-medium);
		line-height: var(--alv-lh-snug);
	}
}

@media (prefers-reduced-motion: reduce) {
	.alovesinh-card-icon {
		--alv-card-icon-card-hover-lift: none;
	}

	.alovesinh-card-review-image img {
		transition: none;
	}

	.alovesinh-card-review-image img:hover {
		transform: none;
	}
}
