/* Renew Laptop Core - widget and UI styles.
   Design tokens are defined once in the child theme (:root) and consumed here. */

/* ---------- Buttons ---------- */

.rl-btn-wrap { display: flex; flex-direction: column; }

.rl-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 48px;
	padding: 13px 26px;
	border: 2px solid transparent;
	border-radius: var(--rl-radius-btn, 10px);
	font-family: var(--rl-font-body, Inter, system-ui, sans-serif);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: .01em;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--rl-t, 220ms cubic-bezier(.4,0,.2,1)),
				color var(--rl-t, 220ms cubic-bezier(.4,0,.2,1)),
				border-color var(--rl-t, 220ms cubic-bezier(.4,0,.2,1)),
				transform var(--rl-t, 220ms cubic-bezier(.4,0,.2,1)),
				box-shadow var(--rl-t, 220ms cubic-bezier(.4,0,.2,1));
}

.rl-btn--lg { min-height: 56px; padding: 16px 34px; font-size: 17px; }

.rl-btn__icon { flex: none; }

.rl-btn:hover { transform: translateY(-2px); }
.rl-btn:active { transform: translateY(0); }

/* Call button: white on #12658F is 6.3:1, so it passes AA at button text size. */
a.rl-btn.rl-btn--call,
.rl-btn--call {
	background: var(--rl-accent, #12658F);
	color: var(--rl-accent-ink, #fff);
	box-shadow: 0 8px 22px rgba(18, 101, 143, .30);
}
a.rl-btn.rl-btn--call:hover,
.rl-btn--call:hover { background: var(--rl-accent-dark, #0E4E70); color: var(--rl-accent-ink, #fff); }

/* Blue button uses dark text: white on #2299D1 is only 3.0:1 and fails AA at this size. */
a.rl-btn.rl-btn--solid,
.rl-btn--solid { background: var(--rl-primary, #2299D1); color: var(--rl-heading, #0B1C2C); }
.rl-btn--solid:hover { background: var(--rl-secondary, #0E3A57); color: #fff; }

a.rl-btn.rl-btn--outline,
.rl-btn--outline {
	background: transparent;
	color: var(--rl-heading, #0B1C2C);
	border-color: var(--rl-border, #DFE7EE);
}
.rl-btn--outline:hover { border-color: var(--rl-primary, #2299D1); color: var(--rl-primary-ink, #0E3A57); }

a.rl-btn.rl-btn--ondark,
.rl-btn--ondark { background: #fff; color: var(--rl-heading, #0B1C2C); }
.rl-btn--ondark:hover { background: var(--rl-blue-200, #BFE0F2); color: var(--rl-blue-900, #0A2740); }

.rl-tel { color: inherit; font-weight: 600; text-decoration: none; }
.rl-tel:hover { text-decoration: underline; }

/* ---------- Cards ---------- */

.rl-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }

.rl-card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding: 28px;
	background: var(--rl-bg, #fff);
	border: 1px solid var(--rl-border, #DFE7EE);
	border-radius: var(--rl-radius-card, 16px);
	color: inherit;
	text-decoration: none;
	box-shadow: 0 1px 2px rgba(11, 28, 44, .04);
	transition: transform var(--rl-t, 220ms cubic-bezier(.4,0,.2,1)),
				box-shadow var(--rl-t, 220ms cubic-bezier(.4,0,.2,1)),
				border-color var(--rl-t, 220ms cubic-bezier(.4,0,.2,1));
}

a.rl-card:hover {
	transform: translateY(-6px);
	box-shadow: 0 16px 40px rgba(11, 28, 44, .10);
	border-color: var(--rl-primary, #2299D1);
}

.rl-card__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	border-radius: 14px;
	background: var(--rl-light-bg, #F3F7FA);
	color: var(--rl-primary-ink, #0E3A57);
	font-size: 26px;
	transition: background-color var(--rl-t, 220ms), color var(--rl-t, 220ms);
}
.rl-card__icon svg { width: 26px; height: 26px; fill: currentColor; }
a.rl-card:hover .rl-card__icon { background: var(--rl-primary, #2299D1); color: var(--rl-heading, #0B1C2C); }

.rl-card__media {
	margin: -28px -28px 0;
	overflow: hidden;
	border-radius: var(--rl-radius-card, 16px) var(--rl-radius-card, 16px) 0 0;
	aspect-ratio: 3 / 2;
}
.rl-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 400ms cubic-bezier(.4,0,.2,1);
}
a.rl-card:hover .rl-card__media img { transform: scale(1.04); }

.rl-card__body { display: flex; flex-direction: column; gap: 8px; }

.rl-card__title {
	margin: 0;
	font-family: var(--rl-font-head, "Plus Jakarta Sans", system-ui, sans-serif);
	font-size: 20px;
	font-weight: 600;
	line-height: 1.3;
	color: var(--rl-heading, #0B1C2C);
}

.rl-card__text { margin: 0; font-size: 15.5px; line-height: 1.65; color: var(--rl-body, #55657A); }

.rl-card__arrow { margin-top: 4px; color: var(--rl-primary-ink, #0E3A57); transition: transform var(--rl-t, 220ms); }
a.rl-card:hover .rl-card__arrow { transform: translateX(5px); }

.rl-cards--compact .rl-card { padding: 22px; gap: 12px; align-items: flex-start; }
.rl-cards--compact .rl-card__icon { width: 46px; height: 46px; border-radius: 12px; font-size: 22px; }
.rl-cards--compact .rl-card__title { font-size: 17px; }

.rl-card__links { display: flex; flex-direction: column; gap: 6px; margin-top: 4px; }
.rl-card__link,
.rl-card__map {
	font-size: 15px;
	font-weight: 600;
	color: var(--rl-primary-ink, #0E3A57);
	text-decoration: none;
	border-bottom: 1px solid transparent;
	align-self: flex-start;
}
.rl-card__map { font-weight: 500; color: var(--rl-body, #55657A); }
.rl-card__link:hover,
.rl-card__map:hover { border-bottom-color: currentColor; }

/* ---------- Process ---------- */

.rl-process {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 24px;
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: none;
}

.rl-process__step { position: relative; padding-top: 18px; }

.rl-process__num {
	display: block;
	font-family: var(--rl-font-head, "Plus Jakarta Sans", system-ui, sans-serif);
	font-size: 72px;
	font-weight: 700;
	line-height: .85;
	letter-spacing: -.04em;
	color: var(--rl-border, #DFE7EE);
}

.rl-process__title {
	margin: 12px 0 6px;
	font-family: var(--rl-font-head, "Plus Jakarta Sans", system-ui, sans-serif);
	font-size: 20px;
	font-weight: 600;
	color: var(--rl-heading, #0B1C2C);
}

.rl-process__text { margin: 0; font-size: 15.5px; line-height: 1.65; color: var(--rl-body, #55657A); }

/* ---------- FAQ ---------- */

.rl-faq { display: flex; flex-direction: column; gap: 12px; }

.rl-faq__item {
	border: 1px solid var(--rl-border, #DFE7EE);
	border-radius: var(--rl-radius-card, 16px);
	background: var(--rl-bg, #fff);
	overflow: hidden;
}

.rl-faq__q {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 20px 24px;
	min-height: 48px;
	cursor: pointer;
	list-style: none;
	font-family: var(--rl-font-head, "Plus Jakarta Sans", system-ui, sans-serif);
	font-size: 17px;
	font-weight: 600;
	line-height: 1.45;
	color: var(--rl-heading, #0B1C2C);
}
.rl-faq__q::-webkit-details-marker { display: none; }
.rl-faq__q:hover { background: var(--rl-light-bg, #F3F7FA); }

.rl-faq__icon { flex: none; color: var(--rl-primary-ink, #0E3A57); transition: transform var(--rl-t, 220ms); }
.rl-faq__item[open] .rl-faq__icon { transform: rotate(180deg); }

.rl-faq__a { padding: 0 24px 22px; color: var(--rl-body, #55657A); line-height: 1.7; }
.rl-faq__a > :first-child { margin-top: 0; }
.rl-faq__a > :last-child { margin-bottom: 0; }

/* ---------- Testimonials ---------- */

.rl-quotes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }

.rl-quote {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin: 0;
	padding: 28px;
	background: var(--rl-bg, #fff);
	border: 1px solid var(--rl-border, #DFE7EE);
	border-radius: var(--rl-radius-card, 16px);
}

.rl-quote__mark { color: var(--rl-primary, #2299D1); opacity: .5; }

.rl-quote__text {
	margin: 0;
	font-size: 16px;
	line-height: 1.75;
	color: var(--rl-body, #55657A);
}

.rl-quote__by { display: flex; align-items: center; gap: 12px; margin-top: auto; }

.rl-quote__avatar {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	flex: none;
	border-radius: 50%;
	background: var(--rl-light-bg, #F3F7FA);
	color: var(--rl-primary-ink, #0E3A57);
	font-family: var(--rl-font-head, "Plus Jakarta Sans", system-ui, sans-serif);
	font-size: 18px;
	font-weight: 700;
}

.rl-quote__names { display: flex; flex-direction: column; }
.rl-quote__name { font-weight: 600; color: var(--rl-heading, #0B1C2C); }
.rl-quote__meta { font-size: 14px; color: var(--rl-body, #55657A); }

/* ---------- Elementor button widgets using our button styles ----------
   Elementor puts the widget's custom classes on the outer wrapper, not on the <a>, so the
   styling has to reach the inner .elementor-button. */

/* Keep this at one class of specificity so the variant rules below can override it. */
.rl-btn .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 48px;
	padding: 13px 26px;
	border: 2px solid transparent;
	border-radius: var(--rl-radius-btn, 10px);
	background: var(--rl-primary, #2299D1);
	color: var(--rl-heading, #0B1C2C);
	font-family: var(--rl-font-body, Inter, system-ui, sans-serif);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	fill: currentColor;
	transition: background-color var(--rl-t, 220ms), color var(--rl-t, 220ms),
				border-color var(--rl-t, 220ms), transform var(--rl-t, 220ms);
}

.rl-btn .elementor-button:hover { transform: translateY(-2px); }

.rl-btn--call .elementor-button {
	background: var(--rl-accent, #12658F);
	color: var(--rl-accent-ink, #fff);
}
.rl-btn--call .elementor-button:hover { background: var(--rl-accent-dark, #0E4E70); }

.rl-btn--solid .elementor-button:hover { background: var(--rl-secondary, #0E3A57); color: #fff; }

.rl-btn--outline .elementor-button {
	background: transparent;
	border-color: var(--rl-border, #DFE7EE);
	color: var(--rl-heading, #0B1C2C);
}
.rl-btn--outline .elementor-button:hover {
	border-color: var(--rl-primary, #2299D1);
	background: transparent;
	color: var(--rl-primary-ink, #0E3A57);
}

.rl-btn--ondark .elementor-button { background: #fff; color: var(--rl-heading, #0B1C2C); }
.rl-btn--ondark .elementor-button:hover { background: var(--rl-blue-200, #BFE0F2); color: var(--rl-blue-900, #0A2740); }

/* ---------- Post cards ---------- */

.rl-posts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }

.rl-post {
	display: flex;
	flex-direction: column;
	background: var(--rl-bg, #fff);
	border: 1px solid var(--rl-border, #DFE7EE);
	border-radius: var(--rl-radius-card, 16px);
	overflow: hidden;
	transition: transform var(--rl-t, 220ms), box-shadow var(--rl-t, 220ms), border-color var(--rl-t, 220ms);
}

.rl-post:hover {
	transform: translateY(-6px);
	box-shadow: 0 16px 40px rgba(11, 28, 44, .10);
	border-color: var(--rl-primary, #2299D1);
}

.rl-post__media { display: block; aspect-ratio: 3 / 2; overflow: hidden; }
.rl-post__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 400ms cubic-bezier(.4,0,.2,1); }
.rl-post:hover .rl-post__media img { transform: scale(1.04); }

.rl-post__body { display: flex; flex-direction: column; gap: 10px; padding: 24px; }

.rl-post__date { font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--rl-body, #55657A); }

.rl-post__title {
	margin: 0;
	font-family: var(--rl-font-head, "Plus Jakarta Sans", system-ui, sans-serif);
	font-size: 20px;
	font-weight: 600;
	line-height: 1.32;
}
.rl-post__title a { color: var(--rl-heading, #0B1C2C); text-decoration: none; }
.rl-post__title a:hover { color: var(--rl-primary-ink, #0E3A57); }

.rl-post__excerpt { margin: 0; font-size: 15.5px; line-height: 1.65; color: var(--rl-body, #55657A); }

.rl-post__more {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	margin-top: auto;
	font-weight: 600;
	color: var(--rl-primary-ink, #0E3A57);
	text-decoration: none;
	align-self: flex-start;
	border-bottom: 1px solid transparent;
}
.rl-post__more:hover { border-bottom-color: currentColor; }

@media (max-width: 767px) {
	.rl-posts { grid-template-columns: minmax(0, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
	.rl-post:hover { transform: none; }
	.rl-post:hover .rl-post__media img { transform: none; }
	.rl-btn .elementor-button:hover { transform: none; }
}

/* ---------- Contact block ---------- */

.rl-contact { display: flex; flex-direction: column; gap: 18px; margin: 0; padding: 0; list-style: none; }
.rl-contact__row { display: flex; gap: 14px; align-items: flex-start; }

.rl-contact__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	flex: none;
	border-radius: 11px;
	background: var(--rl-light-bg, #F3F7FA);
	color: var(--rl-primary-ink, #0E3A57);
}

.rl-contact__body { display: flex; flex-direction: column; gap: 2px; }
.rl-contact__label { font-size: 13px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--rl-body, #55657A); }
.rl-contact__value { color: var(--rl-heading, #0B1C2C); line-height: 1.6; }
.rl-contact__value a { color: inherit; text-decoration: none; border-bottom: 1px solid var(--rl-border, #DFE7EE); }
.rl-contact__value a:hover { border-bottom-color: currentColor; }

.rl-contact--dark .rl-contact__icon { background: rgba(255, 255, 255, .1); color: #fff; }
.rl-contact--dark .rl-contact__label { color: rgba(255, 255, 255, .66); }
.rl-contact--dark .rl-contact__value { color: #fff; }
.rl-contact--dark .rl-contact__value a { border-bottom-color: rgba(255, 255, 255, .3); }

.rl-hours { margin: 0; padding: 0; list-style: none; }

/* ---------- Mobile sticky call bar ---------- */

.rl-mobile-bar { display: none; }

@media (max-width: 1024px) {
	.rl-mobile-bar {
		position: fixed;
		inset: auto 0 0 0;
		z-index: 9990;
		display: flex;
		gap: 8px;
		padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
		background: rgba(255, 255, 255, .97);
		border-top: 1px solid var(--rl-border, #DFE7EE);
		box-shadow: 0 -6px 24px rgba(11, 28, 44, .10);
	}

	a.rl-mobile-bar__call,
	.rl-mobile-bar__call {
		flex: 1 1 auto;
		display: inline-flex;
		align-items: center;
		justify-content: center;
		gap: 10px;
		min-height: 52px;
		border-radius: var(--rl-radius-btn, 10px);
		background: var(--rl-accent, #12658F);
		color: var(--rl-accent-ink, #fff);
		font-family: var(--rl-font-body, Inter, system-ui, sans-serif);
		font-size: 17px;
		font-weight: 700;
		text-decoration: none;
	}

	.rl-mobile-bar__wa {
		flex: 0 0 52px;
		display: inline-flex;
		align-items: center;
		justify-content: center;
		min-height: 52px;
		border-radius: var(--rl-radius-btn, 10px);
		background: #25D366;
		color: #0B1C2C;
		text-decoration: none;
	}

	/* Keeps the bar from covering the end of the page. */
	body { padding-bottom: 76px; }
}

/* ---------- Back to top ---------- */

.rl-to-top {
	position: fixed;
	right: 18px;
	bottom: 18px;
	z-index: 9980;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	padding: 0;
	border: 1px solid var(--rl-border, #DFE7EE);
	border-radius: 50%;
	background: #fff;
	color: var(--rl-heading, #0B1C2C);
	cursor: pointer;
	box-shadow: 0 6px 20px rgba(11, 28, 44, .12);
	opacity: 0;
	transform: translateY(8px);
	transition: opacity var(--rl-t, 220ms), transform var(--rl-t, 220ms), background-color var(--rl-t, 220ms);
}
.rl-to-top[hidden] { display: none; }
.rl-to-top.is-visible { opacity: 1; transform: translateY(0); }
.rl-to-top:hover { background: var(--rl-blue-400, #2299D1); color: #fff; border-color: var(--rl-blue-400, #2299D1); }

@media (max-width: 1024px) {
	.rl-to-top { bottom: 88px; }
}

/* ---------- Scroll reveal ---------- */

[data-rl-reveal] > * {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 500ms cubic-bezier(.4,0,.2,1), transform 500ms cubic-bezier(.4,0,.2,1);
}
[data-rl-reveal].is-revealed > * { opacity: 1; transform: none; }

/* Never leave content invisible if the observer does not run. */
.no-js [data-rl-reveal] > * { opacity: 1; transform: none; }

/* ---------- Utilities ---------- */

.rl-sr-only {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.rl-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100000;
	padding: 12px 20px;
	background: var(--rl-heading, #0B1C2C);
	color: #fff;
	font-weight: 600;
	text-decoration: none;
	border-radius: 0 0 8px 0;
}
.rl-skip-link:focus { left: 0; }

/* ---------- Responsive ---------- */

@media (max-width: 1024px) {
	.rl-process { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.rl-process__num { font-size: 60px; }
}

@media (max-width: 767px) {
	.rl-cards,
	.rl-quotes { grid-template-columns: minmax(0, 1fr); }
	.rl-process { grid-template-columns: minmax(0, 1fr); gap: 20px; }
	.rl-card { padding: 22px; }
	.rl-card__media { margin: -22px -22px 0; }
	.rl-quote { padding: 22px; }
	.rl-faq__q { padding: 16px 18px; font-size: 16px; }
	.rl-faq__a { padding: 0 18px 18px; }
	.rl-process__num { font-size: 54px; }
}

/* ---------- Reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
	[data-rl-reveal] > * { opacity: 1 !important; transform: none !important; transition: none !important; }
	.rl-btn:hover,
	a.rl-card:hover { transform: none; }
	a.rl-card:hover .rl-card__media img { transform: none; }
}

/* =================================================================
   Premium layer: marquee, stats, image reveal and richer hover work
   ================================================================= */

/* ---------- Marquee ---------- */

.rl-marquee {
	display: flex;
	width: 100%;
	overflow: hidden;
	gap: 0;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}

.rl-marquee__track {
	display: flex;
	align-items: baseline;
	gap: 30px;
	flex: none;
	padding-right: 28px;
	white-space: nowrap;
	animation: rl-marquee var(--rl-marquee-speed, 38s) linear infinite;
	animation-direction: var(--rl-marquee-dir, normal);
}

.rl-marquee:hover .rl-marquee__track { animation-play-state: paused; }

@keyframes rl-marquee {
	from { transform: translateX(0); }
	to   { transform: translateX(-100%); }
}

.rl-marquee__item {
	font-family: var(--rl-font-display, "Playfair Display", Georgia, serif);
	font-size: clamp(22px, 3.4vw, 40px);
	font-weight: 600;
	font-style: italic;
	letter-spacing: .005em;
	line-height: 1.25;
	/* Optical alignment: an italic serif sits a touch low against the separators. */
	padding-bottom: 2px;
}

/* Every other item switches to small caps sans, which gives the strip a rhythm rather
   than a single unbroken line of italics. */
.rl-marquee__item:nth-child(4n + 3) {
	font-family: var(--rl-font-body, Inter, sans-serif);
	font-style: normal;
	font-weight: 600;
	font-size: clamp(12px, 1.5vw, 16px);
	letter-spacing: .22em;
	text-transform: uppercase;
	opacity: .78;
}

/* A small rotated square reads more considered than a plain dot. */
.rl-marquee__dot {
	width: 7px;
	height: 7px;
	flex: none;
	transform: rotate(45deg);
	background: var(--rl-blue-300, #7FC4E6);
	opacity: .85;
}

.rl-marquee--dark {
	background: linear-gradient(100deg, var(--rl-blue-900, #0A2740), var(--rl-blue-700, #0E4E70) 55%, var(--rl-blue-800, #0E3A57));
	color: #fff;
	padding: 26px 0;
	border-top: 1px solid rgba(255, 255, 255, .07);
	border-bottom: 1px solid rgba(255, 255, 255, .07);
}
.rl-marquee--light  { background: var(--rl-light-bg, #F3F7FA); color: var(--rl-heading, #0B1C2C); padding: 22px 0; }
.rl-marquee--accent { background: var(--rl-blue-400, #2299D1); color: var(--rl-blue-900, #0A2740); padding: 18px 0; }
.rl-marquee--accent .rl-marquee__dot { background: var(--rl-blue-900, #0A2740); }

@media (prefers-reduced-motion: reduce) {
	.rl-marquee__track { animation: none; }
	.rl-marquee { -webkit-mask-image: none; mask-image: none; }
	.rl-marquee__track:nth-child(2) { display: none; }
}

/* ---------- Stats ---------- */

.rl-stats {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 24px;
	margin: 0;
}

.rl-stat { display: flex; flex-direction: column; gap: 6px; }

.rl-stat__value {
	display: flex;
	align-items: baseline;
	gap: 2px;
	margin: 0;
	font-family: var(--rl-font-head, "Plus Jakarta Sans", system-ui, sans-serif);
	font-size: clamp(44px, 5vw, 68px);
	font-weight: 700;
	line-height: 1;
	letter-spacing: -.04em;
	color: var(--rl-heading, #0B1C2C);
	font-variant-numeric: tabular-nums;
}

.rl-stat__suffix { color: var(--rl-blue-400, #2299D1); }

.rl-stat__label {
	margin: 0;
	font-size: 15px;
	line-height: 1.5;
	color: var(--rl-body, #55657A);
}

.rl-stats--dark .rl-stat__value { color: #fff; }
.rl-stats--dark .rl-stat__label { color: rgba(255, 255, 255, .72); }

@media (max-width: 767px) {
	.rl-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 16px; }
}

/* ---------- Image reveal ----------
   A soft wipe as the image enters the viewport. Applied by the script to Elementor image
   widgets, so it works on images an editor adds later without any extra setup. */

.rl-reveal-img {
	clip-path: inset(0 0 100% 0);
	transform: scale(1.06);
	transition: clip-path 900ms cubic-bezier(.22,1,.36,1), transform 1100ms cubic-bezier(.22,1,.36,1);
	will-change: clip-path, transform;
}

.rl-reveal-img.is-in {
	clip-path: inset(0 0 0 0);
	transform: scale(1);
}

@media (prefers-reduced-motion: reduce) {
	.rl-reveal-img { clip-path: none !important; transform: none !important; transition: none !important; }
}

/* ---------- Richer card treatment ---------- */

.rl-card::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	pointer-events: none;
	opacity: 0;
	background: linear-gradient(140deg, rgba(34, 153, 209, .10), rgba(34, 153, 209, 0) 46%);
	transition: opacity var(--rl-t, 220ms);
}

a.rl-card:hover::after { opacity: 1; }

.rl-cards--icon .rl-card,
.rl-cards--compact .rl-card { position: relative; overflow: hidden; }

/* A quiet accent bar that draws in from the left on hover. */
.rl-cards--compact .rl-card::before,
.rl-cards--icon .rl-card::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 3px;
	background: linear-gradient(180deg, var(--rl-blue-400, #2299D1), var(--rl-blue-600, #12658F));
	transform: scaleY(0);
	transform-origin: top;
	transition: transform 320ms cubic-bezier(.22,1,.36,1);
}

a.rl-card:hover::before { transform: scaleY(1); }

/* ---------- Process connector ---------- */

.rl-process { position: relative; }

.rl-process__step::after {
	content: "";
	position: absolute;
	top: 46px;
	left: calc(100% - 12px);
	width: calc(100% - 46px);
	height: 2px;
	background: linear-gradient(90deg, var(--rl-border, #DFE7EE), rgba(223, 231, 238, 0));
}

.rl-process__step:last-child::after { display: none; }

.rl-process__num {
	background: linear-gradient(180deg, var(--rl-border, #DFE7EE), rgba(223, 231, 238, .35));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	transition: background 320ms;
}

.rl-process__step:hover .rl-process__num {
	background: linear-gradient(180deg, var(--rl-blue-300, #7FC4E6), var(--rl-blue-600, #12658F));
	-webkit-background-clip: text;
	background-clip: text;
}

@media (max-width: 1024px) {
	.rl-process__step::after { display: none; }
}

/* ---------- Hero treatment ---------- */

.rl-hero-media img {
	border-radius: var(--rl-radius-img, 20px);
	box-shadow: 0 30px 70px rgba(11, 28, 44, .18);
}

/* Soft brand glow behind the hero, kept very low contrast. */
.rl-hero {
	position: relative;
	overflow: hidden;
	isolation: isolate;
}

.rl-hero::before {
	content: "";
	position: absolute;
	z-index: -1;
	top: -30%;
	right: -10%;
	width: 60vw;
	height: 60vw;
	max-width: 900px;
	max-height: 900px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(34, 153, 209, .16), rgba(34, 153, 209, 0) 68%);
	pointer-events: none;
}

/* ---------- Section eyebrow with a marker ---------- */

.rl-eyebrow::before {
	content: "";
	display: inline-block;
	width: 22px;
	height: 2px;
	margin-right: 10px;
	vertical-align: middle;
	background: var(--rl-accent, #F5A524);
}

/* ---------- FAQ polish ---------- */

.rl-faq__item { transition: border-color var(--rl-t, 220ms), box-shadow var(--rl-t, 220ms); }
.rl-faq__item[open] {
	border-color: var(--rl-primary, #2299D1);
	box-shadow: 0 10px 30px rgba(11, 28, 44, .07);
}

/* ---------- Testimonial polish ---------- */

.rl-quote { position: relative; overflow: hidden; }
.rl-quote::before {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: 3px;
	background: linear-gradient(90deg, var(--rl-blue-300, #7FC4E6), var(--rl-blue-500, #1A82B5));
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 420ms cubic-bezier(.22,1,.36,1);
}
.rl-quote:hover::before { transform: scaleX(1); }

/* =================================================================
   Depth layer: perspective tilt, parallax and layered shadows
   ================================================================= */

/* Cards tilt slightly towards the cursor. The transform is written by the script as CSS
   custom properties so the rest of the card styling stays declarative. */

.rl-tilt {
	transform-style: preserve-3d;
	transform: perspective(900px)
		rotateX(var(--rl-rx, 0deg))
		rotateY(var(--rl-ry, 0deg))
		translateY(var(--rl-ty, 0px));
	transition: transform 320ms cubic-bezier(.22,1,.36,1), box-shadow 320ms cubic-bezier(.22,1,.36,1);
}

.rl-tilt.is-tilting { transition: transform 90ms linear, box-shadow 320ms; }

/* Content lifts off the card face, which is what actually reads as depth. */
.rl-tilt > * { transform: translateZ(18px); }
.rl-tilt .rl-card__icon { transform: translateZ(34px); }
.rl-tilt .rl-card__media { transform: translateZ(0); }

a.rl-card.rl-tilt:hover {
	box-shadow:
		0 2px 6px rgba(10, 39, 64, .05),
		0 18px 36px rgba(10, 39, 64, .10),
		0 40px 80px rgba(10, 39, 64, .10);
}

/* A moving sheen that follows the cursor across the card. */
.rl-tilt::after {
	background: radial-gradient(
		420px circle at var(--rl-mx, 50%) var(--rl-my, 50%),
		rgba(34, 153, 209, .16),
		rgba(34, 153, 209, 0) 60%
	);
}

/* ---------- Parallax ---------- */

.rl-parallax { will-change: transform; transform: translate3d(0, var(--rl-py, 0px), 0); }

/* ---------- Layered hero image ---------- */

.rl-hero-media {
	position: relative;
	perspective: 1200px;
}

.rl-hero-media img {
	transform: rotateY(-6deg) rotateX(2deg) translateZ(0);
	transition: transform 700ms cubic-bezier(.22,1,.36,1), box-shadow 700ms;
	box-shadow:
		-18px 28px 60px rgba(10, 39, 64, .22),
		0 2px 8px rgba(10, 39, 64, .10);
}

.rl-hero-media:hover img {
	transform: rotateY(0deg) rotateX(0deg) translateZ(20px);
	box-shadow: -6px 34px 80px rgba(10, 39, 64, .26);
}

/* A blue plate sitting behind the hero image, offset for depth. */
.rl-hero-media::before {
	content: "";
	position: absolute;
	inset: 22px -22px -22px 22px;
	border-radius: var(--rl-radius-img, 20px);
	background: linear-gradient(135deg, var(--rl-blue-200, #BFE0F2), var(--rl-blue-100, #E1F0F9));
	z-index: -1;
}

/* ---------- Depth on dark sections ---------- */

.rl-section-dark {
	position: relative;
	overflow: hidden;
}

.rl-section-dark::before {
	content: "";
	position: absolute;
	inset: auto auto -40% -10%;
	width: 55vw;
	height: 55vw;
	max-width: 760px;
	max-height: 760px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(127, 196, 230, .20), rgba(127, 196, 230, 0) 65%);
	pointer-events: none;
}

/* ---------- Page layout variants ----------
   Elementor does not render the container level "CSS Classes" setting reliably, so the
   variant hero styling keys off a body class the plugin adds, and targets the first
   top level container on the page.

   service   light blue gradient
   brand     split hero with a deep blue panel behind the heading
   area      faint blue grid, suggesting a map
   commerce  blue wash
   hub       clean light blue                                                            */

.rl-hero-sec { position: relative; overflow: hidden; isolation: isolate; }

body[class*="rl-page-"] #page > .elementor > .e-con.e-parent:first-of-type {
	position: relative;
	overflow: hidden;
	isolation: isolate;
}

/* Service pages */
.rl-page-service #page > .elementor > .e-con.e-parent:first-of-type {
	background-image: linear-gradient(160deg, var(--rl-blue-100, #E1F0F9), var(--rl-blue-50, #F2F8FC) 62%, #fff);
}

/* Hubs */
.rl-page-hub #page > .elementor > .e-con.e-parent:first-of-type {
	background-image: linear-gradient(150deg, var(--rl-blue-50, #F2F8FC), #fff 72%);
}

/* Brand pages: deep blue panel behind the left column */
.rl-page-brand #page > .elementor > .e-con.e-parent:first-of-type {
	background-image: linear-gradient(107deg,
		var(--rl-blue-900, #0A2740) 0%,
		var(--rl-blue-800, #0E3A57) 57%,
		var(--rl-blue-50, #F2F8FC) 57%);
}

/* Keep the hero copy clear of the diagonal edge. */
.rl-page-brand #page > .elementor > .e-con.e-parent:first-of-type h1,
.rl-page-brand #page > .elementor > .e-con.e-parent:first-of-type .rl-lead {
	max-width: 560px;
}

.rl-page-brand #page > .elementor > .e-con.e-parent:first-of-type h1,
.rl-page-brand #page > .elementor > .e-con.e-parent:first-of-type .rl-lead,
.rl-page-brand #page > .elementor > .e-con.e-parent:first-of-type .rl-lead p { color: #fff; }

.rl-page-brand #page > .elementor > .e-con.e-parent:first-of-type .rl-eyebrow { color: var(--rl-blue-300, #7FC4E6); }
.rl-page-brand #page > .elementor > .e-con.e-parent:first-of-type .rl-eyebrow::before { background: var(--rl-blue-300, #7FC4E6); }

@media (max-width: 1024px) {
	.rl-page-brand #page > .elementor > .e-con.e-parent:first-of-type {
		background-image: linear-gradient(155deg, var(--rl-blue-900, #0A2740), var(--rl-blue-800, #0E3A57));
	}
}

/* Area pages: faint blue grid */
.rl-page-area #page > .elementor > .e-con.e-parent:first-of-type {
	background-image:
		linear-gradient(0deg, rgba(242, 248, 252, .93), rgba(242, 248, 252, .93)),
		repeating-linear-gradient(0deg, var(--rl-blue-200, #BFE0F2) 0 1px, transparent 1px 56px),
		repeating-linear-gradient(90deg, var(--rl-blue-200, #BFE0F2) 0 1px, transparent 1px 56px);
}

/* Commercial pages */
.rl-page-commerce #page > .elementor > .e-con.e-parent:first-of-type {
	background-image: linear-gradient(135deg, var(--rl-blue-200, #BFE0F2), var(--rl-blue-50, #F2F8FC) 58%, #fff);
}

/* A soft brand glow in every hero. */
body[class*="rl-page-"] #page > .elementor > .e-con.e-parent:first-of-type::after {
	content: "";
	position: absolute;
	z-index: -1;
	top: -34%;
	right: -8%;
	width: 58vw;
	height: 58vw;
	max-width: 860px;
	max-height: 860px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(34, 153, 209, .18), rgba(34, 153, 209, 0) 66%);
	pointer-events: none;
}

.rl-page-brand #page > .elementor > .e-con.e-parent:first-of-type::after {
	background: radial-gradient(circle, rgba(127, 196, 230, .22), rgba(127, 196, 230, 0) 66%);
}

@media (prefers-reduced-motion: reduce) {
	.rl-tilt,
	.rl-hero-media img,
	.rl-parallax { transform: none !important; transition: none !important; }
	.rl-tilt > *,
	.rl-tilt .rl-card__icon { transform: none !important; }
}

/* The skip-link target is a zero-size anchor; it must not affect layout. */
.rl-skip-anchor { display: block; height: 0; overflow: hidden; }
.rl-skip-anchor:focus { outline: none; }
