/*
 * Recoveron site styles (Hello Elementor child theme).
 * Colors, fonts and button defaults live in Elementor > Site Settings; this file covers what those
 * settings can't: the header/footer chrome, the homepage components, testimonial cards and motion.
 */

:root {
	--rr-red: #eb2329;
	--rr-red-dark: #c4161c;
	--rr-red-light: #ff6a4d;
	--rr-ink: #14171c;
	--rr-dark: #1a1a1a;
	--rr-text: #3d434c;
	--rr-muted: #6b7280;
	--rr-line: #e5e7eb;
	--rr-surface: #fff;
	--rr-surface-2: #f6f5f3;
	--rr-radius: 14px;
	--rr-radius-sm: 10px;
	--rr-shadow: 0 1px 2px rgba(20, 23, 28, .06), 0 8px 24px rgba(20, 23, 28, .08);
	--rr-shadow-lg: 0 2px 4px rgba(20, 23, 28, .06), 0 18px 40px rgba(20, 23, 28, .14);
	--rr-ease: cubic-bezier(.2, .7, .2, 1);
	--rr-section-h2: clamp(30px, 2.8vw, 42px);
	--rr-grad: linear-gradient(135deg, #eb2329, #1a1a1a);
	--rr-header-h: 150px;
}

/* Base: the same text rhythm Impreza had
   ========================================================================== */

html, body { overflow-x: clip; }
/* Headings and links with plain element selectors, like Impreza, so CSS inside a page's own HTML still wins */
h1, h2, h3, h4, h5, h6 { font-family: Raleway, sans-serif; color: #1a1a1a; }
h1 { font-size: calc(24px + 2vw); line-height: 1; font-weight: 700; }
h2 { font-size: calc(18px + 1.3vw); line-height: 1.2; font-weight: 400; }
h3 { font-size: calc(16px + 1vw); line-height: 1.2; font-weight: 400; }
h4 { font-size: calc(17px + 0.9vw); line-height: 1.2; font-weight: 400; }
h5 { font-size: calc(14px + 0.6vw); line-height: 1.2; font-weight: 400; }
h6 { font-size: calc(13px + 0.4vw); line-height: 1.2; font-weight: 400; }
a { color: #eb2329; }
a:hover { color: #1a1a1a; }
:is(h2, h3, h4, h5, h6).elementor-heading-title { line-height: 1.2; }
body { -webkit-font-smoothing: antialiased; }
.elementor-widget-text-editor p,
.elementor-widget-text-editor ul,
.elementor-widget-text-editor ol,
.elementor-widget-text-editor blockquote { margin: 0 0 1.5rem; }
.elementor-widget-text-editor > :last-child,
.elementor-widget-text-editor .elementor-widget-container > :last-child { margin-bottom: 0; }
.elementor-widget-text-editor ul, .elementor-widget-text-editor ol { padding-left: 2.5rem; }
.elementor-widget-text-editor li { margin-bottom: .5rem; }
.elementor-widget-text-editor :is(h1, h2, h3, h4, h5, h6) { margin: 0 0 .6em; padding-top: 1.5rem; }
.elementor-widget-text-editor :is(h1, h2, h3, h4, h5, h6):first-child { padding-top: 0; }
.elementor-widget-text-editor h2 { margin-bottom: .4em; }
.elementor-widget-heading .elementor-heading-title { margin: 0; }
.elementor-widget-heading:not(:last-child) :is(h2, h3, h4, h5, h6).elementor-heading-title { margin-bottom: .6em; }
.elementor-widget-heading:not(:last-child) h2.elementor-heading-title { margin-bottom: .4em; }
strong, b { font-weight: 700; }
img { height: auto; }
@media (max-width: 600px) {
	.elementor-widget-text-editor p { margin-bottom: 1rem; }
	.elementor-widget-text-editor :is(h1, h2, h3, h4, h5, h6) { padding-top: 1rem; }
}

/* Text color set on a block applies to its headings and links too */
.rr-text-inherit :is(h1, h2, h3, h4, h5, h6, a) { color: inherit; }

/* Red sections (Impreza "primary" color scheme) */
.rr-scheme-dark, .rr-scheme-dark :is(h1, h2, h3, h4, h5, h6, p, li, .elementor-heading-title) { color: #fff; }
.rr-scheme-dark a { color: inherit; }

/* Images with a fixed shape (Impreza aspect ratio option) */
.rr-ratio img { width: 100%; object-fit: cover; }
.rr-ratio-4x3 img { aspect-ratio: 4 / 3; }
.rr-ratio-3x2 img { aspect-ratio: 3 / 2; }
.rr-ratio-1x1 img { aspect-ratio: 1; }
.rr-ratio-16x9 img { aspect-ratio: 16 / 9; }

/* Buttons
   ========================================================================== */

.elementor-button {
	position: relative; overflow: hidden; isolation: isolate;
	transition: background-color .3s, color .3s, transform .2s var(--rr-ease), box-shadow .2s var(--rr-ease);
}
/* Impreza's hover: fade to the red-to-black gradient */
.elementor-button::after {
	content: ""; position: absolute; inset: 0; z-index: -1; opacity: 0; transition: opacity .3s;
	background: var(--rr-grad);
}
.elementor-button:hover::after, .elementor-button:focus-visible::after { opacity: 1; }
.elementor-button:hover { background-color: var(--rr-red); }
.rr-btn-style-4 .elementor-button { background-color: var(--rr-dark); }
.rr-btn-style-5 .elementor-button,
.rr-btn-style-6 .elementor-button { line-height: 1.2; }

/* Header (Elementor Theme Builder template "Site Header")
   ========================================================================== */

.rr-header { --rr-nav: #fff; position: relative; z-index: 100; }
.rr-topbar { transition: margin-top .3s var(--rr-ease); }
.rr-topbar .elementor-icon-list-text { transition: color .2s; }
.rr-topbar a:hover .elementor-icon-list-text { color: rgba(255, 255, 255, .8) !important; }
.rr-mainbar { transition: min-height .3s var(--rr-ease), background-color .3s, box-shadow .3s; }
.rr-logo img { display: block; width: auto !important; height: var(--rr-logo-h, 90px); max-width: none; transition: height .3s var(--rr-ease); }

/* See-through header over the page's first photo */
.rr-header-overlay .elementor-location-header {
	position: absolute; top: var(--wp-admin--admin-bar--height, 0px); left: 0; right: 0; z-index: 100;
}
@media (min-width: 1025px) {
	.rr-header-overlay .rr-mainbar { background: transparent !important; }
	.rr-header-overlay .rr-logo { --rr-logo-h: 100px; }
	.rr-home .rr-mainbar {
		background: linear-gradient(180deg, rgba(10, 12, 16, .78) 0%, rgba(10, 12, 16, .45) 70%, rgba(10, 12, 16, 0) 100%) !important;
	}
	/* Sticky on scroll: the red top bar tucks away and the bar turns dark and blurred */
	.rr-header-overlay .elementor-location-header { position: fixed; }
	.rr-header-overlay.rr-scrolled .rr-topbar { margin-top: -40px; }
	.rr-header-overlay.rr-scrolled .rr-mainbar {
		min-height: 90px; background: rgba(14, 17, 22, .86) !important;
		-webkit-backdrop-filter: saturate(160%) blur(14px); backdrop-filter: saturate(160%) blur(14px);
		box-shadow: 0 10px 30px rgba(0, 0, 0, .28);
	}
	.rr-header-overlay.rr-scrolled .rr-logo img { height: 70px; }
	/* The dark header bar on inner pages matches the homepage header once it is scrolled */
	/* z-index: a sticky header is its own layer, and without one the page content after it covers the dropdowns */
	.rr-header-solid .elementor-location-header { position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 100; }
	.rr-header-solid .rr-logo { --rr-logo-h: 76px; }
	.rr-header-solid .rr-mainbar { background: var(--rr-ink) !important; }
	.rr-header-solid.rr-scrolled .rr-topbar { margin-top: -40px; }
	.rr-header-solid.rr-scrolled .rr-mainbar {
		min-height: 90px; background: rgba(14, 17, 22, .92) !important;
		-webkit-backdrop-filter: saturate(160%) blur(14px); backdrop-filter: saturate(160%) blur(14px);
		box-shadow: 0 10px 30px rgba(0, 0, 0, .28);
	}
	.rr-header-solid.rr-scrolled .rr-logo img { height: 64px; }
}
/* Tablets and phones: a solid dark bar that sticks to the top */
@media (max-width: 1024px) {
	.elementor-location-header,
	.rr-header-overlay .elementor-location-header { position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 100; }
	.rr-logo { --rr-logo-h: 70px; }
	.rr-scrolled .rr-logo img { height: 60px; }
}
@media (max-width: 767px) {
	.rr-logo { --rr-logo-h: 50px; }
	.rr-scrolled .rr-logo img { height: 50px; }
}
@media (max-width: 600px) {
	.admin-bar .elementor-location-header { top: 0 !important; }
}
/* With the header sitting on top of it, the first section starts below the header. */
@media (min-width: 1025px) {
	.rr-header-overlay .rr-first-section { padding-top: calc(var(--rr-header-h) + 2rem) !important; }
	.rr-header-overlay .rr-first-section.rr-full-height { padding-top: var(--rr-header-h) !important; }
}

/* Main menu */
.rr-nav .elementor-nav-menu--main .elementor-item { font-weight: 600; }
.rr-nav .elementor-nav-menu--main .elementor-item::after {
	left: 50% !important; right: 50% !important; width: auto !important; bottom: .35em !important; height: 2px !important;
	background-color: var(--rr-red) !important; opacity: 1 !important; transform: none !important;
	transition: left .25s var(--rr-ease), right .25s var(--rr-ease) !important;
}
.rr-nav .elementor-nav-menu--main .elementor-item:hover::after,
.rr-nav .elementor-nav-menu--main .elementor-item.elementor-item-active::after { left: 20px !important; right: 20px !important; }
.rr-nav .elementor-nav-menu--main .elementor-item.elementor-item-active,
.rr-nav .elementor-nav-menu--main .elementor-item:hover { color: #fff !important; }
/* Dropdowns */
.rr-nav .elementor-nav-menu--main .elementor-nav-menu--dropdown {
	min-width: 230px !important; padding: 8px; border-radius: 12px; background: #fff;
	box-shadow: 0 2px 4px rgba(20, 23, 28, .08), 0 18px 44px rgba(20, 23, 28, .22);
}
.rr-nav .elementor-nav-menu--main .elementor-nav-menu--dropdown a {
	padding: 10px 14px !important; border-radius: 8px; background: transparent !important;
	color: #14171c !important; font-size: 15px !important; font-weight: 600;
	transition: background .15s, color .15s;
}
.rr-nav .elementor-nav-menu--main .elementor-nav-menu--dropdown a:hover,
.rr-nav .elementor-nav-menu--main .elementor-nav-menu--dropdown a.elementor-item-active { background: rgba(235, 35, 41, .08) !important; color: var(--rr-red) !important; }
/* Phone menu */
.rr-nav .elementor-menu-toggle { background: transparent; color: #fff; font-size: 30px; }
.rr-nav .elementor-nav-menu--dropdown.elementor-nav-menu__container { background: var(--rr-dark); }
.rr-nav nav.elementor-nav-menu--dropdown a { color: #fff; font-size: 1.1rem; padding: 14px 24px; }
.rr-nav nav.elementor-nav-menu--dropdown a:hover,
.rr-nav nav.elementor-nav-menu--dropdown a.elementor-item-active { background: rgba(255, 255, 255, .06); color: var(--rr-red); }
.rr-nav nav.elementor-nav-menu--dropdown .sub-menu a { padding-left: 40px !important; font-size: 1rem; }

/* Phone number next to Get a Quote */
.rr-header-phone {
	display: inline-flex; flex-direction: column; justify-content: center; line-height: 1.15;
	color: #fff !important; text-decoration: none !important; font-weight: 800; font-size: 20px; letter-spacing: -.01em; white-space: nowrap;
}
.rr-header-phone small { font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--rr-red); }
.rr-header-phone--mobile { display: none; font-size: 16px; font-weight: 400; flex-direction: row; align-items: center; gap: 8px; }
.rr-header-phone--mobile svg { width: 16px; height: 16px; fill: currentColor; }
@media (max-width: 1024px) {
	.rr-header-phone--desk { display: none; }
	.rr-header-phone--mobile { display: inline-flex; }
}
.rr-quote-btn .elementor-button { box-shadow: 0 6px 16px rgba(235, 35, 41, .35); }

/* Footer (Theme Builder template "Site Footer")
   ========================================================================== */

.rr-footer { position: relative; font-size: 15px; }
.rr-footer::before {
	content: ""; position: absolute; left: 0; right: 0; top: 0; z-index: 1; height: 4px;
	background: linear-gradient(90deg, #eb2329, #ff6a4d, #eb2329);
}
.rr-footer__logo img { width: 96px; height: auto; }
.rr-footer__brand p { margin: 0 0 10px; line-height: 1.5; }
.rr-footer__tag { max-width: 26ch; color: #a1a1aa; }
.rr-footer__phone a { display: inline-flex; flex-direction: column; color: #fff !important; text-decoration: none; font-weight: 800; font-size: 22px; line-height: 1.15; }
.rr-footer__phone small { font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #eb2329; }
.rr-footer__email a { color: #d4d4d8 !important; text-decoration: none; }
.rr-footer__email a:hover { color: #fff !important; }
.rr-footer__h .elementor-heading-title {
	margin: 0 0 14px !important; font-family: inherit; font-size: 12px; line-height: 1.3; font-weight: 700;
	letter-spacing: .14em; text-transform: uppercase; color: #eb2329;
}
.rr-footer__menu ul { margin: 0; padding: 0; list-style: none; }
.rr-footer__menu li { margin: 0; padding: 0; line-height: 1.3; }
.rr-footer__menu a {
	display: inline-block; padding: 5px 0; color: #e4e4e7; font-size: 15px; text-decoration: none;
	transition: color .15s, transform .15s;
}
.rr-footer__menu a:hover { color: #fff; transform: translateX(3px); }
.rr-footer__cta .elementor-button { border-radius: 999px; padding: .8em 1.6em; font-size: 15px; }
.rr-footer-bottom { border-top: 1px solid rgba(255, 255, 255, .08); }
.rr-footer-bottom p { margin: 0; font-size: 13px; color: #71717a; }
.rr-footer-credit::before { content: "|"; margin: 0 .8em; color: #3f3f46; }
.rr-footer-credit a { color: #a1a1aa; text-decoration: none; transition: color .15s; }
.rr-footer-credit a:hover { color: #fff; }
@media (max-width: 767px) {
	.rr-footer__menu a { padding: 11px 0; }
	.rr-footer__email a { display: inline-block; padding: 10px 0; }
	.rr-footer__phone small { font-size: 12px; }
	.rr-footer-bottom p { padding-right: 150px; } /* clears the chat button */
	.rr-footer-credit { display: block; margin-top: 4px; }
	.rr-footer-credit::before { display: none; }
}

/* Testimonials (loop item templates "Testimonial Card" and "Testimonial Row")
   ========================================================================== */

.rr-t-terms .elementor-heading-title { margin-top: 15px; color: var(--rr-dark); font-family: inherit; font-size: 16px; font-weight: 700; line-height: 1.4; }
.rr-stars-rating { color: var(--rr-red); font-size: 1.2rem; letter-spacing: 2px; line-height: 1.2; }
.rr-t-content { width: 100%; padding: 0 15px; color: var(--rr-text); font-size: 16px; line-height: 1.6; }
.rr-t-content p:last-child { margin-bottom: 0; }
.rr-t-company .elementor-heading-title { padding: 0 15px; color: var(--rr-red); font-family: inherit; font-size: 16px; font-weight: 400; line-height: 1.5; }
.rr-t-author .elementor-heading-title { color: var(--rr-dark); font-family: inherit; font-size: 16px; font-weight: 700; line-height: 1.5; }
.rr-t-role .elementor-heading-title { margin-bottom: 15px; color: var(--rr-muted); font-family: inherit; font-size: .9rem; font-weight: 400; line-height: 1.5; }
.rr-t-row .rr-t-role .elementor-heading-title { margin-bottom: 0; }
.rr-t-company-h .elementor-heading-title { margin: 0; }
/* The Reviews pages' service label is a div (not an H3, which gave those pages 50 headings)
   with the H3 look it had */
.rr-t-row .rr-t-company-h div.elementor-heading-title {
	margin: 0 0 .6em; font-family: Raleway, sans-serif; font-size: calc(16px + 1vw); line-height: 1.2; font-weight: 700;
	letter-spacing: -0.015em; color: #1a1a1a;
}
/* Long reviews on the cards are cut to 100px with a Show More link (site.js) */
.rr-more-wrap { position: relative; overflow: hidden; max-height: 100px; transition: max-height .4s var(--rr-ease); }
.rr-more-wrap::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 40px; background: linear-gradient(rgba(245, 245, 245, 0), #f5f5f5); }
.rr-more-wrap.is-open { max-height: 2000px; }
.rr-more-wrap.is-open::after { display: none; }
.rr-more-toggle { display: inline-block; margin-top: 8px; padding: 0; border: 0; background: none; color: var(--rr-red); font: inherit; font-size: 15px; cursor: pointer; }
.rr-more-toggle:hover { color: var(--rr-dark); }
.rr-testimonial-carousel .swiper-slide { height: auto; }
.rr-testimonial-carousel .e-loop-item, .rr-testimonial-carousel .e-loop-item > .e-con { height: 100%; }
.rr-testimonial-carousel .swiper-pagination-bullet-active { background: var(--rr-red); }
/* Reviews pages */
.rr-reviews-grid .e-loop-item + .e-loop-item { padding-top: 40px; border-top: 1px solid #e8e8e8; }
.rr-reviews-grid .elementor-pagination { margin-top: 40px; text-align: center; }
.rr-reviews-grid .elementor-pagination .page-numbers {
	display: inline-grid; place-items: center; min-width: 44px; height: 44px; margin: 0 3px; padding: 0 12px; border-radius: 50%;
	color: var(--rr-dark); font-weight: 700; text-decoration: none;
}
.rr-reviews-grid .elementor-pagination .page-numbers.current { background: var(--rr-red); color: #fff; }
.rr-reviews-grid .elementor-pagination a.page-numbers:hover { background: rgba(235, 35, 41, .1); }
.rr-tax-filter .e-filter-item { font-weight: 600; }
.rr-tax-filter .e-filter-item[aria-pressed="true"] { color: var(--rr-red); }

/* Forms (Elementor Pro forms with the class rr-form; inc/forms.php and site.js add the spam check,
   conditional fields and phone tidying). One look everywhere, taken from the homepage callback card:
   light fields with a soft border, a red focus ring and a pill button. The !important rules beat
   the per-widget styles Elementor writes for every form.
   ========================================================================== */

.rr-form {
	--e-form-steps-indicator-inactive-primary-color: #c9cdd3;
	--e-form-steps-indicator-inactive-secondary-color: #fff;
	--e-form-steps-indicator-active-primary-color: var(--rr-red);
	--e-form-steps-indicator-active-secondary-color: #fff;
	--e-form-steps-indicator-completed-primary-color: var(--rr-red);
	--e-form-steps-indicator-completed-secondary-color: #fff;
	--e-form-steps-indicator-progress-color: var(--rr-red);
	--e-form-steps-divider-width: 2px;
}
/* (A field's CSS class, like rr-likert, lands on its input or options wrapper, not the field group.) */
.rr-form .elementor-form-fields-wrapper { align-items: flex-start; }
.rr-form .elementor-field-group { margin-bottom: 16px !important; }
.rr-form .elementor-field-group[hidden], .rr-form .elementor-field-type-honeypot, .rr-form .elementor-field-type-hidden { display: none !important; }
.rr-form .elementor-field-label { margin-bottom: 6px !important; padding: 0 !important; font-size: 14px !important; font-weight: 700 !important; line-height: 1.35; color: var(--rr-ink) !important; }
.rr-form .elementor-mark-required .elementor-field-label::after { color: var(--rr-red) !important; }

/* Text fields, dropdowns and text areas */
.rr-form .elementor-field-group .elementor-field-textual {
	min-height: 48px; padding: 10px 14px !important; border: 1.5px solid var(--rr-line) !important; border-radius: 10px !important;
	background: #fafafa !important; color: var(--rr-ink) !important; font-size: 16px !important; line-height: 1.4; box-shadow: none !important;
	transition: border-color .2s, background .2s, box-shadow .2s;
}
.rr-form .elementor-field-group textarea.elementor-field-textual { min-height: 130px; }
.rr-form .elementor-field-textual::placeholder { color: #9aa0a8; opacity: 1; }
.rr-form .elementor-field-group .elementor-field-textual:focus {
	outline: none; border-color: var(--rr-red) !important; background: #fff !important; box-shadow: 0 0 0 4px rgba(235, 35, 41, .12) !important;
}
.rr-form .elementor-error .elementor-field-textual { border-color: #d92d20 !important; }
.rr-form .elementor-select-wrapper::before { color: var(--rr-muted); }

/* Checkboxes and radio buttons */
.rr-form .elementor-field-subgroup { display: grid; gap: 8px; }
.rr-form .elementor-field-subgroup .elementor-field-option { display: flex; align-items: flex-start; gap: 10px; margin: 0; }
.rr-form .elementor-field-option input { flex: none; width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--rr-red); cursor: pointer; }
.rr-form .elementor-field-option label { font-size: 16px; line-height: 1.4; color: var(--rr-text); cursor: pointer; }
.rr-form .elementor-field-subgroup.rr-choices-2col { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 20px; }

/* Headings and text inside a form */
.rr-form .rr-form__section {
	margin: 6px 0 0 !important; padding: 22px 0 0 !important; border-top: 1px solid var(--rr-line);
	font-size: clamp(20px, 1.6vw, 24px) !important; line-height: 1.25; font-weight: 700 !important; color: var(--rr-ink);
}
.rr-form .rr-form__intro { margin: 0 0 4px; font-size: 17px; line-height: 1.65; color: var(--rr-text); }

/* Survey answers (Strongly disagree ... Strongly agree, and the overall rating) as a row of pills */
.rr-form .elementor-field-group:has(> .rr-likert) { padding: 16px 18px 18px !important; border-radius: 12px; background: var(--rr-surface-2); }
.rr-form .elementor-field-subgroup:is(.rr-likert, .rr-rating-scale) { display: grid !important; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; width: 100%; }
.rr-form :is(.rr-likert, .rr-rating-scale) .elementor-field-option { position: relative; display: block !important; margin: 0 !important; }
.rr-form :is(.rr-likert, .rr-rating-scale) .elementor-field-option input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; }
.rr-form :is(.rr-likert, .rr-rating-scale) .elementor-field-option label {
	display: flex; align-items: center; justify-content: center; height: 100%; min-height: 46px; padding: 8px 6px;
	border: 1.5px solid var(--rr-line); border-radius: 10px; background: #fff; text-align: center;
	font-size: 14px; font-weight: 600; line-height: 1.25; transition: background .15s, border-color .15s, color .15s;
}
.rr-form :is(.rr-likert, .rr-rating-scale) .elementor-field-option:hover label { border-color: rgba(235, 35, 41, .5); }
.rr-form :is(.rr-likert, .rr-rating-scale) .elementor-field-option:has(input:checked) label { border-color: var(--rr-red); background: var(--rr-red); color: #fff; }
.rr-form :is(.rr-likert, .rr-rating-scale) .elementor-field-option:has(input:focus-visible) label { outline: 2px solid var(--rr-red); outline-offset: 2px; }

/* Steps (the questionnaires) */
.rr-form .e-form__indicators { margin-bottom: 26px; }
.rr-form .e-form__indicators__indicator__label { font-size: 13px; font-weight: 700; }

/* Buttons */
.rr-form .elementor-button {
	min-height: 52px; border-radius: 999px !important; background-color: var(--rr-red) !important; color: #fff !important;
	font-size: 17px !important; font-weight: 800 !important; box-shadow: 0 12px 26px rgba(235, 35, 41, .3) !important;
	transition: transform .2s var(--rr-ease), background-color .2s;
}
.rr-form .elementor-button:hover { background-color: var(--rr-red-dark) !important; transform: translateY(-2px); }
.rr-form .e-form__buttons__wrapper__button-previous {
	background-color: #fff !important; color: var(--rr-ink) !important; box-shadow: inset 0 0 0 1.5px var(--rr-line) !important;
}
.rr-form .e-form__buttons__wrapper__button-previous::after { display: none; }

/* Messages: the confirmation, the form-level error and the note under a field */
.rr-form .elementor-message { margin-top: 14px; padding: 14px 16px; border-radius: 12px; font-size: 16px; line-height: 1.5; }
.rr-form .elementor-message-success { background: #ecfdf3; color: #14532d; }
.rr-form .elementor-message-danger { background: #fef3f2; color: #b42318; }
.rr-form .elementor-field-group .elementor-message { margin-top: 6px; padding: 0; background: none; font-size: 14px; }

/* The homepage callback card is tighter */
.rr-form--callback .elementor-field-group { margin-bottom: 12px !important; }
.rr-form--callback .elementor-field-label { font-size: 13px !important; margin-bottom: 5px !important; }
.rr-form--callback .elementor-button { min-height: 54px; box-shadow: 0 12px 26px rgba(235, 35, 41, .35) !important; }

@media (max-width: 767px) {
	.rr-form .elementor-field-subgroup.rr-choices-2col { grid-template-columns: 1fr; }
	.rr-form .elementor-field-group:has(> .rr-likert) { padding: 14px 8px !important; }
	.rr-form .elementor-field-subgroup:is(.rr-likert, .rr-rating-scale) { gap: 3px; }
	.rr-form :is(.rr-likert, .rr-rating-scale) .elementor-field-option label {
		min-height: 50px; padding: 4px 1px; border-radius: 8px; font-size: 11px; letter-spacing: -0.01em; overflow-wrap: anywhere;
	}
}

/* Homepage
   ========================================================================== */

.rr-eyebrow {
	display: inline-block; margin: 0 0 .9em !important;
	font-size: 13px !important; line-height: 1.4 !important; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
	color: var(--rr-red);
}
.rr-stars { color: #ffb400; letter-spacing: 2px; font-size: 17px; }
.rr-home :is(h1, h2, h3) { color: var(--rr-ink); letter-spacing: -0.015em; }
.rr-home .elementor-widget-text-editor, .rr-home .elementor-widget-html { color: var(--rr-text); }
.rr-home .rr-section-title .elementor-heading-title { font-weight: 700; font-size: var(--rr-section-h2); line-height: 1.15; }

.rr-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: .55em;
	padding: 1em 1.7em; border-radius: 999px; font-weight: 700; font-size: 17px; line-height: 1.2;
	text-decoration: none !important; white-space: nowrap;
	transition: transform .2s var(--rr-ease), box-shadow .2s var(--rr-ease), background .2s var(--rr-ease);
}
.rr-btn:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(235, 35, 41, .28); }
.rr-btn--primary { position: relative; overflow: hidden; isolation: isolate; background: var(--rr-red); color: #fff !important; }
.rr-btn--primary:hover { background: var(--rr-red-dark); }
.rr-btn--primary::after {
	content: ""; position: absolute; inset: 0; z-index: -1;
	background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, .35) 50%, transparent 70%);
	transform: translateX(-120%); transition: transform .7s var(--rr-ease);
}
.rr-btn--primary:hover::after { transform: translateX(120%); }
.rr-btn--ghost { background: rgba(255, 255, 255, .08); color: #fff !important; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .7); }
.rr-btn--ghost:hover { background: #fff; color: var(--rr-ink) !important; box-shadow: none; }
.rr-btn--dark { background: var(--rr-ink); color: #fff !important; }
.rr-btn--phone::before {
	content: ""; width: 1.05em; height: 1.05em; background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2a1 1 0 0 1 1-.25 11.4 11.4 0 0 0 3.6.57 1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.45.57 3.57a1 1 0 0 1-.25 1z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2a1 1 0 0 1 1-.25 11.4 11.4 0 0 0 3.6.57 1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.45.57 3.57a1 1 0 0 1-.25 1z'/%3E%3C/svg%3E") center / contain no-repeat;
}
/* Elementor buttons on the homepage get the pill shape too */
.rr-home .elementor-button { border-radius: 999px; padding: 1em 1.8em; }
.rr-home .elementor-button:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(235, 35, 41, .28); }

/* Scroll progress bar (site.js) */
.rr-progress {
	position: fixed; left: 0; top: 0; z-index: 10000; width: 100%; height: 3px; pointer-events: none;
	background: linear-gradient(90deg, var(--rr-red), var(--rr-red-light)); box-shadow: 0 0 10px rgba(235, 35, 41, .6);
	transform-origin: 0 50%; transform: scaleX(var(--rr-scroll, 0));
}
.admin-bar .rr-progress { top: 32px; }

/* Hero */
.rr-hero { overflow: hidden; }
.rr-hero::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 140px; z-index: 1; pointer-events: none;
	background: linear-gradient(180deg, rgba(12, 14, 18, 0) 0%, rgba(12, 14, 18, .55) 100%);
}
.rr-hero > .e-con-inner { position: relative; z-index: 2; }
/* Hero photo: container background with Elementor's scroll parallax, plus a slow zoom */
.rr-hero .elementor-motion-effects-layer { transform-origin: 60% 40%; animation: rr-slow-zoom 24s ease-in-out infinite alternate; }
.rr-hero__inner { max-width: 720px; }
.rr-hero .rr-eyebrow {
	display: inline-flex; align-items: center; gap: .6em; padding: .45em .9em; border-radius: 999px;
	color: #fff; background: var(--rr-red); letter-spacing: .1em; box-shadow: 0 8px 24px rgba(235, 35, 41, .45);
}
.rr-hero .rr-eyebrow::before {
	content: ""; flex: none; width: 8px; height: 8px; border-radius: 50%; background: #fff;
	animation: rr-pulse-white 1.8s ease-out infinite;
}
.rr-hero h1 {
	color: #fff !important; font-size: clamp(34px, 3.9vw, 56px) !important; line-height: 1.08 !important;
	font-weight: 800 !important; letter-spacing: -0.025em; margin: 0 0 .6em !important; text-shadow: 0 2px 24px rgba(0, 0, 0, .35);
	text-wrap: balance;
}
.rr-hero__ctas { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; margin-bottom: 1.8em; }
.rr-hero .rr-lead {
	flex: 1 1 260px; margin: 0; padding-left: 20px; border-left: 3px solid var(--rr-red);
	color: rgba(255, 255, 255, .92); font-size: clamp(16px, 1.25vw, 18px); font-weight: 600; line-height: 1.45; text-wrap: balance;
}
.rr-hero .rr-btn--primary { box-shadow: 0 12px 30px rgba(235, 35, 41, .45); }
.rr-rating {
	display: inline-flex; align-items: center; gap: 10px; margin: 0 0 1.4em; padding: 8px 14px 8px 12px; border-radius: 999px;
	background: rgba(255, 255, 255, .1); color: #fff !important; text-decoration: none !important; font-size: 15px;
	-webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .18);
	transition: background .2s;
}
.rr-rating:hover { background: rgba(255, 255, 255, .18); }
.rr-trust { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px 26px; }
.rr-trust li { position: relative; margin: 0; padding-left: 28px; color: #fff; font-size: 15px; font-weight: 600; line-height: 1.5; }
.rr-trust li::before {
	content: ""; position: absolute; left: 0; top: .12em; width: 20px; height: 20px; border-radius: 50%;
	background: var(--rr-red) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 12px no-repeat;
}

/* Callback card and form */
.rr-callback {
	position: relative; padding: 28px 28px 22px !important; border-radius: 18px; background: #fff; color: var(--rr-text);
	box-shadow: 0 30px 70px rgba(0, 0, 0, .45);
}
.rr-callback::before {
	content: ""; position: absolute; inset: 0 0 auto 0; height: 5px; border-radius: 18px 18px 0 0;
	background: linear-gradient(90deg, var(--rr-red), var(--rr-red-light));
}
.rr-callback__title .elementor-heading-title { margin: 0 0 4px; font-size: 26px; line-height: 1.2; font-weight: 800; color: var(--rr-ink); }
.rr-callback__sub { margin: 0 0 14px !important; font-size: 15px; line-height: 1.45; color: var(--rr-muted); }
.rr-callback__sub p, .rr-callback__foot p { margin: 0; }
.rr-callback__foot { margin: 12px 0 0 !important; font-size: 14px; color: var(--rr-muted); }
.rr-callback__foot a { font-weight: 800; color: var(--rr-red); }
.rr-mini-review {
	margin: 16px 0 0; padding: 14px 0 0; border: 0; border-top: 1px solid var(--rr-line);
	font-size: 14px; line-height: 1.5; font-style: italic; color: var(--rr-text);
}
.rr-mini-review .rr-stars { display: block; font-size: 14px; font-style: normal; margin-bottom: 4px; }
.rr-mini-review cite { display: block; margin-top: 6px; font-style: normal; font-weight: 700; font-size: 13px; color: var(--rr-ink); }

/* Service cards (overlap the bottom of the hero) */
.rr-services { position: relative; z-index: 3; margin-top: -64px !important; }
.rr-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.rr-card {
	position: relative; overflow: hidden; display: flex; flex-direction: column; gap: 10px; padding: 26px 24px 22px;
	background: var(--rr-surface); border-radius: var(--rr-radius); box-shadow: var(--rr-shadow-lg);
	text-decoration: none !important; color: var(--rr-text) !important;
	transition: transform .25s var(--rr-ease), box-shadow .25s var(--rr-ease);
}
.rr-card:hover { transform: translateY(-4px); box-shadow: 0 4px 8px rgba(20, 23, 28, .08), 0 26px 50px rgba(20, 23, 28, .18); }
.rr-card::before {
	content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px;
	background: linear-gradient(90deg, var(--rr-red), var(--rr-red-light), var(--rr-red)); background-size: 200% 100%;
	transition: background-position .6s var(--rr-ease);
}
.rr-card:hover::before { background-position: 100% 0; }
.rr-card::after {
	content: ""; position: absolute; inset: 0; pointer-events: none; opacity: 0; transition: opacity .3s;
	background: radial-gradient(260px circle at var(--mx, 80%) var(--my, 0%), rgba(235, 35, 41, .13), transparent 65%);
}
.rr-card:hover::after { opacity: 1; }
.rr-card > * { position: relative; z-index: 1; }
.rr-card__icon {
	display: block; flex: none; position: relative; width: 52px; height: 52px; margin-bottom: 6px; border-radius: 12px;
	background: linear-gradient(135deg, rgba(235, 35, 41, .14), rgba(235, 35, 41, .04));
	transition: background .3s var(--rr-ease), transform .3s var(--rr-ease);
}
.rr-card__icon::after {
	content: ""; position: absolute; inset: 12px; background: var(--rr-red); transition: background .3s;
	-webkit-mask: var(--rr-icon) center / contain no-repeat; mask: var(--rr-icon) center / contain no-repeat;
}
.rr-card:hover .rr-card__icon { background: linear-gradient(135deg, var(--rr-red), #ff5a3c); transform: rotate(-6deg) scale(1.05); }
.rr-card:hover .rr-card__icon::after { background: #fff; }
.rr-card--water { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.5s-7 7.6-7 12.3a7 7 0 0 0 14 0C19 10.1 12 2.5 12 2.5z'/%3E%3C/svg%3E"); }
.rr-card--mold { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2 3 6v6c0 5 3.8 9.3 9 10 5.2-.7 9-5 9-10V6l-9-4zm-1.2 14.2-3.5-3.5 1.4-1.4 2.1 2.1 4.9-4.9 1.4 1.4-6.3 6.3z'/%3E%3C/svg%3E"); }
.rr-card--sewer { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 5h9a4 4 0 0 1 4 4v3h2V9h3v12h-3v-4h-2a4 4 0 0 1-4-4v-3H3V5zm0 6h5v3H3v-3z'/%3E%3C/svg%3E"); }
.rr-card--rebuild { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 3 2 11h3v9h6v-6h2v6h6v-9h3L12 3z'/%3E%3C/svg%3E"); }
.rr-card__title { display: block; font-family: Raleway, sans-serif; font-size: 20px; line-height: 1.25; font-weight: 700; color: var(--rr-ink); }
.rr-card__text { display: block; font-size: 16px; line-height: 1.55; color: var(--rr-muted); }
.rr-card__more { display: block; margin-top: auto; padding-top: 8px; font-weight: 700; font-size: 15px; color: var(--rr-red); }
.rr-card__more::after { content: " \2192"; transition: margin .2s; }
.rr-card:hover .rr-card__more::after { margin-left: 4px; }

/* How it works */
.rr-section-head { text-align: center; max-width: 720px; margin: 0 auto 44px; }
.rr-section-head h2 { font-size: var(--rr-section-h2) !important; line-height: 1.15 !important; margin: 0 0 .35em !important; font-weight: 700 !important; }
.rr-section-head p { margin: 0 auto; color: var(--rr-muted); font-size: 18px; }
.rr-steps { position: relative; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
.rr-steps::before {
	content: ""; position: absolute; left: 12%; right: 12%; top: 28px; height: 2px; z-index: 0;
	background: repeating-linear-gradient(90deg, rgba(235, 35, 41, .45) 0 8px, transparent 8px 16px);
	transform-origin: 0 50%; transform: scaleX(0); transition: transform 1.4s var(--rr-ease) .2s;
}
.rr-steps.is-drawn::before, html:not(.rr-motion) .rr-steps::before { transform: scaleX(1); }
.rr-steps li { position: relative; z-index: 1; margin: 0; padding: 0 8px; text-align: center; }
.rr-steps__num {
	display: grid; place-items: center; width: 56px; height: 56px; margin: 0 auto 16px; border-radius: 50%;
	background: #fff; color: var(--rr-red); font-weight: 800; font-size: 22px;
	box-shadow: 0 0 0 6px #fff, 0 0 0 8px rgba(235, 35, 41, .25), var(--rr-shadow);
}
.rr-steps li:first-child .rr-steps__num { background: var(--rr-red); color: #fff; }
.rr-steps.is-drawn li:first-child .rr-steps__num { animation: rr-pulse-red 2.2s ease-out 1.4s infinite; }
.rr-steps__title { display: block; margin-bottom: 6px; font-family: Raleway, sans-serif; font-weight: 700; font-size: 19px; color: var(--rr-ink); }
.rr-steps__text { display: block; font-size: 15px; line-height: 1.55; color: var(--rr-muted); }
.rr-insurance {
	display: flex; align-items: center; gap: 18px; margin-top: 48px; padding: 20px 24px; border-radius: var(--rr-radius);
	background: var(--rr-surface-2); border: 1px solid var(--rr-line); font-size: 17px; color: var(--rr-text);
}
.rr-insurance > div { flex: 1; }
.rr-insurance strong { color: var(--rr-ink); }
.rr-insurance__icon { position: relative; flex: none; width: 48px; height: 48px; border-radius: 12px; background: var(--rr-red); }
.rr-insurance__icon::after {
	content: ""; position: absolute; inset: 11px; background: #fff;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zm-4.5 8.5-2-2 1.4-1.4.6.6 3.1-3.1 1.4 1.4-4.5 4.5z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zm-4.5 8.5-2-2 1.4-1.4.6.6 3.1-3.1 1.4 1.4-4.5 4.5z'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Image + text sections */
.rr-split.rr-alt { background: var(--rr-surface-2); }
.rr-split p { font-size: 17px; line-height: 1.7; max-width: 68ch; }
.rr-split .rr-eyebrow { display: inline-flex; align-items: center; gap: .7em; }
.rr-split .rr-eyebrow::before { content: ""; width: 28px; height: 2px; background: currentColor; border-radius: 2px; }
.rr-split .elementor-widget-image { position: relative; }
.rr-split .elementor-widget-image::before {
	content: ""; position: absolute; z-index: 0; width: 46%; height: 60%; right: -22px; bottom: -22px; border-radius: var(--rr-radius);
	background-image: radial-gradient(rgba(235, 35, 41, .55) 1.6px, transparent 1.7px); background-size: 14px 14px;
}
.rr-split.rr-alt .elementor-widget-image::before { right: auto; left: -22px; }
.rr-split .elementor-widget-image img { position: relative; z-index: 1; display: block; width: 100%; border-radius: var(--rr-radius); box-shadow: var(--rr-shadow-lg); transition: transform .8s var(--rr-ease); }
.rr-split .elementor-widget-image :is(.elementor-widget-container, a) { position: relative; z-index: 1; display: block; overflow: hidden; border-radius: var(--rr-radius); }
.rr-split .elementor-widget-image:hover img { transform: scale(1.04); }
.rr-stats { display: flex; flex-wrap: wrap; gap: 14px; margin: 26px 0; padding: 0; list-style: none; }
.rr-stats li {
	position: relative; overflow: hidden; flex: 1 1 120px; margin: 0; padding: 16px 18px; border-radius: var(--rr-radius-sm);
	background: #fff; box-shadow: var(--rr-shadow); transition: transform .25s var(--rr-ease);
}
.rr-stats li::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: linear-gradient(180deg, var(--rr-red), var(--rr-red-light)); }
.rr-stats li:hover { transform: translateY(-3px); }
.rr-stats strong { display: block; font-size: 28px; line-height: 1.1; color: var(--rr-red); font-weight: 800; font-variant-numeric: tabular-nums; }
.rr-stats span { display: block; margin-top: 4px; font-size: 14px; line-height: 1.35; color: var(--rr-muted); }
.rr-checklist { list-style: none; margin: 0 0 26px; padding: 0; counter-reset: rr-step; }
.rr-checklist li {
	counter-increment: rr-step; position: relative; margin: 0 0 12px; padding: 12px 16px 12px 58px; border-radius: 12px;
	background: #fff; box-shadow: var(--rr-shadow); font-size: 16px; line-height: 1.5;
}
.rr-checklist li::before {
	content: counter(rr-step); position: absolute; left: 14px; top: 50%; transform: translateY(-50%);
	display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%;
	background: rgba(235, 35, 41, .12); color: var(--rr-red); font-weight: 800; font-size: 15px;
}
.rr-checklist strong { color: var(--rr-ink); }
.rr-checklist li:last-child { background: var(--rr-ink); color: rgba(255, 255, 255, .88); }
.rr-checklist li:last-child strong { color: #fff; }
.rr-checklist li:last-child::before { background: var(--rr-red); color: #fff; }

/* Reviews band */
.rr-testimonials {
	position: relative; margin-top: -56px !important;
	clip-path: polygon(0 56px, 100% 0, 100% 100%, 0 100%);
	background:
		radial-gradient(600px 300px at 12% 20%, rgba(235, 35, 41, .22), transparent 70%),
		radial-gradient(500px 280px at 90% 85%, rgba(235, 35, 41, .16), transparent 70%),
		var(--rr-ink);
}
.rr-testimonials .rr-eyebrow { display: block; text-align: center; }
.rr-testimonials h2 { color: #fff !important; font-size: var(--rr-section-h2) !important; text-align: center; margin: 0 !important; font-weight: 700 !important; }
.rr-rating-line { text-align: center; margin: 8px auto 0 !important; color: rgba(255, 255, 255, .85); font-size: 16px; }
.rr-rating-line a { color: #fff; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.rr-testimonials .rr-t-card {
	position: relative; border-radius: var(--rr-radius) !important; background: #fff !important; box-shadow: var(--rr-shadow);
	transition: transform .3s var(--rr-ease), box-shadow .3s var(--rr-ease);
}
.rr-testimonials .rr-t-card::before {
	content: "\201C"; position: absolute; top: -6px; right: 18px; pointer-events: none;
	font-family: Georgia, serif; font-size: 96px; line-height: 1; color: rgba(235, 35, 41, .14);
}
.rr-testimonials .rr-more-wrap::after { background: linear-gradient(rgba(255, 255, 255, 0), #fff); }
.rr-testimonials .e-loop-item:hover .rr-t-card { transform: translateY(-4px); box-shadow: 0 20px 44px rgba(0, 0, 0, .35); }
.rr-testimonials .swiper { padding: 10px 0 24px; }
.rr-testimonials .swiper-pagination-bullet { background: rgba(255, 255, 255, .35); opacity: 1; }
.rr-testimonials .swiper-pagination-bullet-active { background: var(--rr-red); }

/* Service area */
.rr-area__grid { display: grid; grid-template-columns: 1fr 1.3fr; gap: 50px; align-items: center; }
.rr-area h2 { font-size: var(--rr-section-h2) !important; line-height: 1.15 !important; font-weight: 700 !important; margin: 0 0 .4em !important; }
.rr-area__grid p:last-child { margin: 0; }
.rr-towns { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.rr-towns li {
	position: relative; margin: 0; padding: 9px 16px 9px 34px; border-radius: 999px;
	background: var(--rr-surface-2); border: 1px solid var(--rr-line); font-size: 15px; font-weight: 600; color: var(--rr-ink);
}
.rr-towns li::before {
	content: ""; position: absolute; left: 13px; top: 50%; width: 12px; height: 12px; transform: translateY(-50%); background: var(--rr-red);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.3 7 13 7 13s7-7.7 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.3 7 13 7 13s7-7.7 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.rr-towns li:last-child { padding-left: 16px; background: none; border-style: dashed; color: var(--rr-muted); }
.rr-towns li:last-child::before { display: none; }
.rr-towns li:last-child a { color: var(--rr-red); font-weight: 700; text-decoration: none; }
.rr-towns li:last-child a::after { content: " \2192"; }
/* On a location page most towns have no page of their own yet, so only a pill that actually
   holds a link is styled as one. The rest stay plain labels and never look clickable. */
.rr-towns li { transition: border-color .15s ease, transform .15s ease; }
.rr-towns li:has(a) { background: #fff; border-color: rgba(206, 32, 39, .35); }
.rr-towns li:has(a):hover { border-color: var(--rr-red); transform: translateY(-2px); }
.rr-towns li a { color: var(--rr-red); font-weight: 700; text-decoration: none; }
.rr-towns li a:hover { text-decoration: underline; }
.rr-industrial {
	display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 50px; padding: 26px 28px 26px 32px; border-radius: var(--rr-radius);
	background: linear-gradient(110deg, var(--rr-ink) 55%, #3a1215 100%); color: rgba(255, 255, 255, .85) !important; text-decoration: none !important;
	font-size: 17px; line-height: 1.5; box-shadow: inset 6px 0 0 var(--rr-red), var(--rr-shadow-lg);
	transition: transform .2s var(--rr-ease), box-shadow .2s;
}
.rr-industrial:hover { transform: translateY(-3px); box-shadow: inset 6px 0 0 var(--rr-red), 0 24px 50px rgba(235, 35, 41, .28); }
.rr-industrial strong { display: block; margin-bottom: 2px; color: #fff; font-size: 21px; font-weight: 800; letter-spacing: -0.01em; }
.rr-industrial__go {
	flex: none; padding: 13px 22px; border-radius: 999px; background: var(--rr-red); color: #fff; font-weight: 800; font-size: 16px;
	box-shadow: 0 10px 26px rgba(235, 35, 41, .4); transition: background .2s, color .2s;
}
.rr-industrial:hover .rr-industrial__go { background: #fff; color: var(--rr-ink); }
.rr-industrial__go::after { content: " \2197"; }

/* FAQ (two Elementor nested accordions with the class rr-faq-acc) */
.rr-faq-section { background: var(--rr-surface-2); }
.rr-faq__group-title .elementor-heading-title {
	margin: 0 0 4px; font-family: Montserrat, sans-serif; font-size: 13px; line-height: 1.4; font-weight: 700;
	letter-spacing: .12em; text-transform: uppercase; color: var(--rr-muted) !important;
}
.rr-faq-acc .e-n-accordion { display: grid; gap: 12px; }
.rr-faq-acc .e-n-accordion-item { border-radius: 12px; background: #fff; box-shadow: var(--rr-shadow); overflow: hidden; }
.rr-faq-acc .e-n-accordion-item-title {
	position: relative; padding: 20px 56px 20px 22px !important; border: 0 !important; background: none !important; cursor: pointer;
}
.rr-faq-acc .e-n-accordion-item-title-text {
	font-family: Raleway, sans-serif; font-weight: 700; font-size: 18px; line-height: 1.35; color: var(--rr-ink);
}
.rr-faq-acc .e-n-accordion-item-title:hover .e-n-accordion-item-title-text { color: var(--rr-red); }
.rr-faq-acc .e-n-accordion-item-title-icon { display: none !important; }
.rr-faq-acc .e-n-accordion-item-title::after {
	content: ""; position: absolute; right: 22px; top: 50%; width: 12px; height: 12px; margin-top: -8px;
	border-right: 2.5px solid var(--rr-red); border-bottom: 2.5px solid var(--rr-red);
	transform: rotate(45deg); transition: transform .25s var(--rr-ease), margin .25s var(--rr-ease);
}
.rr-faq-acc .e-n-accordion-item[open] > .e-n-accordion-item-title::after { transform: rotate(225deg); margin-top: -2px; }
.rr-faq-acc .e-n-accordion-item > .e-con { padding: 0 22px 20px !important; border: 0 !important; }
.rr-faq-acc .e-n-accordion-item > .e-con p { margin: 0; font-size: 16px; line-height: 1.65; color: var(--rr-text); }

/* Emergency call band */
.rr-cta-band {
	position: relative; overflow: hidden;
	background:
		repeating-linear-gradient(135deg, rgba(255, 255, 255, .05) 0 2px, transparent 2px 22px),
		radial-gradient(700px 300px at 85% 50%, rgba(255, 255, 255, .18), transparent 70%),
		linear-gradient(120deg, var(--rr-red) 0%, #a9131a 100%);
}
.rr-cta { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 28px; }
.rr-cta h2 { color: #fff !important; font-size: clamp(28px, 2.6vw, 40px) !important; line-height: 1.15 !important; margin: 0 0 .25em !important; font-weight: 700 !important; }
.rr-cta p { margin: 0; color: rgba(255, 255, 255, .9); font-size: 18px; }
.rr-cta__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.rr-cta .rr-btn--primary { background: #fff; color: var(--rr-red) !important; }
.rr-cta .rr-btn--primary:hover { background: var(--rr-ink); color: #fff !important; box-shadow: 0 10px 24px rgba(0, 0, 0, .25); }
.rr-cta .rr-btn--phone { animation: rr-ring 2.4s ease-out infinite; }

/* Highlighted phrases in headings (underline drawn in by site.js) */
.rr-hl {
	position: relative; z-index: 0; white-space: nowrap; padding-bottom: .12em;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 20' preserveAspectRatio='none'%3E%3Cpath d='M3 14c52-7 112-10 172-9 42 1 82 3 122 7' fill='none' stroke='%23eb2329' stroke-width='6' stroke-linecap='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: 0 100%; background-size: 0% .38em;
	transition: background-size 1.1s var(--rr-ease) .15s;
}
.rr-hl.is-drawn, html:not(.rr-motion) .rr-hl { background-size: 100% .38em; }

/* Back to top and the phone call bar
   ========================================================================== */

.rr-toplink {
	position: fixed; bottom: 20px; right: 20px; z-index: 90; display: grid; place-items: center; width: 50px; height: 50px;
	border-radius: 6px; background: rgba(0, 0, 0, .3); color: #fff !important;
	opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity .3s, visibility .3s, transform .3s, background .2s;
}
.rr-toplink svg { width: 22px; height: 22px; }
.rr-toplink:hover { background: rgba(0, 0, 0, .5); }
.rr-scrolled-far .rr-toplink { opacity: 1; visibility: visible; transform: none; }
/* The chat button sits bottom right, so back-to-top moves left (homepage design) */
.rr-site .rr-toplink { right: auto; left: 20px; border-radius: 999px; background: rgba(20, 23, 28, .9); }
.rr-home .rr-toplink::after {
	content: ""; position: absolute; inset: -4px; border-radius: 50%; pointer-events: none;
	background: conic-gradient(var(--rr-red) calc(var(--rr-scroll, 0) * 1turn), rgba(255, 255, 255, .15) 0);
	-webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
	mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
}
.rr-mobile-bar { display: none; }

/* Motion
   ========================================================================== */

.rr-motion .rr-reveal {
	opacity: 0; transform: translateY(26px);
	transition: opacity .7s var(--rr-ease), transform .7s var(--rr-ease); transition-delay: var(--rr-delay, 0ms);
}
.rr-motion .rr-reveal.is-in { opacity: 1; transform: none; }
.rr-hero h1.rr-words .rr-word {
	/* Starts partly visible so the headline still counts as painted right away (Largest Contentful Paint). */
	display: inline-block; opacity: .35; transform: translateY(.3em);
	animation: rr-word-in .8s var(--rr-ease) forwards; animation-delay: calc(120ms + var(--i) * 70ms);
}
.rr-hero .rr-lead, .rr-hero__ctas, .rr-hero .rr-rating, .rr-hero .rr-trust, .rr-callback { animation: rr-fade-up .9s var(--rr-ease) both; }
.rr-callback { animation-delay: .45s; }
.rr-hero__ctas { animation-delay: .55s; }
.rr-hero .rr-lead { animation-delay: .7s; }
.rr-hero .rr-rating { animation-delay: .82s; }
.rr-hero .rr-trust { animation-delay: .92s; }

@keyframes rr-slow-zoom { from { scale: 1; } to { scale: 1.08; } }
@keyframes rr-word-in { to { opacity: 1; transform: none; } }
@keyframes rr-fade-up { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
@keyframes rr-pulse-white { 0% { box-shadow: 0 0 0 0 rgba(255, 255, 255, .75); } 80%, 100% { box-shadow: 0 0 0 9px rgba(255, 255, 255, 0); } }
@keyframes rr-pulse-red {
	0% { box-shadow: 0 0 0 6px #fff, 0 0 0 8px rgba(235, 35, 41, .25), 0 0 0 8px rgba(235, 35, 41, .5); }
	100% { box-shadow: 0 0 0 6px #fff, 0 0 0 8px rgba(235, 35, 41, .25), 0 0 0 22px rgba(235, 35, 41, 0); }
}
@keyframes rr-ring { 0% { box-shadow: 0 0 0 0 rgba(255, 255, 255, .6); } 70%, 100% { box-shadow: 0 0 0 16px rgba(255, 255, 255, 0); } }

@media (prefers-reduced-motion: reduce) {
	.rr-home *, .rr-home *::before, .rr-home *::after { animation: none !important; transition: none !important; }
	.rr-progress { display: none; }
}

/* Tablet
   ========================================================================== */

@media (max-width: 1024px) {
	.rr-cards { grid-template-columns: 1fr 1fr; }
	.rr-steps { grid-template-columns: 1fr 1fr; row-gap: 34px; }
	.rr-steps::before { display: none; }
	.rr-area__grid { grid-template-columns: 1fr; gap: 24px; }
}

/* Phone
   ========================================================================== */

@media (max-width: 767px) {
	.rr-hide-sm { display: none; }
	.rr-hero__ctas .rr-btn { flex: 1 1 100%; }
	.rr-trust { flex-direction: column; gap: 8px; }
	.rr-callback { padding: 20px 16px 16px !important; }
	.rr-callback__title .elementor-heading-title { font-size: 22px; margin-bottom: 12px; }

	/* Service cards become compact rows with a chevron */
	.rr-services { margin-top: 0 !important; }
	.rr-cards { grid-template-columns: 1fr; gap: 10px; }
	.rr-card {
		display: grid; grid-template-columns: 48px 1fr 18px; align-items: center; column-gap: 14px; row-gap: 2px; padding: 16px 16px 16px 14px;
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23eb2329' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E");
		background-repeat: no-repeat; background-position: right 14px center; background-size: 18px;
	}
	.rr-card::after, .rr-card__more { display: none; }
	.rr-card__icon { grid-row: span 2; width: 48px; height: 48px; margin: 0; }
	.rr-card__title { font-size: 18px; }
	.rr-card__text { grid-column: 2; font-size: 14px; line-height: 1.4; }

	.rr-section-head { margin-bottom: 28px; }
	.rr-section-head p { font-size: 16px; }
	.rr-steps { grid-template-columns: 1fr; gap: 18px; }
	.rr-steps li { display: grid; grid-template-columns: 44px 1fr; column-gap: 14px; padding: 0; text-align: left; }
	.rr-steps__num { grid-row: span 2; margin: 0; width: 44px; height: 44px; font-size: 18px; box-shadow: 0 0 0 4px #fff, 0 0 0 6px rgba(235, 35, 41, .25); }
	.rr-steps__title { font-size: 17px; margin-bottom: 2px; }
	.rr-steps__text { font-size: 14px; }
	.rr-insurance { flex-wrap: wrap; gap: 12px; margin-top: 28px; padding: 16px; font-size: 15px; }
	.rr-insurance > div { flex: 1 1 200px; }
	.rr-insurance__icon { width: 40px; height: 40px; }
	.rr-insurance__icon::after { inset: 9px; }
	.rr-insurance .rr-btn { width: 100%; }

	.rr-split .elementor-widget-image::before { right: -10px; bottom: -12px; }
	.rr-split.rr-alt .elementor-widget-image::before { left: -10px; }
	.rr-home .rr-section-title .elementor-heading-title, .rr-area h2, .rr-section-head h2, .rr-testimonials h2 { font-size: 28px !important; }
	.rr-split p { font-size: 16px; line-height: 1.6; }
	.rr-checklist li { padding: 10px 12px 10px 50px; font-size: 15px; margin-bottom: 8px; }
	.rr-checklist li::before { left: 12px; width: 26px; height: 26px; font-size: 13px; }

	.rr-testimonials { margin-top: -28px !important; clip-path: polygon(0 28px, 100% 0, 100% 100%, 0 100%); }

	.rr-towns { gap: 6px; }
	.rr-towns li { padding: 6px 11px 6px 26px; font-size: 13px; }
	.rr-towns li::before { left: 10px; width: 10px; height: 10px; }
	.rr-towns li:last-child { padding-left: 11px; }
	.rr-industrial { flex-direction: column; align-items: stretch; gap: 16px; margin-top: 28px; padding: 16px; font-size: 15px; }
	.rr-industrial__go { text-align: center; }

	.rr-faq-acc .e-n-accordion-item-title { padding: 16px 48px 16px 16px !important; }
	.rr-faq-acc .e-n-accordion-item-title-text { font-size: 16px; }
	.rr-faq-acc .e-n-accordion-item-title::after { right: 18px; }
	.rr-faq-acc .e-n-accordion-item > .e-con { padding: 0 16px 16px !important; }
	.rr-faq-acc .e-n-accordion-item > .e-con p { font-size: 15px; }

	.rr-cta { flex-direction: column; align-items: stretch; text-align: left; }
	.rr-cta__actions .rr-btn { flex: 1 1 100%; }

	/* Call bar slides up once the hero (which has the same buttons) is scrolled past */
	.rr-mobile-bar {
		display: grid; grid-template-columns: 1.3fr 1fr; gap: 8px;
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 1000;
		padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
		background: rgba(20, 23, 28, .96); box-shadow: 0 -6px 20px rgba(0, 0, 0, .25);
		transform: translateY(110%); transition: transform .35s var(--rr-ease);
	}
	body.rr-past-hero .rr-mobile-bar { transform: none; }
	.rr-mobile-bar a {
		display: flex; align-items: center; justify-content: center; min-height: 48px;
		border-radius: 999px; font-weight: 700; font-size: 16px; text-decoration: none; color: #fff;
	}
	.rr-mobile-bar__call { background: var(--rr-red); }
	.rr-mobile-bar__callback { box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .6); }
	body.rr-has-callbar { padding-bottom: 72px; }
	.rr-site .rr-toplink { left: 12px; }
	.rr-has-callbar .rr-toplink,
	body.rr-has-callbar .a1ai-global-chatbot-container[class*="a1ai-position-b"] { bottom: 84px !important; transition: bottom .35s var(--rr-ease), opacity .3s, visibility .3s; }
	body.rr-has-callbar:not(.rr-past-hero) .rr-toplink,
	body.rr-has-callbar:not(.rr-past-hero) .a1ai-global-chatbot-container[class*="a1ai-position-b"] { bottom: 16px !important; }

	/* Shorter homepage on phones: drop the parts that repeat something nearby. */
	.rr-trust, .rr-mini-review, .rr-callback__sub, .rr-stats, .rr-now-photo { display: none !important; }

	/* No slow zoom or parallax on phones: saves battery and keeps scrolling smooth. */
	.rr-hero .elementor-motion-effects-layer { animation: none; }
	.rr-hero h1 { font-size: 34px !important; }
	.rr-hero .rr-eyebrow { margin-bottom: .7em !important; }
	.rr-hero__ctas { margin-bottom: 1.2em; }
	.rr-hero .rr-lead { font-size: 17px; margin-bottom: 1.2em; }
	.rr-rating { margin-bottom: 0; font-size: 14px; }

	/* Bigger tap areas for inline links (padding extends the target without moving the text) */
	.rr-callback__foot a, .rr-rating-line a, .rr-towns li:last-child a { display: inline-block; padding: 12px 4px; margin: -12px -4px; }
	.rr-more-toggle { padding: 10px 8px; }
}

/* Fixes after the first visual comparison
   ========================================================================== */

/* Hello's reset styles every <button>; the Show More toggle is a plain text link */
.rr-more-toggle, .rr-more-toggle:hover, .rr-more-toggle:focus {
	min-height: 0; border: 0 !important; border-radius: 0; background: none !important; box-shadow: none;
	text-transform: none; font-weight: 400;
}
.rr-more-toggle:focus-visible { outline: 2px solid var(--rr-red); outline-offset: 2px; }
.rr-more-wrap.is-short::after { display: none; }
.rr-nav .elementor-nav-menu--main .sub-arrow { display: none; }
.rr-more-toggle { padding: 0 !important; line-height: 1.4; font-weight: 400 !important; color: var(--rr-red) !important; }
.rr-more-toggle:hover { color: var(--rr-dark) !important; }
.rr-more-toggle[hidden] { display: none !important; }

/* Dark sections (Impreza "footer" color scheme, e.g. Contact Us) */
.rr-scheme-footer { color: #bbb; }
.rr-scheme-footer :is(h1, h2, h3, h4, h5, h6, .elementor-heading-title) { color: #ccc; }
.rr-scheme-footer a { color: #fff; }
.rr-scheme-footer a:hover { color: var(--rr-red); }

/* Contact details with round icons (Impreza "Contacts" element) */
.rr-contacts .elementor-icon-list-item { align-items: center !important; }
.rr-contacts .elementor-icon-list-item:not(:last-child) { margin-bottom: 1.2rem; }
.rr-contacts .elementor-icon-list-icon {
	display: grid !important; place-items: center; flex: none; width: 50px; height: 50px; margin-right: 18px;
	border: 2px solid var(--rr-red); border-radius: 50%;
}
.rr-contacts .elementor-icon-list-icon svg, .rr-contacts .elementor-icon-list-icon i { width: 18px; font-size: 18px; fill: var(--rr-red); color: var(--rr-red); }
.rr-contacts .elementor-icon-list-text { font-size: 16px; color: inherit; }
.rr-scheme-footer .rr-contacts a .elementor-icon-list-text { color: #fff; }

/* Pages not built with Elementor (Terms, Careers, Privacy) get Impreza's section spacing */
body:not(.elementor-page) main.site-main { padding-top: 4rem; padding-bottom: 4rem; }
@media (max-width: 767px) { body:not(.elementor-page) main.site-main { padding: 2rem 1.5rem; } }
.rr-nav nav.elementor-nav-menu--dropdown .sub-arrow svg { fill: #fff; }
.rr-nav nav.elementor-nav-menu--dropdown .sub-arrow i { color: #fff; }

/* Policy links in the footer bottom bar. The floating Q & A button sits 20px from the right edge
   and is about 140px wide, so the links keep 180px clear of the viewport edge. */
.rr-footer-links p { display: flex; gap: 22px; }
.rr-footer-links a { color: #a1a1aa; text-decoration: none; transition: color .15s; }
.rr-footer-links a:hover { color: #fff; }
@media (min-width: 768px) {
	.rr-footer-links { margin-right: max(0px, calc(180px - max(40px, (100vw - 1140px) / 2))); }
}
@media (max-width: 767px) {
	.rr-footer-bottom .rr-footer-links p { padding-right: 0; }
}

/* Policy pages */
.rr-policy-page .elementor-widget-heading h1 { font-size: clamp(34px, 3.4vw, 48px); }
.rr-policy__updated { color: var(--rr-muted); font-size: 15px; }
.rr-policy h2 { margin-top: 2.2rem; padding-top: 0; font-size: 26px; font-weight: 700; }
.rr-policy h3 { margin-top: 1.4rem; padding-top: 0; font-size: 20px; font-weight: 700; }
.rr-policy, .rr-policy__intro { font-size: 17px; line-height: 1.7; }
.rr-policy li { margin-bottom: .6rem; }
.rr-policy-list { list-style: none; padding: 0 !important; margin: 28px 0 !important; display: grid; gap: 14px; }
.rr-policy-list li { margin: 0; }
.rr-policy-list a {
	display: block; padding: 20px 24px; border-radius: var(--rr-radius); background: #fff; color: var(--rr-text);
	box-shadow: var(--rr-shadow); border-left: 4px solid var(--rr-red); text-decoration: none;
	transition: transform .2s var(--rr-ease), box-shadow .2s var(--rr-ease);
}
.rr-policy-list a:hover { transform: translateY(-2px); box-shadow: var(--rr-shadow-lg); color: var(--rr-text); }
.rr-policy-list strong { display: block; margin-bottom: 4px; color: var(--rr-ink); font-size: 19px; }
.rr-policy-list span { display: block; font-size: 16px; line-height: 1.55; color: var(--rr-muted); }

/* Inner pages (body class rr-inner)
   The homepage's type, buttons, cards and red accents at a calmer volume: shorter photo headers,
   no progress bar, scroll animations or dotted image backdrops. Scoped to the page's or blog post's
   own content (data-elementor-type "wp-page" or "wp-post") so the header and footer templates are
   untouched.
   ========================================================================== */

.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) { --rr-inner-h2: clamp(28px, 2.4vw, 36px); --rr-inner-h3: clamp(22px, 1.8vw, 28px); }

/* Type: bold, tight headings in the homepage ink color; body copy a size up */
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) :where(h1, h2, h3, h4) { letter-spacing: -0.015em; }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-heading :is(h1, h2, h3, h4).elementor-heading-title { font-weight: 700; text-wrap: balance; }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor { color: var(--rr-text); font-size: 17px; line-height: 1.7; }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor :is(h2, h3, h4) { font-weight: 700; color: var(--rr-ink); line-height: 1.2; text-wrap: balance; }
/* Section headings in copy are H2s for the outline but sit a size under the band and section titles */
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor h2 { font-size: clamp(24px, 2vw, 30px); }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor :is(h3, h4) { font-size: var(--rr-inner-h3); }
/* A short red rule over the heading that opens a block of copy (the homepage's eyebrow dash) */
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor:not(.rr-policy) :is(h2, h3, h4):first-child::before {
	content: ""; display: block; width: 40px; height: 3px; margin-bottom: 16px; border-radius: 2px;
	background: linear-gradient(90deg, var(--rr-red), var(--rr-red-light));
}
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor strong { color: var(--rr-ink); }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor a strong,
.rr-inner .rr-scheme-dark .elementor-widget-text-editor strong,
.rr-inner .rr-scheme-footer .elementor-widget-text-editor strong { color: inherit; }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor a:not(.elementor-button) { font-weight: 600; text-decoration: underline; text-decoration-thickness: 1.5px; text-underline-offset: 3px; }

/* Bulleted lists get the homepage's red check marks (policy pages keep plain bullets) */
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor:not(.rr-policy) ul { list-style: none; padding-left: 0; }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor:not(.rr-policy) ul > li { position: relative; margin-bottom: .75rem; padding-left: 34px; }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor:not(.rr-policy) ul > li::before {
	content: ""; position: absolute; left: 0; top: .2em; width: 22px; height: 22px; border-radius: 50%;
	background: var(--rr-red) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 13px no-repeat;
}
.rr-inner .rr-scheme-dark .elementor-widget-text-editor:not(.rr-policy) ul > li::before { background-color: rgba(255, 255, 255, .22); }

/* Photos: rounded with the homepage card shadow and a slow zoom on hover */
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-image :is(.elementor-widget-container, a):has(> img) { display: block; overflow: hidden; border-radius: var(--rr-radius); box-shadow: var(--rr-shadow-lg); }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-image img { display: block; border-radius: var(--rr-radius); transition: transform .8s var(--rr-ease); }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-image:hover img { transform: scale(1.03); }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) iframe[src*="google.com/maps"] { border-radius: var(--rr-radius); box-shadow: var(--rr-shadow-lg); }

/* Buttons: the homepage pill with the lift on hover */
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-button { border-radius: 999px !important; font-weight: 700; box-shadow: 0 8px 20px rgba(235, 35, 41, .22); }
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-button:hover { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(235, 35, 41, .32); }
/* Two- and three-line buttons read better as a rounded box than a stretched pill */
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .rr-btn-style-5 .elementor-button { border-radius: var(--rr-radius-sm) !important; }

/* Photo header: shorter than the homepage hero, darkened for legible white type */
.rr-inner .rr-hero-section { position: relative; overflow: hidden; }
/* (Photo headers built from a custom HTML block, like Agents, keep their own height and shading.) */
.rr-inner .rr-hero-section.rr-full-height:not(:has(.elementor-widget-html)) { --min-height: clamp(460px, 66vh, 660px) !important; }
.rr-inner .rr-hero-section:not(:has(.elementor-widget-html))::after {
	content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background:
		radial-gradient(900px 420px at 50% 60%, rgba(10, 12, 16, .25), transparent 70%),
		linear-gradient(180deg, rgba(10, 12, 16, .62) 0%, rgba(10, 12, 16, .38) 45%, rgba(10, 12, 16, .72) 100%);
}
.rr-inner .rr-hero-section > :is(.e-con-inner, .elementor-element) { position: relative; z-index: 2; }
.rr-inner .rr-hero-section .elementor-widget-heading h1 {
	max-width: 960px; margin-left: auto !important; margin-right: auto !important;
	color: #fff !important; font-size: clamp(32px, 3.4vw, 52px) !important; line-height: 1.1 !important; font-weight: 800 !important;
	letter-spacing: -0.025em; text-shadow: 0 2px 24px rgba(0, 0, 0, .35);
}
.rr-inner .rr-hero-section :is(.elementor-widget-heading, .elementor-widget-text-editor) :is(h2, h3, h4, h5, h6, p) { color: rgba(255, 255, 255, .92) !important; text-shadow: 0 1px 12px rgba(0, 0, 0, .3); }
/* Headers without a photo (About, Get a Quote, Reviews): the same bold H1 on white */
.rr-inner .rr-first-section:not(.rr-hero-section) .elementor-widget-heading h1 { font-size: clamp(34px, 3.4vw, 52px) !important; line-height: 1.1 !important; font-weight: 800 !important; letter-spacing: -0.025em; color: var(--rr-ink); }
.rr-inner .rr-scheme-footer.rr-first-section h1 { color: #fff; }

/* Breadcrumbs (functions.php puts them above the H1) */
.rr-crumbs {
	display: inline-flex; flex-wrap: wrap; align-items: center; margin: 0 0 18px;
	font-size: 13px; line-height: 1.4; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--rr-muted);
}
.rr-crumbs__sep {
	display: inline-block; width: 6px; height: 6px; margin: 0 10px 1px 8px;
	border-top: 2px solid var(--rr-red); border-right: 2px solid var(--rr-red); transform: rotate(45deg);
}
nav.rr-crumbs a { color: inherit; text-decoration: none !important; transition: color .15s; }
.rr-crumbs a:hover { color: var(--rr-red); }
.rr-crumbs .breadcrumb_last { color: var(--rr-red); }
/* On a photo or dark header the trail sits in a frosted pill, like the homepage rating badge */
:is(.rr-hero-section, .rr-scheme-footer) .rr-crumbs {
	padding: 7px 14px; border-radius: 999px; color: rgba(255, 255, 255, .85);
	background: rgba(255, 255, 255, .1); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .18);
}
:is(.rr-hero-section, .rr-scheme-footer) .rr-crumbs a:hover,
:is(.rr-hero-section, .rr-scheme-footer) .rr-crumbs .breadcrumb_last { color: #fff; }

/* The red band under the photo header: the homepage emergency band's texture */
.rr-inner .rr-scheme-dark {
	background-image:
		repeating-linear-gradient(135deg, rgba(255, 255, 255, .05) 0 2px, transparent 2px 22px),
		radial-gradient(700px 300px at 85% 50%, rgba(255, 255, 255, .16), transparent 70%),
		linear-gradient(120deg, var(--rr-red) 0%, #a9131a 100%);
}
.rr-inner .rr-scheme-dark .elementor-widget-heading h2.elementor-heading-title { font-size: var(--rr-inner-h2); line-height: 1.15; }
.rr-inner .rr-scheme-dark .elementor-widget-heading :is(h6, p).elementor-heading-title { font-family: inherit; font-size: 17px; font-weight: 500; line-height: 1.5; color: rgba(255, 255, 255, .9); }
.rr-inner .rr-scheme-dark .elementor-widget-text-editor { color: rgba(255, 255, 255, .92); }
.rr-inner .rr-scheme-dark .elementor-button { background: #fff !important; color: var(--rr-red) !important; box-shadow: 0 10px 24px rgba(0, 0, 0, .18); }
.rr-inner .rr-scheme-dark .elementor-button:hover { color: #fff !important; }

/* Dark sections (Contact Us, Thank You): the homepage reviews band's red glow */
.rr-inner .rr-scheme-footer {
	background-color: var(--rr-ink) !important;
	background-image:
		radial-gradient(600px 300px at 12% 20%, rgba(235, 35, 41, .2), transparent 70%),
		radial-gradient(500px 280px at 90% 85%, rgba(235, 35, 41, .14), transparent 70%);
}
.rr-inner .rr-scheme-footer .elementor-widget-text-editor { color: rgba(255, 255, 255, .8); }
.rr-inner .rr-scheme-footer .rr-contacts .elementor-icon-list-icon { background: rgba(235, 35, 41, .12); }

/* Reviews carousel section: white cards on the warm grey surface */
.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) > .e-con:has(.rr-testimonial-carousel) { background-color: var(--rr-surface-2); }
.rr-inner .rr-testimonial-carousel .rr-t-card {
	position: relative; border-radius: var(--rr-radius) !important; background: #fff !important; box-shadow: var(--rr-shadow);
	transition: transform .3s var(--rr-ease), box-shadow .3s var(--rr-ease);
}
.rr-inner .rr-testimonial-carousel .rr-t-card::before {
	content: "\201C"; position: absolute; top: -6px; right: 18px; pointer-events: none;
	font-family: Georgia, serif; font-size: 96px; line-height: 1; color: rgba(235, 35, 41, .12);
}
.rr-inner .rr-testimonial-carousel .e-loop-item:hover .rr-t-card { transform: translateY(-4px); box-shadow: var(--rr-shadow-lg); }
.rr-inner .rr-testimonial-carousel .rr-more-wrap::after { background: linear-gradient(rgba(255, 255, 255, 0), #fff); }
/* Room for the cards' shadow, pulled back with negative margin (see the guides carousel) */
.rr-inner .rr-testimonial-carousel .swiper { padding: 24px 32px 56px !important; margin: -24px -32px -28px; }
@media (max-width: 767px) {
	.rr-inner .rr-testimonial-carousel .swiper { padding: 16px 16px 48px !important; margin: -16px -16px -20px; }
}

/* Service page FAQ (the homepage accordion; questions are H3s under the FAQ's H2) */
.rr-inner .rr-faq__title .elementor-heading-title { margin-bottom: 28px !important; font-size: var(--rr-inner-h2); }
.rr-faq-acc h3.e-n-accordion-item-title-text { margin: 0; }

/* Related services: the homepage service cards, as many columns as there are cards */
.rr-related__title .elementor-heading-title { margin-bottom: 24px !important; font-size: var(--rr-inner-h2); }
.rr-cards--related { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
/* Blog page: Elementor Taxonomy Filter (category buttons) and a Loop Grid of the "Post Card" loop item */
.rr-blog-filter .e-filter { gap: 10px !important; flex-wrap: wrap; }
.rr-blog-filter .e-filter-item {
	min-height: 44px; padding: 10px 22px !important; border: 1.5px solid var(--rr-line) !important; border-radius: 999px !important;
	background: #fff !important; color: var(--rr-ink) !important; font-size: 15px !important; font-weight: 700 !important;
	line-height: 1.2; text-transform: capitalize; cursor: pointer; transition: background .2s, border-color .2s, color .2s, box-shadow .2s;
}
.rr-blog-filter .e-filter-item:hover { border-color: var(--rr-red) !important; color: var(--rr-red) !important; }
.rr-blog-filter .e-filter-item[aria-pressed="true"] {
	border-color: var(--rr-red) !important; background: var(--rr-red) !important; color: #fff !important; box-shadow: 0 8px 20px rgba(235, 35, 41, .28);
}
.rr-blog-filter .e-filter-item:focus-visible { outline: 2px solid var(--rr-red); outline-offset: 3px; }
/* Post cards: the homepage service card look. The title link covers the whole card. */
.rr-post-card {
	position: relative; height: 100%; overflow: hidden; border-radius: var(--rr-radius); background: #fff; box-shadow: var(--rr-shadow-lg);
	transition: transform .25s var(--rr-ease), box-shadow .25s var(--rr-ease);
}
.rr-post-card::before {
	content: ""; position: absolute; left: 0; right: 0; top: 0; z-index: 2; height: 4px; pointer-events: none;
	background: linear-gradient(90deg, var(--rr-red), var(--rr-red-light), var(--rr-red));
}
.rr-post-card:hover { transform: translateY(-4px); box-shadow: 0 4px 8px rgba(20, 23, 28, .08), 0 26px 50px rgba(20, 23, 28, .18); }
.rr-post-card .rr-post-card__image { overflow: hidden; }
.rr-post-card .rr-post-card__image :is(.elementor-widget-container, a):has(> img) { border-radius: 0 !important; box-shadow: none !important; }
.rr-post-card .rr-post-card__image img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 0 !important; transition: transform .8s var(--rr-ease); }
.rr-post-card:hover .rr-post-card__image img { transform: scale(1.04); }
.rr-post-card__body { flex: 1 1 auto; }
.rr-post-card__meta .elementor-icon-list-items { gap: 4px 14px; }
.rr-post-card__meta .elementor-icon-list-text { font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--rr-muted); }
.rr-post-card__meta .elementor-post-info__item--type-terms { color: var(--rr-red); }
.rr-post-card__title .elementor-heading-title { font-size: 21px !important; line-height: 1.3 !important; font-weight: 700; }
.rr-post-card__title a { color: var(--rr-ink); text-decoration: none; }
.rr-post-card__title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
/* Elementor makes every widget and container position: relative, which would keep the link's
   overlay inside the title; between the link and the card they are static instead. */
.rr-post-card .rr-post-card__body, .rr-post-card .rr-post-card__title, .rr-post-card .rr-post-card__title :is(.elementor-widget-container, .elementor-heading-title) { position: static !important; }
.rr-post-card:hover .rr-post-card__title a { color: var(--rr-red); }
.rr-post-card__excerpt .elementor-heading-title { font-family: inherit; font-size: 16px; font-weight: 400; line-height: 1.6; color: var(--rr-muted); }
.rr-post-card__more { margin-top: auto; }
.rr-post-card__more .elementor-heading-title { font-family: inherit; font-size: 15px; font-weight: 700; color: var(--rr-red); }
.rr-post-card__more .elementor-heading-title::after { content: " \2192"; }

/* Elementor's ".elementor a { box-shadow: none }" outranks .rr-card on its own */
.rr-cards > a.rr-card { box-shadow: var(--rr-shadow-lg); }
.rr-cards > a.rr-card:hover { box-shadow: 0 4px 8px rgba(20, 23, 28, .08), 0 26px 50px rgba(20, 23, 28, .18); }
.rr-card--flood { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 11l9-7 9 7M6 9.5V14M18 9.5V14M2 18.5c2.5 0 2.5-1.5 5-1.5s2.5 1.5 5 1.5 2.5-1.5 5-1.5 2.5 1.5 5 1.5'/%3E%3C/svg%3E"); }
.rr-card--emergency { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13.5 2 4 14h7l-1.5 8L19 10h-7z'/%3E%3C/svg%3E"); }
.rr-card--odor { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M3 8h11a3 3 0 1 0-3-3M3 12h15a3 3 0 1 1-3 3M3 16h7'/%3E%3C/svg%3E"); }
.rr-card--estate { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linejoin='round'%3E%3Cpath d='M3 7l9-4 9 4v10l-9 4-9-4zM3 7l9 4 9-4M12 11v10'/%3E%3C/svg%3E"); }
.rr-card--paint { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 3h14a1 1 0 0 1 1 1v1h2v6h-8v2h1a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-7a1 1 0 0 1 1-1h0v-4h8V7h-1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z'/%3E%3C/svg%3E"); }
.rr-card--siding { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linejoin='round'%3E%3Cpath d='M3 10l9-7 9 7v11H3zM3 14h18M3 17.5h18'/%3E%3C/svg%3E"); }
.rr-card--soffit { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 11l10-8 10 8M4 13.5h16M18 13.5V21M6 13.5V21'/%3E%3C/svg%3E"); }
.rr-card--handyman { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M21.4 6.6a5.5 5.5 0 0 1-7.2 6.9l-7.6 7.6a2.1 2.1 0 0 1-3-3l7.6-7.6a5.5 5.5 0 0 1 6.9-7.2L14.5 6.9l.6 2.5 2.5.6z'/%3E%3C/svg%3E"); }
.rr-card--phone { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2a1 1 0 0 1 1-.25 11.4 11.4 0 0 0 3.6.57 1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.45.57 3.57a1 1 0 0 1-.25 1z'/%3E%3C/svg%3E"); }
.rr-card--people { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='9' cy='7.5' r='3.5'/%3E%3Ccircle cx='17' cy='8.5' r='2.8'/%3E%3Cpath d='M2 19.5C2 15.9 5.1 13 9 13s7 2.9 7 6.5V21H2zM17.5 21v-1.5a8 8 0 0 0-2.1-5.4A5.6 5.6 0 0 1 22 19.3V21z'/%3E%3C/svg%3E"); }
.rr-card--doc { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 2h8l6 6v13a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zm7 1.5V9h5.5zM8 12.5v1.8h8v-1.8zm0 4v1.8h8v-1.8z'/%3E%3C/svg%3E"); }
.rr-card--pin { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7.5 7.5 0 0 0-7.5 7.5C4.5 15 12 22 12 22s7.5-7 7.5-12.5A7.5 7.5 0 0 0 12 2zm0 10.3a2.8 2.8 0 1 1 0-5.6 2.8 2.8 0 0 1 0 5.6z'/%3E%3C/svg%3E"); }
.rr-card--news { --rr-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 3h13a1 1 0 0 1 1 1v15a2 2 0 0 0 2 2H5a2 2 0 0 1-2-2V4a1 1 0 0 1 1-1zm2.5 3.5v4h4v-4zm6 .5v1.8H15V7zm0 3.2v1.8H15v-1.8zm-6 3.3v1.8H15v-1.8zm0 3.2v1.8H15v-1.8zM19 8h2v11a1 1 0 0 1-2 0z'/%3E%3C/svg%3E"); }

/* Sitemap page ([rr_sitemap], inc/sitemap.php): the groups flow into balanced columns like a masonry grid */
.rr-sitemap { columns: 3 300px; column-gap: 24px; margin-top: 12px; }
.rr-sitemap__group {
	position: relative; overflow: hidden; break-inside: avoid; margin: 0 0 24px; padding: 26px 26px 20px;
	background: var(--rr-surface); border-radius: var(--rr-radius); box-shadow: var(--rr-shadow);
}
.rr-sitemap__group::before {
	content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px;
	background: linear-gradient(90deg, var(--rr-red), var(--rr-red-light));
}
.rr-sitemap .rr-sitemap__title {
	display: flex; align-items: center; gap: 14px; margin: 0 0 14px; padding: 0;
	font-family: Raleway, sans-serif; font-size: 20px; line-height: 1.25; font-weight: 700; color: var(--rr-ink);
}
.rr-sitemap__icon {
	flex: none; position: relative; width: 44px; height: 44px; border-radius: 12px;
	background: linear-gradient(135deg, rgba(235, 35, 41, .14), rgba(235, 35, 41, .04));
}
.rr-sitemap__icon::after {
	content: ""; position: absolute; inset: 11px; background: var(--rr-red);
	-webkit-mask: var(--rr-icon) center / contain no-repeat; mask: var(--rr-icon) center / contain no-repeat;
}
.rr-sitemap ul { list-style: none; margin: 0; padding: 0; }
.rr-sitemap__list > li + li { border-top: 1px solid var(--rr-line); }
/* Whole row is the link, with a chevron that slides on hover */
.rr-sitemap a {
	display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 2px;
	color: var(--rr-text); font-size: 16px; font-weight: 600; line-height: 1.4; text-decoration: none;
	transition: color .15s, padding .2s var(--rr-ease);
}
.rr-sitemap a::after {
	content: ""; flex: none; width: 8px; height: 8px; margin-right: 4px;
	border-top: 2px solid currentColor; border-right: 2px solid currentColor; transform: rotate(45deg);
	color: var(--rr-line); transition: color .15s, margin .2s var(--rr-ease);
}
.rr-sitemap a:hover { color: var(--rr-red); padding-left: 6px; }
.rr-sitemap a:hover::after { color: var(--rr-red); margin-right: 0; }
.rr-sitemap a:focus-visible { outline: 2px solid var(--rr-red); outline-offset: 2px; border-radius: 6px; }
/* Child pages sit under their parent, indented on a thin red guide line */
.rr-sitemap__list ul { margin: -4px 0 10px 4px; padding-left: 14px; border-left: 2px solid rgba(235, 35, 41, .2); }
.rr-sitemap__list ul a { padding: 7px 2px; font-size: 15px; font-weight: 500; color: var(--rr-muted); }
/* Blog post titles are long, so they wrap as normal text, with the date underneath */
.rr-sitemap__post a { font-weight: 500; }
.rr-sitemap a small { display: block; margin-top: 2px; font-size: 13px; font-weight: 500; color: var(--rr-muted); }
/* Post count next to a category name on the blog sitemap */
.rr-sitemap__count {
	margin-left: auto; padding: 2px 10px; border-radius: 999px; font-family: Montserrat, sans-serif;
	font-size: 13px; font-weight: 700; color: var(--rr-red); background: rgba(235, 35, 41, .09);
}
/* The link at the foot of a card that opens an inner sitemap */
.rr-sitemap .rr-sitemap__more {
	justify-content: center; gap: 10px; margin-top: 12px; padding: 12px 16px; border-radius: 999px;
	background: rgba(235, 35, 41, .08); color: var(--rr-red); font-size: 15px; font-weight: 700;
}
.rr-sitemap .rr-sitemap__more::after { color: var(--rr-red); margin-right: 0; }
.rr-sitemap .rr-sitemap__more:hover { padding-left: 16px; background: var(--rr-red); color: #fff; }
.rr-sitemap .rr-sitemap__more:hover::after { color: #fff; margin-left: 4px; }
/* The blog sitemap's lists are long, so it uses two wider columns */
.rr-sitemap--wide { columns: 2 420px; }
.rr-sitemap__note { margin-top: 8px; color: var(--rr-muted); font-size: 15px; }
.rr-sitemap__note a { color: inherit; font-weight: 600; }
@media (max-width: 767px) {
	.rr-sitemap__group { margin-bottom: 16px; padding: 22px 20px 14px; }
	.rr-sitemap .rr-sitemap__title { font-size: 18px; }
}


@media (prefers-reduced-motion: reduce) {
	.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) *, .rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) *::before { transition: none !important; }
}
@media (max-width: 767px) {
	.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor { font-size: 16px; line-height: 1.6; }
	.rr-inner .rr-hero-section.rr-full-height:not(:has(.elementor-widget-html)) { --min-height: 380px !important; }
	.rr-inner .rr-first-section .elementor-widget-heading h1 { font-size: 30px !important; }
	.rr-crumbs { font-size: 11px; margin-bottom: 12px; }
	.rr-inner :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-button { white-space: normal; }
}

/* Blog posts (one per service; the section class rr-article)
   The inner-page type and lists apply; this adds the category label, a larger intro and the photo.
   ========================================================================== */

.rr-article .rr-article__eyebrow .elementor-heading-title {
	margin: 0 0 12px !important; font-family: inherit; font-size: 13px; font-weight: 700; line-height: 1.4;
	letter-spacing: .14em; text-transform: uppercase; color: var(--rr-red);
}
.rr-article .elementor-widget-heading h1.elementor-heading-title { font-size: clamp(32px, 3.2vw, 46px) !important; }
.rr-article .rr-article__lead { font-size: 19px !important; line-height: 1.65 !important; color: var(--rr-ink) !important; }
.rr-article .rr-article__image { margin: 8px 0 12px; }
.rr-article .rr-article__image img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.rr-article .rr-article__image:hover img { transform: none; }
.rr-article .rr-article__body ol { padding-left: 1.4rem; }
.rr-article .rr-article__body ol > li { margin-bottom: .6rem; padding-left: .2rem; }

/* Service pages: the "guides" carousel of that service's blog posts */
.rr-guides { background: var(--rr-surface-2); }
.rr-guides .rr-guides__title .elementor-heading-title { margin-bottom: 24px !important; font-size: var(--rr-inner-h2); }
/* The carousel hides whatever is outside its box, so it gets room for the cards shadow (!important:
   Elementor sets its own bottom padding for the dots), then the
   same amount of negative margin, which keeps the cards lined up with the title above */
.rr-guides .rr-guides-carousel .swiper { padding: 24px 32px 64px !important; margin: -24px -32px -28px; }
.rr-guides .rr-guides-carousel .swiper-slide { height: auto; }
.rr-guides .rr-guides-carousel .e-loop-item, .rr-guides .rr-guides-carousel .e-loop-item > .e-con { height: 100%; }
.rr-guides .rr-guides-carousel .swiper-pagination-bullet-active { background: var(--rr-red); }
.rr-guides .rr-guides-carousel :is(.elementor-swiper-button, .elementor-swiper-button svg) { color: var(--rr-ink); fill: var(--rr-ink); }
.rr-guides .rr-guides__all .elementor-heading-title { margin-top: 8px; font-family: inherit; font-size: 15px; font-weight: 700; }
.rr-guides .rr-guides__all a { color: var(--rr-red) !important; text-decoration: none; }
.rr-guides .rr-guides__all a::after { content: " \2192"; }

@media (max-width: 767px) {
	.rr-article .rr-article__lead { font-size: 17px !important; }
}
.rr-article .rr-article__body :is(h2, h3, h4):first-child::before { display: none; }
/* With fewer posts than slots (most services have one post for now), Elementor stretches the
   cards to fill the row. Cards keep their normal width, and the arrows and dots only show when
   there are more posts than fit. (nth-of-type, not nth-child: Elementor puts a <style> tag in the
   slide wrapper before the first slide.) */
.rr-guides .rr-guides-carousel .swiper-slide { max-width: calc((100% - 56px) / 3); }
.rr-guides .rr-guides-carousel:not(:has(.swiper-slide:nth-of-type(4))) :is(.elementor-swiper-button, .swiper-pagination) { display: none; }
@media (max-width: 1024px) {
	.rr-guides .rr-guides-carousel .swiper-slide { max-width: calc((100% - 28px) / 2); }
	.rr-guides .rr-guides-carousel:has(.swiper-slide:nth-of-type(3)) :is(.elementor-swiper-button, .swiper-pagination) { display: flex; }
}
@media (max-width: 767px) {
	.rr-guides .rr-guides-carousel .swiper-slide { max-width: none; }
	.rr-guides .rr-guides-carousel:has(.swiper-slide:nth-of-type(2)) :is(.elementor-swiper-button, .swiper-pagination) { display: flex; }
	/* Phones have a 20px page margin, so the shadow room stays inside it */
	.rr-guides .rr-guides-carousel .swiper { padding: 16px 16px 56px !important; margin: -16px -16px -20px; }
}

/* Blog post template (Theme Builder > Single Post "Blog Post"; shortcodes and inserts in inc/blog.php)
   Posts are written in the regular WordPress editor. The template adds the photo header, the
   callback card, the service box, the service cards, the call to action and "Keep reading".
   ========================================================================== */

/* Photo header: the post's featured image under a dark gradient */
.rr-post-hero { position: relative; isolation: isolate; }
.rr-post-hero::before {
	content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
	background: linear-gradient(180deg, rgba(20, 23, 28, .5) 0%, rgba(20, 23, 28, .78) 55%, rgba(20, 23, 28, .94) 100%);
}
.rr-post-hero > .e-con-inner { position: relative; z-index: 1; }
.rr-post-hero .rr-crumbs { margin: 0; color: rgba(255, 255, 255, .75); }
.rr-post-hero .rr-crumbs a:hover, .rr-post-hero .rr-crumbs .breadcrumb_last { color: #fff; }
.rr-post-chip {
	display: inline-block; padding: 6px 14px; border-radius: 999px; background: var(--rr-red); color: #fff;
	font-size: 12px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
}
.rr-post-hero .rr-post-hero__title .elementor-heading-title {
	max-width: 920px; margin: 0; color: #fff; font-size: clamp(32px, 4vw, 54px); line-height: 1.1; font-weight: 800;
	letter-spacing: -0.02em; text-wrap: balance;
}
.rr-post-meta { display: flex; flex-wrap: wrap; gap: 6px 0; margin: 0; color: rgba(255, 255, 255, .85); font-size: 15px; }
.rr-post-meta span + span::before { content: ""; display: inline-block; width: 5px; height: 5px; margin: 0 14px 2px; border-radius: 50%; background: var(--rr-red); vertical-align: middle; }
.rr-post-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; }
.rr-post-hero__actions .rr-btn { font-size: 16px; padding: .9em 1.5em; }
.rr-post-hero .rr-btn--primary { box-shadow: 0 12px 30px rgba(235, 35, 41, .45); }
/* "Get a Callback" in the header is for tablets and phones, where the card isn't beside the article */
@media (min-width: 1025px) { .rr-post-hero__actions .rr-post-hero__callback { display: none; } }

/* The AI buttons: a small sparkle icon, and a button reset so they match the links next to them */
/* button.rr-btn outranks the theme's default button border and colors */
button.rr-btn { border: 0; border-radius: 999px; cursor: pointer; font-family: inherit; }
button.rr-btn--ghost, button.rr-btn--ghost:focus { background: rgba(255, 255, 255, .08); color: #fff; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .7); }
button.rr-btn--ghost:hover { background: #fff; color: var(--rr-ink); box-shadow: none; }
.rr-btn--ai::before {
	content: ""; width: 1.05em; height: 1.05em; background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 2l1.9 5.6 5.6 1.9-5.6 1.9L10 17l-1.9-5.6-5.6-1.9 5.6-1.9zM18.5 13l.95 2.55 2.55.95-2.55.95-.95 2.55-.95-2.55-2.55-.95 2.55-.95z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 2l1.9 5.6 5.6 1.9-5.6 1.9L10 17l-1.9-5.6-5.6-1.9 5.6-1.9zM18.5 13l.95 2.55 2.55.95-2.55.95-.95 2.55-.95-2.55-2.55-.95 2.55-.95z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.rr-callback__foot .rr-link-btn {
	padding: 0; border: 0; background: none; cursor: pointer; font: inherit; font-weight: 800; color: var(--rr-red);
	text-decoration: underline; text-underline-offset: 3px;
}
.rr-callback__foot .rr-link-btn:is(:hover, :focus) { background: none; color: var(--rr-red-dark); }

/* Sticky sidebar with the callback card. Below 1025px site.js moves the card into the article. */
.rr-post-aside { position: sticky !important; top: 130px; align-self: flex-start; }
.rr-post-aside .rr-callback, .rr-post-help-slot .rr-callback { box-shadow: var(--rr-shadow-lg); animation: none; }
.rr-post-help-slot:has(.rr-callback) { margin: 12px 0 44px; }

/* Article typography. The first paragraph is the intro, a size up. */
.rr-post-content { color: var(--rr-text); font-size: 18px; line-height: 1.75; }
.rr-post-content p { margin: 0 0 1.25em; }
.rr-post-content :is(.elementor-widget-container, .elementor-widget-theme-post-content) > p:first-child,
.rr-post-content.elementor-widget > p:first-child { font-size: 21px; line-height: 1.6; font-weight: 500; color: var(--rr-ink); }
.rr-post-content :is(h2, h3, h4) { color: var(--rr-ink); font-weight: 700; line-height: 1.2; letter-spacing: -0.015em; text-wrap: balance; }
.rr-post-content h2 { margin: 2em 0 .7em; font-size: clamp(26px, 2.2vw, 32px); }
.rr-post-content h2::before {
	content: ""; display: block; width: 40px; height: 3px; margin-bottom: 16px; border-radius: 2px;
	background: linear-gradient(90deg, var(--rr-red), var(--rr-red-light));
}
.rr-post-content h3 { margin: 1.6em 0 .5em; font-size: clamp(20px, 1.6vw, 23px); }
.rr-post-content a:not(.rr-btn) { color: var(--rr-red); font-weight: 600; text-decoration: underline; text-decoration-thickness: 1.5px; text-underline-offset: 3px; }
.rr-post-content a:not(.rr-btn):hover { color: var(--rr-red-dark); }
.rr-post-content strong { color: var(--rr-ink); }
/* Bullets are red check marks; numbered lists get red number badges */
.rr-post-content ul { list-style: none; margin: 0 0 1.4em; padding: 0; }
.rr-post-content ul > li { position: relative; margin-bottom: .6em; padding-left: 34px; }
.rr-post-content ul > li::before {
	content: ""; position: absolute; left: 0; top: .25em; width: 22px; height: 22px; border-radius: 50%;
	background: var(--rr-red) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 13px no-repeat;
}
.rr-post-content ol { counter-reset: rr-step; list-style: none; margin: 0 0 1.4em; padding: 0; }
.rr-post-content ol > li { counter-increment: rr-step; position: relative; margin-bottom: .8em; padding-left: 44px; }
.rr-post-content ol > li::before {
	content: counter(rr-step); position: absolute; left: 0; top: 0; width: 30px; height: 30px; border-radius: 50%;
	display: grid; place-items: center; background: rgba(235, 35, 41, .1); color: var(--rr-red); font-size: 15px; font-weight: 800; line-height: 1;
}
/* Photos: full column width, rounded, with a small caption */
.rr-post-content figure { margin: 2em 0; }
.rr-post-content figure img { display: block; width: 100%; height: auto; border-radius: var(--rr-radius); box-shadow: var(--rr-shadow-lg); }
.rr-post-content figcaption { margin-top: 12px; font-size: 14px; line-height: 1.5; color: var(--rr-muted); text-align: center; }
.rr-post-content blockquote {
	margin: 1.8em 0; padding: 4px 0 4px 24px; border-left: 4px solid var(--rr-red);
	font-size: 21px; line-height: 1.55; font-weight: 500; color: var(--rr-ink);
}
.rr-post-content blockquote p:last-child { margin: 0; }
/* Boxes writers can add: "Key takeaways" (a box with the class rr-takeaways) and tips (rr-callout) */
.rr-post-content :is(.rr-takeaways, .rr-callout) { margin: 1.8em 0; padding: 24px 28px; border-radius: var(--rr-radius); }
.rr-post-content :is(.rr-takeaways, .rr-callout) > :last-child { margin-bottom: 0; }
.rr-post-content .rr-takeaways { background: var(--rr-surface-2); border: 1px solid var(--rr-line); }
.rr-post-content .rr-takeaways > p:first-child { margin: 0 0 .8em; font-size: 14px; font-weight: 800; line-height: 1.4; letter-spacing: .12em; text-transform: uppercase; color: var(--rr-red); }
.rr-post-content .rr-takeaways li { font-size: 17px; }
.rr-post-content .rr-callout { background: rgba(235, 35, 41, .06); border-left: 4px solid var(--rr-red); }
.rr-post-content .rr-callout :is(h2, h3) { margin-top: 0; }
.rr-post-content .rr-callout :is(h2, h3)::before { display: none; }

/* The service box in the middle of the article */
.rr-post-content .rr-post-service {
	margin: 2.4em 0; padding: 28px 30px; border-radius: var(--rr-radius); color: rgba(255, 255, 255, .88);
	background: radial-gradient(420px 200px at 100% 0%, rgba(235, 35, 41, .35), transparent 70%), var(--rr-ink);
}
.rr-post-content .rr-post-service p { margin: 0 0 .8em; font-size: 17px; line-height: 1.6; }
.rr-post-content .rr-post-service .rr-post-service__title { margin-bottom: .35em; font-family: Raleway, sans-serif; font-size: 23px; line-height: 1.25; font-weight: 800; color: #fff; }
.rr-post-content .rr-post-service a:not(.rr-btn) { color: #fff; text-decoration-color: var(--rr-red); }
.rr-post-content .rr-post-service .rr-post-service__actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 18px 0 0; }
.rr-post-service .rr-btn { font-size: 15px; padding: .85em 1.4em; }
/* Outline buttons draw their border with box-shadow, which Elementor's ".elementor a" rule removes */
[data-elementor-type="single-post"] a:is(.rr-btn--outline, .rr-btn--ghost) { color: #fff !important; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .65); }
[data-elementor-type="single-post"] a:is(.rr-btn--outline, .rr-btn--ghost):hover { background: #fff; color: var(--rr-ink) !important; box-shadow: none; }

/* "How Recoveron can help" and "Keep reading" */
.rr-post-section-title .elementor-heading-title { margin-bottom: 24px !important; font-size: clamp(26px, 2.4vw, 36px); font-weight: 700; color: var(--rr-ink); letter-spacing: -0.015em; }
/* The guides carousel styles (shared with the service pages) size their title with this */
.rr-post-related-section { --rr-inner-h2: clamp(26px, 2.4vw, 36px); background: #fff; }
/* No other articles yet: leave the section out */
.rr-post-related-section:not(:has(.e-loop-item)) { display: none; }

@media (max-width: 1024px) {
	.rr-post-aside { display: none !important; }
	.rr-post-body { flex-direction: column !important; }
}
@media (max-width: 767px) {
	.rr-post-hero__actions .rr-btn { flex: 1 1 100%; }
	.rr-post-meta { font-size: 14px; }
	/* Keeps the line to date and reading time, so it doesn't wrap with a dot at the start */
	.rr-post-meta span:first-child { display: none; }
	.rr-post-meta span:nth-child(2)::before { display: none; }
	.rr-post-content { font-size: 17px; line-height: 1.7; }
	.rr-post-content :is(.elementor-widget-container, .elementor-widget-theme-post-content) > p:first-child,
	.rr-post-content.elementor-widget > p:first-child { font-size: 19px; }
	.rr-post-content .rr-post-service { padding: 24px 20px; }
	.rr-post-service .rr-btn { flex: 1 1 100%; }
	.rr-post-content :is(.rr-takeaways, .rr-callout) { padding: 20px; }
}

/* Service page conversion layout (pilot: Mold Remediation). Reuses the homepage hero, callback
   card, steps, reviews band, service area and call-to-action band; these rules add the parts the
   homepage doesn't have and undo inner-page rules that assume a centered photo header.
   ========================================================================== */

/* Header: left-aligned white H1 (inner pages otherwise center it, or make it dark) */
.rr-inner .rr-service-hero .elementor-widget-heading h1 {
	margin: 0 0 .45em !important; color: #fff !important; font-size: clamp(34px, 3.6vw, 54px) !important;
	line-height: 1.08 !important; font-weight: 800 !important; letter-spacing: -0.025em; text-shadow: 0 2px 24px rgba(0, 0, 0, .35); text-wrap: balance;
}
.rr-service-hero .rr-crumbs {
	padding: 7px 14px; border-radius: 999px; color: rgba(255, 255, 255, .85);
	background: rgba(255, 255, 255, .1); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .18);
}
.rr-service-hero .rr-crumbs a:hover, .rr-service-hero .rr-crumbs .breadcrumb_last { color: #fff; }
.rr-hero__promise {
	max-width: 620px; margin: 0 0 1.4em; padding-left: 20px; border-left: 3px solid var(--rr-red);
	color: rgba(255, 255, 255, .92); font-size: clamp(17px, 1.35vw, 20px); font-weight: 600; line-height: 1.5;
}
/* Outline buttons draw their border with box-shadow, which Elementor's ".elementor a" rule removes */
.rr-inner :is(.rr-service-hero, .rr-cta-band) a.rr-btn--ghost { box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .7); }
.rr-inner :is(.rr-service-hero, .rr-cta-band) a.rr-btn--ghost:hover { box-shadow: none; }

/* The dark reviews band; the inner-page rule for sections with a review carousel makes them light grey */
.rr-inner [data-elementor-type="wp-page"] > .e-con.rr-testimonials { background-color: var(--rr-ink); }

/* Trust strip: four facts on the red band under the header */
.rr-facts-band { background: linear-gradient(120deg, var(--rr-red) 0%, #a9131a 100%); }
.rr-facts { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.rr-facts li { display: flex; flex-direction: column; align-items: center; text-align: center; color: #fff; }
.rr-facts li + li { border-left: 1px solid rgba(255, 255, 255, .25); }
.rr-facts strong { font-family: Raleway, sans-serif; font-size: clamp(22px, 2vw, 28px); line-height: 1.15; font-weight: 800; }
.rr-facts span { margin-top: 2px; font-size: 14px; line-height: 1.35; color: rgba(255, 255, 255, .88); }

/* "At a glance": a short, self-contained summary of the service (also the Service schema description) */
.rr-glance__box {
	position: relative; padding: 26px 30px 26px 34px; border-radius: var(--rr-radius);
	background: var(--rr-surface-2); border-left: 4px solid var(--rr-red);
}
.rr-glance__label { margin: 0 0 8px !important; font-size: 13px; font-weight: 800; line-height: 1.4; letter-spacing: .12em; text-transform: uppercase; color: var(--rr-red); }
.rr-glance__text { margin: 0 !important; font-size: 18px; line-height: 1.7; color: var(--rr-ink); }
@media (max-width: 767px) {
	.rr-glance__box { padding: 20px 20px 20px 24px; }
	.rr-glance__text { font-size: 16px; }
}

/* Location landing pages (inc/locations.php): the body is the post content */
.rr-local-content .rr-glance__box { margin: 8px 0 12px; }
.rr-local-content .rr-glance__box p { max-width: none; }
.rr-local-content .rr-local-faq { margin-top: 2.4em; }
.rr-local-content .rr-local-faq h3 {
	margin: 14px 0 0; padding: 18px 22px 6px; border-radius: var(--rr-radius) var(--rr-radius) 0 0;
	background: var(--rr-surface-2); font-size: 19px;
}
.rr-local-content .rr-local-faq h3 + p { margin: 0; padding: 0 22px 18px; border-radius: 0 0 var(--rr-radius) var(--rr-radius); background: var(--rr-surface-2); font-size: 17px; }
.rr-location-hero .rr-crumbs { margin-bottom: 14px; }
/* "<Town> by the numbers" ([rr_local_data]) */
.rr-post-content figure.rr-local-data { margin: 2.2em 0; padding: 24px 28px 18px; border-radius: var(--rr-radius); background: #fff; box-shadow: var(--rr-shadow); border-top: 4px solid var(--rr-red); }
.rr-local-data figcaption { margin: 0 0 10px; text-align: left; font-style: normal; }
.rr-local-data table { width: 100%; margin: 0; border-collapse: collapse; }
.rr-local-data th, .rr-local-data td { padding: 14px 0; border: 0; border-top: 1px solid var(--rr-line); vertical-align: top; text-align: left; background: none !important; }
.rr-local-data tr:first-child :is(th, td) { border-top: 0; }
.rr-local-data th { width: 30%; padding-right: 18px; font-size: 15px; font-weight: 800; color: var(--rr-ink); }
.rr-local-data td { font-size: 16px; line-height: 1.55; color: var(--rr-text); }
.rr-local-data td strong { font-size: 20px; color: var(--rr-red); }
.rr-local-data__src { display: block; margin-top: 4px; font-size: 13px; color: var(--rr-muted); }
.rr-post-content .rr-local-data__src a { font-weight: 500; color: inherit; }
.rr-post-content .rr-local-data__note { margin: 12px 0 0; font-size: 13px; line-height: 1.5; color: var(--rr-muted); }
@media (max-width: 767px) {
	.rr-post-content figure.rr-local-data { padding: 20px 18px 14px; }
	.rr-local-data th, .rr-local-data td { display: block; width: auto; padding: 0; border: 0; }
	.rr-local-data th { padding-top: 14px; border-top: 1px solid var(--rr-line); }
	.rr-local-data td { padding: 4px 0 14px; }
}

/* "Where it happens": the places as a two-column list with red markers */
.rr-places { list-style: none; margin: 4px 0 20px; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px 20px; }
.rr-places li { position: relative; padding: 10px 12px 10px 38px; border-radius: 10px; background: var(--rr-surface-2); font-size: 15px; line-height: 1.4; color: var(--rr-text); }
.rr-places li::before {
	content: ""; position: absolute; left: 13px; top: 50%; width: 14px; height: 14px; margin-top: -7px; border-radius: 50%;
	background: var(--rr-red); box-shadow: 0 0 0 4px rgba(235, 35, 41, .15);
}
.rr-places strong { color: var(--rr-ink); }
.rr-split p.rr-split__more { font-size: 16px; }
.rr-split__more a { color: var(--rr-red); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

/* Cost and insurance: two cards */
.rr-cost { background: var(--rr-surface-2); }
.rr-cost__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; margin-top: 36px; }
.rr-cost__card { position: relative; padding: 32px; border-radius: var(--rr-radius); background: #fff; box-shadow: var(--rr-shadow); }
.rr-cost__card::before {
	content: ""; position: absolute; inset: 0 0 auto 0; height: 4px; border-radius: var(--rr-radius) var(--rr-radius) 0 0;
	background: linear-gradient(90deg, var(--rr-red), var(--rr-red-light));
}
.rr-cost__card h3 { margin: 0 0 14px; font-size: 22px; font-weight: 700; color: var(--rr-ink); }
.rr-cost__card p { margin: 0 0 14px; font-size: 16px; line-height: 1.65; color: var(--rr-text); }
.rr-cost__card ul { list-style: none; margin: 0; padding: 0; }
.rr-cost__card li { position: relative; margin-bottom: 10px; padding-left: 30px; font-size: 16px; line-height: 1.5; color: var(--rr-text); }
.rr-cost__card li::before {
	content: ""; position: absolute; left: 0; top: .15em; width: 20px; height: 20px; border-radius: 50%;
	background: var(--rr-red) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 12px no-repeat;
}
.rr-cost__card .rr-btn { margin-top: 6px; }

@media (max-width: 1024px) {
	.rr-facts { grid-template-columns: repeat(2, 1fr); row-gap: 20px; }
	.rr-facts li:nth-child(3) { border-left: 0; }
}
@media (max-width: 767px) {
	.rr-inner .rr-service-hero .elementor-widget-heading h1 { font-size: 32px !important; }
	.rr-service-hero .rr-hero__ctas .rr-btn { flex: 1 1 100%; }
	.rr-hero__promise { font-size: 17px; }
	.rr-places { grid-template-columns: 1fr; }
	.rr-cost__grid { grid-template-columns: 1fr; gap: 20px; margin-top: 24px; }
	.rr-cost__card { padding: 24px 20px; }
}


/* Mobile pass: tap targets, small text and the hand-built landing pages
   ==========================================================================
   Checked at 390px across every published page. The layout itself already holds up; what was
   left were controls too small to hit with a thumb, a few labels under 12px, and the pages
   whose design lives in their own HTML widget and never got a phone breakpoint.
   Targets follow the usual phone minimum of about 44px; padding grows the target without
   moving the text. */

/* The header number is the main call to action on a phone, but the link was only 18px tall.
   It shows from 1024px down, so the target is fixed over the same range. */
@media (max-width: 1024px) {
	.rr-header-phone--mobile { min-height: 44px; padding: 0 4px; }
}

@media (max-width: 767px) {
	/* Breadcrumbs: 11px uppercase sat under the readable floor, and the links were 14px tall */
	.rr-crumbs { font-size: 12px; }
	.rr-crumbs a { display: inline-block; padding: 8px 0; }

	/* Show More on the testimonial cards. The phone padding set with the other tap areas was
	   undone by the later rule that strips Hello button styles with !important, so it is
	   restated here at the same weight. Padding is on three sides so the text stays flush left. */
	.rr-more-toggle { padding: 11px 10px 11px 0 !important; }

	/* Carousel controls: arrows were 25px and the dots 6px */
	.elementor-swiper-button { width: 44px; height: 44px; font-size: 30px; }
	/* The dots were 6px square to the thumb. The dot keeps its own size and color, which differ
	   between the carousels, and an invisible pad around it carries the tap. The pad is exactly
	   as wide as the spacing, so neighbouring dots never overlap and steal each other taps. */
	.swiper-pagination-bullets { display: flex; flex-wrap: wrap; justify-content: center; }
	.swiper-pagination-bullets .swiper-pagination-bullet { position: relative; margin: 0 9px !important; }
	.swiper-pagination-bullets .swiper-pagination-bullet::after {
		content: ""; position: absolute; left: 50%; top: 50%; width: 24px; height: 32px; transform: translate(-50%, -50%);
	}

	/* Ask AI and the other text buttons in the callback card: the matching rule for links above
	   does not reach them, because these are buttons */
	.rr-callback__foot .rr-link-btn { padding: 12px 4px; margin: -12px -4px; }

	/* Safari on iPhone zooms the whole page when a field under 16px takes focus, and the zoom
	   does not come back on its own. The Elementor forms are already 16px; these are the fields
	   the A1AI plugin renders (review form, chat box), left at 14px. */
	:is(.a1ai-review-submission, .a1ai-chatbot-form, .a1ai-voice-input-inner) :is(input, select, textarea) { font-size: 16px; }
	/* The chat box sets its own size per theme option, at a weight this has to match */
	.a1ai-voice-input-inner textarea.a1ai-chatbot-input-field { font-size: 16px; }

	/* Policies, Privacy Policy and Sitemap in the bottom bar were 28px rows */
	.rr-footer-links a { display: inline-block; padding: 8px 0; }

	/* Labels that were under 12px */
	.rr-footer__h .elementor-heading-title { font-size: 13px; }
	.rr-post-chip { font-size: 13px; }
	.rr-post-card__meta, .elementor-post-info__terms-list-item, .rr-post-card time { font-size: 13px; }
}

/* Subcontractors (887), Agents (786) and Services overview (914) are hand-built HTML-widget
   pages with their own stylesheet inside the widget. Their breakpoints stop at 1024px or 768px,
   so these rules add the phone step. They are scoped by page so they outrank the widget
   stylesheet, which the browser reads after this file; edit them here, not in the widget, or
   the two will disagree.
   ========================================================================== */

@media (max-width: 767px) {
	/* Subcontractors: the contact row would not wrap, which pushed the page box out to 513px and
	   cut off the hero; the hero heading was also 46px, wider than the screen in one word. */
	body.page-id-887 .topbar { flex-wrap: wrap; gap: 6px 16px; padding: 10px 20px; }
	body.page-id-887 .topbar-contact { flex-wrap: wrap; gap: 4px 16px; }
	body.page-id-887 .hero h1 { font-size: 30px; }
	body.page-id-887 .hero-left { padding: 48px 20px; }
	body.page-id-887 .hero-stat-bar { grid-template-columns: 1fr; }
	body.page-id-887 .stat { padding: 16px 20px; border-right: 0; }
	/* 52px of side padding left a 173px column, too narrow for Reconstruction at 30px */
	body.page-id-887 .division-card { padding: 32px 22px; }
	body.page-id-887 .division-card h2 { font-size: 22px; }
	body.page-id-887 :is(.division-tag, .stat-label, .step-num) { font-size: 12px; }
	body.page-id-887 .trade-list li { font-size: 13px; }
	/* Its sign-up form was 14px in 38px fields: too small to tap, and iOS zooms the page */
	body.page-id-887 :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea) { font-size: 16px; min-height: 44px; }

	/* Agents: the testimonial track asked for a 300px column inside a 207px box */
	body.page-id-786 .testimonial-grid { grid-template-columns: 1fr; }

	/* Services overview (914): the same hand-built set of 10px and 11px labels */
	body.page-id-914 :is(.tagline, .hero-eyebrow, .f-eyebrow, .section-label, .service-num,
		.badge, .tag, .diff-title, .coverage-label) { font-size: 12px; }
}

/* Service Area coverage list ([rr_service_area_coverage], inc/locations.php)
   ========================================================================== */
.rr-coverage { margin: 0 0 8px; }
.rr-coverage h2 { font-size: var(--rr-section-h2); line-height: 1.15; font-weight: 700; margin: 0 0 .6em; }
.rr-coverage__list { list-style: none; margin: 0 0 1.4em; padding: 0; display: grid; gap: 10px; }
.rr-coverage__list li {
	display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 18px;
	padding: 12px 16px; background: #fff; border: 1px solid rgba(0, 0, 0, .09); border-radius: 10px;
}
.rr-coverage__town { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; min-width: 240px; }
.rr-coverage__town strong { font-weight: 700; }
.rr-coverage__zips { color: var(--rr-muted); font-size: .92rem; font-variant-numeric: tabular-nums; }
.rr-coverage__links { display: flex; flex-wrap: wrap; gap: 6px 14px; }
.rr-coverage__links a { color: var(--rr-red); font-weight: 700; text-decoration: none; }
.rr-coverage__links a:hover { text-decoration: underline; }
.rr-coverage__wider { margin: 0; }

@media (max-width: 767px) {
	.rr-coverage__list li { padding: 10px 14px; }
	.rr-coverage__town { min-width: 0; }
}
