/*
Theme Name: Chem-Dry
Description: Shared base for the Chem-Dry franchise sites (H-Town Chem-Dry, Chem-Dry Los Cabos). Tokens and rules from the Chem-Dry Franchise Design System.
Template: hello-elementor
Version: 1.4.21
Text Domain: chemdry
*/

/* Tokens: Chem-Dry Franchise Design System (tokens.json). Brand colors and fonts are also Elementor globals. */
:root {
	--cd-blue: #005daa;
	--cd-blue-700: #004a87;
	--cd-blue-900: #00335e;
	--cd-green: #008752;
	--cd-green-700: #006c42;
	--cd-green-light: #c0d72f;
	--neutral-000: #ffffff;
	--neutral-100: #e8e5e1;
	--neutral-700: #4a453f;
	--font-display: "Jost", "Jost Fallback", "Futura", "Century Gothic", system-ui, sans-serif;
	--font-body: "Roboto", "Roboto Fallback", Arial, "Helvetica Neue", Helvetica, sans-serif;
	--radius-sm: 4px;
	--radius-lg: 10px;
	--shadow-xs: 0 1px 2px rgba(38, 35, 31, .08);
	--shadow-md: 0 4px 12px rgba(38, 35, 31, .10);
	--shadow-sticky: 0 -4px 16px rgba(38, 35, 31, .14);
	--ring-focus: 0 0 0 2px #fff, 0 0 0 4px var(--cd-green); /* 4.6:1 against white (WCAG 1.4.11); the white inner ring separates it from green buttons */
	--ring-focus-inverse: 0 0 0 3px rgba(255, 255, 255, .65);
	--gutter: clamp(16px, 4vw, 40px);
	--header-height: 76px;
	--header-height-compact: 60px;
	--sticky-cta-height: 64px;
	/* Phone call-to-action bar and the compact block above the quote forms (option G, CRO review 2026-10-16): navy bar,
	   lime main action with navy text (7.95:1), white outline secondary (12.84:1). Design system colors only. */
	--cd-sticky-bar-bg: var(--cd-blue-900);
	--cd-cta-primary-bg: var(--cd-green-light);
	--cd-cta-primary-fg: var(--cd-blue-900);
	--cd-cta-secondary-fg: var(--neutral-000);
}

/* Fonts: Jost (display) and Roboto (text), latin subset, served by the theme as one static file per weight: the weights
   the site uses, cut from Google's variable files with fontTools. Safari in Lockdown Mode loads web fonts but ignores the
   weight axis of variable fonts, so every weight rendered as the file's default 400 (seen on Carlos's iPhone, 29 Sep
   2026). Jost 700 and Roboto 400 and 700 are preloaded (functions.php). */
@font-face { font-family: "Jost"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/jost-600.woff2") format("woff2"); }
@font-face { font-family: "Jost"; font-style: normal; font-weight: 700; font-display: swap; src: url("fonts/jost-700.woff2") format("woff2"); }
@font-face { font-family: "Roboto"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/roboto-400.woff2") format("woff2"); }
@font-face { font-family: "Roboto"; font-style: normal; font-weight: 700; font-display: swap; src: url("fonts/roboto-700.woff2") format("woff2"); }
@font-face { font-family: "Roboto"; font-style: italic; font-weight: 400; font-display: swap; src: url("fonts/roboto-400-italic.woff2") format("woff2"); }
@font-face { font-family: "Roboto"; font-style: italic; font-weight: 700; font-display: swap; src: url("fonts/roboto-700-italic.woff2") format("woff2"); }
/* Fallbacks while the fonts load: Arial scaled to take the same space as Jost and Roboto, so the swap does not move the
   text (CLS). 29 Sep 2026: widths measured on the site's own text per font and weight, vertical metrics from the files. */
@font-face { font-family: "Jost Fallback"; font-weight: 600; src: local("Arial Bold"), local("Arial-BoldMT"); size-adjust: 95.35%; ascent-override: 112.22%; descent-override: 39.33%; line-gap-override: 0.00%; }
@font-face { font-family: "Jost Fallback"; font-weight: 700; src: local("Arial Bold"), local("Arial-BoldMT"); size-adjust: 98.37%; ascent-override: 108.77%; descent-override: 38.12%; line-gap-override: 0.00%; }
@font-face { font-family: "Roboto Fallback"; font-weight: 400; src: local("Arial"), local("ArialMT"); size-adjust: 99.05%; ascent-override: 93.66%; descent-override: 24.65%; line-gap-override: 0.00%; }
@font-face { font-family: "Roboto Fallback"; font-weight: 700; src: local("Arial Bold"), local("Arial-BoldMT"); size-adjust: 93.98%; ascent-override: 98.72%; descent-override: 25.98%; line-gap-override: 0.00%; }
/* Elementor's kit declares its own stacks ("Jost", Arial, ...): same families, with the fallbacks above. */
[class*="elementor-kit-"] { --e-global-typography-primary-font-family: "Jost", "Jost Fallback"; --e-global-typography-secondary-font-family: "Jost", "Jost Fallback"; --e-global-typography-text-font-family: "Roboto", "Roboto Fallback"; font-family: var(--font-body); }
[class*="elementor-kit-"] :is(h1, h2, h3, h4, h5, h6, button, .elementor-button) { font-family: var(--font-display); }

/* No horizontal page scroll (third-party widgets such as the review carousel overflow on phones). clip keeps the sticky header working. */
html, body { overflow-x: clip; }

/* Buttons. Green = book, blue = call (design system rule). */
.elementor .cd-btn .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 20px;
	border: 2px solid transparent;
	border-radius: var(--radius-sm);
	font: 700 16px/1 var(--font-display);
	white-space: nowrap;
	text-decoration: none;
}
.elementor .cd-btn .elementor-button-icon svg { width: 16px; height: 16px; fill: currentColor; }
.elementor .cd-btn--primary .elementor-button { background: var(--cd-green); border-color: var(--cd-green); color: var(--neutral-000); }
.elementor .cd-btn--primary .elementor-button:hover { background: var(--cd-green-700); border-color: var(--cd-green-700); color: var(--neutral-000); }
.elementor .cd-btn--secondary .elementor-button { background: var(--cd-blue); border-color: var(--cd-blue); color: var(--neutral-000); }
.elementor .cd-btn--secondary .elementor-button:hover { background: var(--cd-blue-700); border-color: var(--cd-blue-700); color: var(--neutral-000); }

/* One content edge for the whole site: templates use the same side gutter as the page bands (Elementor's default
   container padding is 10px, which put the ribbon, header and footer out of line below 1200px). */
.elementor .e-con.cd-offer, .elementor .e-con.cd-header__bar, .elementor .e-con.cd-footer__grid, .elementor .e-con.cd-footer__legal { --padding-left: var(--gutter); --padding-right: var(--gutter); }
.elementor .e-con.cd-footer__grid .e-con { --padding-top: 0; --padding-right: 0; --padding-bottom: 0; --padding-left: 0; }
.elementor .cd-footer__logo { text-align: left; }

/* Offer ribbon (template chemdry-offer). Publish or unpublish the template to show or hide it. */
.elementor .e-con.cd-offer { --padding-top: 8px; --padding-bottom: 8px; background: var(--cd-green); }
.elementor .e-con.cd-offer > .e-con-inner { flex-direction: row; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 4px 24px; }
.cd-site-offer .elementor-widget-icon-list .elementor-icon-list-item > .elementor-icon-list-text { color: var(--neutral-000); font: 600 16px/1.3 var(--font-display); }
.cd-site-offer .elementor-widget-icon-list .elementor-icon-list-icon svg { width: 16px; height: 16px; fill: var(--cd-green-light); }

.cd-site-offer .cd-offer__end { color: var(--neutral-000); font: 600 16px/1.3 var(--font-display); }
.cd-offer__list { display: flex; flex-wrap: wrap; gap: 4px 24px; margin: 0; padding: 0; list-style: none; }
.cd-offer__list li { display: inline-flex; align-items: center; gap: 8px; color: var(--neutral-000); font: 600 16px/1.3 var(--font-display); }
.cd-offer__list .cd-i { width: 16px; height: 16px; color: var(--cd-green-light); }
.elementor .cd-offer__ticker { width: 100%; }
.cd-ticker-wrap { display: flex; align-items: center; gap: 8px; }
.cd-ticker { position: relative; flex: 1; min-width: 0; height: 22px; margin: 0; padding: 0; list-style: none; overflow: hidden; }
.cd-ticker__item { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 8px; color: var(--neutral-000); font: 600 15px/1.3 var(--font-display); white-space: nowrap; opacity: 0; transform: translateY(8px); transition: opacity .4s var(--ease), transform .4s var(--ease); }
.cd-ticker__item.is-active { opacity: 1; transform: none; }
.cd-ticker__item .cd-i { width: 16px; height: 16px; color: var(--cd-green-light); }
/* Pause / resume (WCAG 2.2.2), 24px target. Hello's reset paints buttons #c36 on hover and focus. */
.cd-site-offer .cd-ticker__toggle, .cd-site-offer .cd-ticker__toggle:hover, .cd-site-offer .cd-ticker__toggle:focus {
	display: inline-flex; flex: none; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0;
	border: 0; border-radius: var(--radius-sm); background: rgba(255, 255, 255, .14); color: var(--neutral-000); cursor: pointer;
}
.cd-site-offer .cd-ticker__toggle[hidden] { display: none; }
.cd-site-offer .cd-ticker__toggle:focus-visible { outline: none; box-shadow: var(--ring-focus-inverse); }
.cd-ticker__toggle::before { content: ""; width: 12px; height: 12px; background-color: currentColor; -webkit-mask: var(--i-pause) center / contain no-repeat; mask: var(--i-pause) center / contain no-repeat; }
.cd-ticker__toggle.is-paused::before { -webkit-mask-image: var(--i-play); mask-image: var(--i-play); }
@media (max-width: 359px) { .cd-ticker__item { font-size: 13px; } }
@media (prefers-reduced-motion: reduce) {
	.cd-ticker { height: auto; }
	.cd-ticker__item { position: static; opacity: 1; transform: none; }
	.cd-ticker__item:empty { display: none; }
}
.cd-site-offer .cd-offer__end:has(.elementor-shortcode:empty) { display: none; }

/* Sticky header (template chemdry-header, wrapped in .cd-site-header by the theme). */
.cd-site-header {
	position: sticky;
	top: 0;
	z-index: 200;
	background: var(--neutral-000);
	border-bottom: 1px solid var(--neutral-100);
	box-shadow: var(--shadow-xs);
}
.admin-bar .cd-site-header { top: var(--wp-admin--admin-bar--height, 32px); }
.elementor .e-con.cd-header__bar { --padding-top: 8px; --padding-bottom: 8px; position: static; }
.elementor .e-con.cd-header__bar > .e-con-inner {
	position: static;
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: center;
	gap: 24px;
	min-height: calc(var(--header-height) - 16px);
}
.elementor .cd-header__nav, .elementor .cd-push { position: static; margin-left: auto; }
.elementor .cd-header__logo img { display: block; width: auto; height: 44px; }
.elementor .cd-header__phone .elementor-button {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 0;
	background: none;
	color: var(--cd-blue);
	font: 600 18px/1.2 var(--font-display);
	white-space: nowrap;
}
.elementor .cd-header__phone .elementor-button:hover { color: var(--cd-green); }
.elementor .cd-header__phone .elementor-button-content-wrapper::before { background-color: var(--cd-green); }

/* Main menu ([chemdry_menu], WordPress menu in the "primary" location). Max 5 top-level links. */
.cd-nav__list { display: flex; gap: 22px; margin: 0; padding: 0; list-style: none; }
.cd-nav__list a {
	display: block;
	padding: 8px 0;
	border-bottom: 2px solid transparent;
	color: var(--cd-blue);
	font: 700 15px/1 var(--font-display);
	text-decoration: none;
	white-space: nowrap;
}
.cd-nav__list a:hover, .cd-nav__list .current-menu-item > a, .cd-nav__list .is-active > a { color: var(--cd-green); border-bottom-color: var(--cd-green); }
.cd-nav__list .menu-item-has-children { position: relative; }
.cd-nav__list .sub-menu {
	display: none;
	position: absolute;
	top: 100%;
	left: -16px;
	z-index: 210;
	min-width: 280px;
	margin: 0;
	padding: 8px 0;
	list-style: none;
	background: var(--neutral-000);
	border: 1px solid var(--neutral-100);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-md);
}
.cd-nav__list .menu-item-has-children:hover > .sub-menu,
.cd-nav__list .menu-item-has-children:focus-within > .sub-menu { display: block; }
.cd-nav__list .sub-menu a { padding: 12px 16px; border: 0; font-weight: 600; }
.cd-nav__list .menu-item-has-children { display: flex; align-items: center; }
.cd-nav__list .cd-nav__sub-toggle[aria-expanded="true"] + .sub-menu { display: block; }
.cd-site-header .cd-nav__sub-toggle, .cd-site-header .cd-nav__sub-toggle:hover, .cd-site-header .cd-nav__sub-toggle:focus {
	display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; margin: 0 0 0 2px; padding: 0;
	background: none; border: 0; box-shadow: none; color: var(--cd-blue); cursor: pointer;
}
.cd-nav__sub-toggle::before, .cd-nav__toggle::before { content: ""; flex: none; width: 16px; height: 16px; background-color: currentColor; -webkit-mask: var(--t-i, var(--i-chevron-down)) center / contain no-repeat; mask: var(--t-i, var(--i-chevron-down)) center / contain no-repeat; transition: transform .14s var(--ease, ease); }
.cd-nav__sub-toggle[aria-expanded="true"]::before { transform: rotate(180deg); }
.cd-nav__toggle { display: none; --t-i: var(--i-menu); }
.cd-nav__toggle[aria-expanded="true"] { --t-i: var(--i-x); }
.cd-nav__toggle::before { width: 20px; height: 20px; }
.cd-nav__toggle-close, .cd-nav__toggle[aria-expanded="true"] .cd-nav__toggle-open { display: none; }
.cd-nav__toggle[aria-expanded="true"] .cd-nav__toggle-close { display: inline; }

@media (max-width: 1100px) {
	.cd-site-header .cd-nav__toggle,
	.cd-site-header .cd-nav__toggle:hover,
	.cd-site-header .cd-nav__toggle:focus {
		display: inline-flex;
		align-items: center;
		gap: 8px;
		min-height: 44px;
		padding: 0 14px;
		background: var(--neutral-000);
		border: 2px solid var(--cd-blue);
		border-radius: var(--radius-sm);
		color: var(--cd-blue);
		font: 700 15px/1 var(--font-display);
		cursor: pointer;
	}
	.cd-nav__list {
		display: none;
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		flex-direction: column;
		gap: 0;
		padding: 8px var(--gutter) 16px;
		max-height: calc(100dvh - var(--header-height-compact) - 48px);
		overflow-y: auto;
		background: var(--neutral-000);
		border-bottom: 1px solid var(--neutral-100);
		box-shadow: var(--shadow-md);
	}
	.cd-nav__toggle[aria-expanded="true"] + .cd-nav__list { display: flex; }
	/* The Menu toggle sits at the far right (Carlos, 2026-09-29); what follows it in the DOM takes the push instead. */
	.elementor .cd-header__nav { order: 1; margin-left: 0; }
	.elementor .cd-header__nav + .elementor-element { margin-left: auto; }
	.cd-nav__list a { padding: 14px 0; border-bottom: 1px solid var(--neutral-100); }
	/* Submenus start collapsed; the chevron button beside the parent link opens them. */
	.cd-nav__list .menu-item-has-children { display: grid; grid-template-columns: 1fr 44px; align-items: stretch; }
	.cd-site-header .cd-nav__sub-toggle, .cd-site-header .cd-nav__sub-toggle:hover, .cd-site-header .cd-nav__sub-toggle:focus { width: 44px; height: auto; min-height: 44px; margin: 0; border-bottom: 1px solid var(--neutral-100); border-radius: 0; }
	.cd-nav__sub-toggle::before { width: 20px; height: 20px; }
	.cd-nav__list .sub-menu, .cd-nav__list .menu-item-has-children:hover > .sub-menu, .cd-nav__list .menu-item-has-children:focus-within > .sub-menu { display: none; grid-column: 1 / -1; position: static; min-width: 0; padding: 0 0 0 16px; border: 0; border-radius: 0; box-shadow: none; }
	.cd-nav__list .menu-item-has-children > .cd-nav__sub-toggle[aria-expanded="true"] + .sub-menu { display: block; }
}

@media (max-width: 767px) {
	.elementor .e-con.cd-header__bar > .e-con-inner { gap: 12px; min-height: calc(var(--header-height-compact) - 16px); }
	.elementor .cd-header__logo img { height: 36px; }
	.elementor .cd-header__phone .elementor-button-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
	.elementor .cd-header__phone .elementor-button {
		justify-content: center;
		width: 44px;
		height: 44px;
		border: 2px solid var(--cd-blue);
		border-radius: var(--radius-sm);
	}
	.elementor .cd-header__book { display: none; }
}

/* Footer (template chemdry-footer, wrapped in .cd-site-footer by the theme). */
.cd-site-footer { background: var(--cd-blue-900); color: rgba(255, 255, 255, .88); }
.elementor .e-con.cd-footer__grid { --padding-top: clamp(32px, 4vw, 56px); --padding-bottom: clamp(32px, 4vw, 56px); }
.elementor .e-con.cd-footer__grid > .e-con-inner { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; gap: 40px; }
.elementor .cd-footer__logo img { display: block; width: auto; height: 72px; }
.cd-site-footer .elementor-widget-heading .elementor-heading-title { margin: 0; color: var(--neutral-000); font: 600 18px/1.2 var(--font-display); }
.cd-site-footer .elementor-widget-icon-list .elementor-icon-list-item > .elementor-icon-list-text,
.cd-site-footer .elementor-widget-icon-list .elementor-icon-list-item > a,
.cd-site-footer .elementor-widget-icon-list .elementor-icon-list-text,
.cd-site-footer .elementor-widget.elementor-widget-text-editor { color: rgba(255, 255, 255, .88); font: 400 14px/1.45 var(--font-body); }
.cd-site-footer .elementor-widget-icon-list .elementor-icon-list-icon svg { width: 16px; height: 16px; fill: var(--cd-green-light); }
.cd-site-footer .elementor-widget-icon-list a:hover .elementor-icon-list-text { color: var(--neutral-000); text-decoration: underline; }
.cd-site-footer .elementor-social-icon {
	--icon-size: 20px;
	--icon-padding: 12px;
	background: rgba(255, 255, 255, .10);
	border-radius: var(--radius-sm);
}
.cd-site-footer .elementor-social-icon svg { fill: var(--neutral-000); }
.elementor .e-con.cd-footer__legal { --padding-top: 16px; --padding-bottom: 16px; border-top: 1px solid rgba(255, 255, 255, .16); }
.elementor .e-con.cd-footer__legal > .e-con-inner { flex-direction: row; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 24px; }
.cd-site-footer .elementor-widget-text-editor p { margin: 0; }
.cd-list { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 0; list-style: none; }
.cd-list li, .cd-list a { display: flex; align-items: flex-start; gap: 8px; color: rgba(255, 255, 255, .88); font: 400 14px/1.45 var(--font-body); text-decoration: none; }
.cd-list a:hover { color: var(--neutral-000); text-decoration: underline; }
.cd-list .cd-i { width: 16px; height: 16px; margin-top: 2px; color: var(--cd-green-light); }
.cd-legal-links { display: flex; flex-wrap: wrap; gap: 4px 20px; margin: 0; padding: 0; list-style: none; }
.cd-legal-links a { color: rgba(255, 255, 255, .72); font: 400 13px/1.45 var(--font-body); text-decoration: none; }
.cd-legal-links a:hover { color: var(--neutral-000); text-decoration: underline; }
.cd-social { display: flex; gap: 8px; margin: 0; padding: 0; list-style: none; }
.cd-social a { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1px solid rgba(255, 255, 255, .32); border-radius: var(--radius-sm); color: var(--neutral-000); }
.cd-social a:hover { background: rgba(255, 255, 255, .12); }
.cd-site-footer .cd-footer__legal .elementor-widget-icon-list .elementor-icon-list-text,
.cd-site-footer .cd-footer__legal .elementor-widget.elementor-widget-text-editor { color: rgba(255, 255, 255, .72); font-size: 13px; }

@media (max-width: 1024px) {
	.elementor .e-con.cd-footer__grid > .e-con-inner { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 767px) {
	.elementor .e-con.cd-footer__grid > .e-con-inner { grid-template-columns: 1fr; gap: 32px; }
}

/* Mobile call-to-action bar (inside chemdry-footer). The only fixed element besides the header. One main action, on the
   right and wider: the call on H-Town, WhatsApp on Los Cabos (client meeting, 2026-10-16); the other is an outline. */
.elementor .e-con.cd-sticky-bar { display: none; }
@media (max-width: 767px) {
	.elementor .e-con.cd-sticky-bar {
		display: grid;
		grid-template-columns: 1fr 1.4fr;
		gap: 8px;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 100;
		min-height: var(--sticky-cta-height);
		padding: 8px 16px calc(8px + env(safe-area-inset-bottom));
		background: var(--cd-sticky-bar-bg);
		box-shadow: var(--shadow-sticky);
	}
	.elementor .cd-sticky-bar .elementor-widget-button, .elementor .cd-sticky-bar .elementor-button { width: 100%; }
	.elementor .cd-sticky-bar .elementor-button { min-height: 48px; padding: 0 12px; background: var(--cd-sticky-bar-bg); border-color: var(--cd-cta-secondary-fg); color: var(--cd-cta-secondary-fg); }
	.elementor .cd-sticky-bar .elementor-button:hover { background: var(--cd-blue-700); border-color: var(--cd-cta-secondary-fg); color: var(--cd-cta-secondary-fg); }
	.elementor .cd-sticky-bar > :last-child .elementor-button, .elementor .cd-sticky-bar > :last-child .elementor-button:hover { background: var(--cd-cta-primary-bg); border-color: var(--cd-cta-primary-bg); color: var(--cd-cta-primary-fg); }
	.elementor .cd-sticky-bar > :last-child .elementor-button:is(:hover, :active) { box-shadow: inset 0 0 0 2px var(--cd-blue-900); }
	/* The footer runs on under the fixed bar and CookieYes' consent button (12px gap + 44px), so its last lines stay visible. */
	.cd-site-footer { padding-bottom: calc(var(--sticky-cta-height) + 68px + env(safe-area-inset-bottom)); }
}

/* WhatsApp chat button: design system IconButton shape in the system's green (Chem-Dry Green PMS 348; the lighter
   Secondary Green gives the white icon only 2.9:1). Green because people associate it with WhatsApp (Carlos, 2026-09-29).
   GTM tracks the wa.me link as whatsapp_click. */
.cd-whatsapp {
	position: fixed;
	right: 16px;
	bottom: 24px;
	z-index: 90;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	border-radius: var(--radius-sm);
	background: var(--cd-green);
	box-shadow: var(--shadow-md);
}
.cd-whatsapp:hover { background: var(--cd-green-700); }
.cd-whatsapp .cd-i { width: 26px; height: 26px; color: var(--neutral-000); }
/* Phones: the bar carries the main action, so the floating button would only repeat it (Carlos, 2026-10-16). */
@media (max-width: 767px) {
	.cd-whatsapp { display: none; }
}

/* CookieYes "revisit consent" button (loaded by GTM, production only): bottom left, clear of the WhatsApp button on the
   right; on phones level with WhatsApp, above the call bar (it sat on top of WhatsApp, Carlos 2026-10-01). */
.cky-btn-revisit-wrapper.cky-btn-revisit-wrapper { right: auto !important; left: 16px !important; bottom: 24px !important; }
@media (max-width: 767px) {
	.cky-btn-revisit-wrapper.cky-btn-revisit-wrapper { left: 12px !important; bottom: calc(var(--sticky-cta-height) + 12px + env(safe-area-inset-bottom)) !important; }
}

/* iPhone turns phone numbers, addresses and dates in plain text into links: they keep the text's own look. */
a[x-apple-data-detectors] { color: inherit !important; font: inherit !important; text-decoration: inherit !important; }

/* Links inside running text are underlined: color alone did not set them apart from the text (WCAG 1.4.1). */
.elementor .elementor-widget-text-editor a, .cd-faq__a a, .cd-breadcrumb a { text-decoration: underline; text-underline-offset: .15em; }

/* Keyboard focus never scrolls under the sticky header or, on phones, the call and book bar (WCAG 2.4.11). */
html { scroll-padding-top: calc(var(--header-height) + 8px); }
@media (max-width: 767px) { html { scroll-padding-top: calc(var(--header-height-compact) + 8px); scroll-padding-bottom: calc(var(--sticky-cta-height) + 8px + env(safe-area-inset-bottom)); } }

/* Focus is always visible (design system rule). */
.cd-site-header a:focus-visible, .cd-nav__toggle:focus-visible, .cd-whatsapp:focus-visible { outline: none; box-shadow: var(--ring-focus); }
.cd-sticky-bar a:focus-visible { outline: 3px solid var(--neutral-000); outline-offset: 2px; } /* white on the navy bar, 12.84:1 */
.cd-site-footer a:focus-visible { outline: none; box-shadow: var(--ring-focus-inverse); }

/* Migrated from Elementor Pro custom CSS (per element, page and kit). */
.cd-hl-green .elementor-heading-title span, .cd-hl-green .elementor-heading-title font { color: var(--cd-green); }
.cd-link-white a { color: var(--neutral-000); }
/* Gallery band in block layout: as a column flexbox, Chrome sized it from the gallery's intrinsic height, where the tiles
   (inline blocks sized in %) counted as 0, so tiles overflowed into the next section until images loaded and the page
   jumped while scrolling (CLS). */
.elementor #gallery > .e-con-inner { display: block; }
.elementor #gallery > .e-con-inner > * + * { margin-top: 32px; }
.cd-gallery .gallery-icon { aspect-ratio: 1; }
.cd-gallery .gallery-item img { width: 100%; height: 100%; object-fit: cover; border-radius: var(--radius-lg); }

/* ==========================================================================
   Page components: Chem-Dry Franchise Design System (approved mockups home.screen and service.screen).
   Layout comes from Elementor containers built by build-pages.php; these classes carry the look.
   ========================================================================== */
:root {
	--cd-blue-050: #eff6fc;
	--cd-blue-100: #d6e7f4;
	--cd-green-050: #eff8f3;
	--cd-green-100: #d6ede1;
	--cd-green-900: #00492d;
	--cd-green-dark: #215732;
	--cd-green-secondary: #41ad49;
	--cd-lime-100: #edf6d5;
	--neutral-025: #faf9f8;
	--neutral-050: #f4f2f0;
	--neutral-500: #6f6861; /* system value #7a736b is 4.2:1 on the subtle grounds; this one passes AA (4.9:1 or more) */
	--status-rating: #f2a100;
	--section-y: clamp(48px, 6vw, 96px);
	--section-y-tight: clamp(32px, 4vw, 56px);
	--text-hero: clamp(28px, 3.6vw, 44px);
	--text-section: clamp(23px, 2.4vw, 32px);
	--shadow-card: 0 1px 3px rgba(38, 35, 31, .10), 0 1px 2px rgba(38, 35, 31, .06);
	--shadow-card-hover: 0 4px 12px rgba(38, 35, 31, .10);
	/* The system's --scrim-left, held darker across the text column: the new photos are bright daylit rooms. */
	--scrim-hero: linear-gradient(to right, rgba(0, 51, 94, .9) 0%, rgba(0, 51, 94, .74) 50%, rgba(0, 51, 94, .3) 100%);
	--ease: cubic-bezier(.2, 0, .2, 1);
}

/* Icons: Lucide, the system's icon set, drawn as masks so they take the text color. */
.cd-i { display: inline-block; flex: none; width: 20px; height: 20px; vertical-align: middle; background-color: currentColor; -webkit-mask: var(--i) center / contain no-repeat; mask: var(--i) center / contain no-repeat; }

/* Bands: section rhythm and the two approved grounds besides white (subtle and brand blue). */
.elementor .e-con.cd-band { --padding-top: var(--section-y); --padding-bottom: var(--section-y); --padding-left: var(--gutter); --padding-right: var(--gutter); }
.elementor .e-con.cd-band--tight { --padding-top: var(--section-y-tight); --padding-bottom: var(--section-y-tight); }
.elementor .e-con.cd-band--subtle { background-color: var(--neutral-025); }
.elementor .e-con.cd-band--blue { background-color: var(--cd-blue); }
.elementor .e-con.cd-band--line { border-bottom: 1px solid var(--neutral-100); }
/* Inner containers start flat (Elementor adds 10px by default); panels and cards set their own padding below. */
.elementor .e-con.cd-flat { --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; }
.elementor .e-con.cd-cols > .e-con { --width: auto; flex: 1 1 320px; min-width: 0; }
.elementor .e-con.cd-cols > .elementor-widget { flex: 1 1 320px; min-width: 0; }
.elementor .e-con.cd-actions > .elementor-widget { flex: 0 0 auto; }

/* SectionHeading: eyebrow, headline, lede. */
.cd-eyebrow .elementor-heading-title { font: 700 13px/1.2 var(--font-display); letter-spacing: .12em; text-transform: uppercase; color: var(--cd-green); }
.cd-h1 .elementor-heading-title { font: 700 var(--text-hero)/1.08 var(--font-display); letter-spacing: -.02em; color: var(--cd-blue); }
.cd-h2 .elementor-heading-title { font: 700 var(--text-section)/1.2 var(--font-display); letter-spacing: -.02em; color: var(--cd-blue); }
.cd-h3 .elementor-heading-title { font: 700 24px/1.2 var(--font-display); color: var(--cd-blue); }
.cd-lede { font-size: 18px; line-height: 1.65; color: var(--neutral-700); }
.elementor.elementor .e-con .elementor-widget.cd-lede, .elementor.elementor .e-con .elementor-widget.cd-copy { max-width: 68ch; } /* beats Elementor's max-width: 100% (0,4,0) */
.cd-lede p:last-child, .cd-copy p:last-child, .cd-prose p:last-child { margin-bottom: 0; }
.elementor.elementor .e-con .elementor-widget.cd-center, .cd-center p { text-align: center; margin-inline: auto; }
.cd-hero .cd-eyebrow .elementor-heading-title { color: var(--cd-green-light); }
.cd-band--blue .cd-eyebrow .elementor-heading-title { color: #dce98a; } /* lime tint: the lime itself is 4.1:1 on brand blue, this is 5.1:1 */
.cd-band--blue .cd-h2 .elementor-heading-title, .cd-hero .cd-h1 .elementor-heading-title { color: var(--neutral-000); }
.cd-hero .cd-lede { color: rgba(255, 255, 255, .94); }
.cd-hero .cd-lede strong { color: var(--neutral-000); }

/* Hero with lead form: full-bleed photo under a blue scrim, text left, quote card right. */
.elementor .e-con.cd-hero { position: relative; overflow: hidden; background-color: var(--cd-blue-900); --padding-top: var(--section-y); --padding-bottom: var(--section-y); --padding-left: var(--gutter); --padding-right: var(--gutter); }
.elementor .e-con.cd-hero::after { content: ""; position: absolute; inset: 0; z-index: 0; background: var(--scrim-hero); pointer-events: none; }
.elementor .cd-hero__bg { position: absolute !important; inset: 0; z-index: 0; margin: 0 !important; max-width: none !important; }
.elementor .cd-hero__bg img { display: block; width: 100%; height: 100%; object-fit: cover; }
.elementor .cd-hero__bg--flip img { transform: scaleX(-1); }
.elementor .e-con.cd-hero .cd-cols { position: relative; z-index: 1; }
.elementor .e-con.cd-hero .cd-hero__text { max-width: 620px; }
.elementor .e-con.cd-hero .cd-hero__aside { flex: 0 1 440px; margin-left: auto; }
/* Hero calls to action: the phone bar's pattern (Carlos, 2026-10-16). The last one is the main action (the call on
   H-Town, WhatsApp on Los Cabos), lime with navy text; the other is the white outline. Phones hide them: the bar carries
   the same actions and they competed with it. */
.elementor .cd-hero .cd-actions > :not(:last-child) .elementor-button { background: var(--cd-sticky-bar-bg); border-color: var(--cd-cta-secondary-fg); color: var(--cd-cta-secondary-fg); }
.elementor .cd-hero .cd-actions > :not(:last-child) .elementor-button:hover { background: var(--cd-blue-700); border-color: var(--cd-cta-secondary-fg); color: var(--cd-cta-secondary-fg); }
.elementor .cd-hero .cd-actions > :last-child .elementor-button, .elementor .cd-hero .cd-actions > :last-child .elementor-button:hover { background: var(--cd-cta-primary-bg); border-color: var(--cd-cta-primary-bg); color: var(--cd-cta-primary-fg); }
.elementor .cd-hero .cd-actions > :last-child .elementor-button:is(:hover, :active) { box-shadow: inset 0 0 0 2px var(--cd-blue-900); }
.cd-hero .cd-actions a:focus-visible { outline: 3px solid var(--neutral-000); outline-offset: 2px; }
/* Same rule on light grounds: the "Prefer to talk?" panel and the hero of service and landing pages. The main action
   (last in the row) takes the lime style with a navy edge (lime on white is 1.62:1); the other is the navy outline.
   Phones hide them: the bar and the form block already carry these actions (Carlos, 2026-10-16). */
.elementor :is(.cd-talk .cd-btn, .cd-page-hero .cd-actions > :last-child) .elementor-button, .elementor :is(.cd-talk .cd-btn, .cd-page-hero .cd-actions > :last-child) .elementor-button:hover { background: var(--cd-cta-primary-bg); border-color: var(--cd-blue-900); color: var(--cd-cta-primary-fg); }
.elementor :is(.cd-talk .cd-btn, .cd-page-hero .cd-actions > :last-child) .elementor-button:is(:hover, :active) { box-shadow: inset 0 0 0 2px var(--cd-blue-900); }
.elementor .cd-page-hero .cd-actions > :not(:last-child) .elementor-button { background: transparent; border-color: var(--cd-blue-900); color: var(--cd-blue-900); }
.elementor .cd-page-hero .cd-actions > :not(:last-child) .elementor-button:hover { background: var(--cd-blue-050); border-color: var(--cd-blue-900); color: var(--cd-blue-900); }
@media (max-width: 767px) {
	.elementor .e-con.cd-hero::after { background: rgba(0, 51, 94, .86); }
	.elementor .e-con.cd-hero .cd-hero__aside { flex-basis: 100%; }
	.elementor .e-con.cd-hero .cd-actions, .elementor .e-con.cd-talk, .elementor .e-con.cd-page-hero .cd-actions { display: none; }
}

/* Badge and rating. */
.cd-badges { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.cd-badge { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border: 1px solid var(--cd-green-100); border-radius: 999px; background: var(--cd-green-050); color: var(--cd-green-900); font: 700 14px/1.45 var(--font-display); }
.cd-badge .cd-i { width: 14px; height: 14px; }
.cd-badge--lime { background: var(--cd-lime-100); border-color: var(--cd-green-light); color: var(--cd-green-dark); }
.cd-badge--blue { background: var(--cd-blue-050); border-color: var(--cd-blue-100); color: var(--cd-blue-900); }
.cd-rating { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; font-size: 14px; line-height: 1.45; color: var(--neutral-700); }
.cd-rating--inverse { color: var(--neutral-000); }
.cd-stars { display: inline-flex; gap: 2px; color: var(--status-rating); }
.cd-stars .cd-i { width: 18px; height: 18px; }

/* Buttons: sizes, the inverse and outline variants, and Lucide icons. */
.elementor .cd-btn--lg .elementor-button { min-height: 48px; padding: 0 26px; }
.elementor .cd-btn--inverse .elementor-button { background: var(--neutral-000); border-color: var(--neutral-000); color: var(--cd-blue); }
.elementor .cd-btn--inverse .elementor-button:hover { background: var(--neutral-050); border-color: var(--neutral-050); color: var(--cd-blue); }
.elementor .cd-btn--outline .elementor-button { background: transparent; border-color: var(--cd-blue); color: var(--cd-blue); }
.elementor .cd-btn--outline .elementor-button:hover { background: var(--cd-blue-050); color: var(--cd-blue); }
.elementor .cd-btn--block, .elementor .cd-btn--block .elementor-button { width: 100%; }
.elementor .cd-btn .elementor-button-content-wrapper { display: inline-flex; align-items: center; gap: 8px; }
.elementor [class*="cd-btn--i-"] .elementor-button-content-wrapper::before { content: ""; flex: none; width: 18px; height: 18px; background-color: currentColor; -webkit-mask: var(--btn-i) center / contain no-repeat; mask: var(--btn-i) center / contain no-repeat; }
.cd-btn--i-book { --btn-i: var(--i-calendar-check); }
.cd-btn--i-call { --btn-i: var(--i-phone); }
.cd-btn--i-quote { --btn-i: var(--i-clipboard-list); }
.cd-btn--i-whatsapp { --btn-i: var(--i-whatsapp); }

/* TrustBar. */
.elementor .e-con.cd-trust { --padding-top: 16px; --padding-bottom: 16px; --padding-left: var(--gutter); --padding-right: var(--gutter); background: var(--neutral-025); border-top: 1px solid var(--neutral-100); border-bottom: 1px solid var(--neutral-100); }
.cd-trust__list { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px 40px; margin: 0; padding: 0; list-style: none; }
.cd-trust__list li { display: inline-flex; align-items: center; gap: 8px; font: 700 14px/1.45 var(--font-display); color: var(--neutral-700); }
.cd-trust__list .cd-i { color: var(--cd-green); }
@media (max-width: 767px) { .cd-trust__list { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 16px; } .cd-trust__list li { align-items: flex-start; } }

/* StatTile. */
.cd-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); gap: 24px; }
.cd-stat { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.cd-stat .cd-i { width: 26px; height: 26px; color: var(--cd-green); }
.cd-stat__value { font: 700 36px/1.2 var(--font-display); letter-spacing: -.02em; color: var(--cd-blue); }
.cd-stat__label { font-size: 14px; line-height: 1.45; color: var(--neutral-500); }
.cd-main .cd-stats { grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr)); }
@media (max-width: 767px) { .cd-stats, .cd-main .cd-stats { grid-template-columns: 1fr 1fr; } .cd-stat__value { font-size: 30px; } }

/* Cards: ServiceCard (the whole card is the link), panels and the quote card. */
.elementor .e-con.cd-card, .elementor .e-con.cd-panel { background: var(--neutral-000); border: 1px solid var(--neutral-100); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); }
.elementor .e-con.cd-card { --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; overflow: hidden; color: inherit; text-decoration: none; transition: box-shadow .22s var(--ease), transform .22s var(--ease); }
.elementor a.e-con.cd-card:hover { box-shadow: var(--shadow-card-hover); transform: translateY(-2px); }
.elementor a.e-con.cd-card:focus-visible { outline: none; box-shadow: var(--ring-focus); }
.elementor .cd-card > .elementor-widget-html { flex-grow: 1; }
/* Card photo: the box holds 3:2 through its padding, so the card never depends on the lazy image's size (Chrome counted
   unloaded lazy images as 0 when sizing the card grid, and cards grew while scrolling: CLS). */
.elementor .cd-card__img { position: relative; flex-shrink: 0; height: 0; margin: 0; padding-bottom: 66.667%; overflow: hidden; }
.elementor .cd-card__img img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: cover; }
/* Team photo in the home About us (2026-10-06): 4:3 held by padding, the same CLS guard as the card photos. */
.elementor .cd-about__photo { position: relative; flex-shrink: 0; height: 0; margin: 0; padding-bottom: 75%; overflow: hidden; border-radius: var(--radius-lg); }
.elementor .cd-about__photo img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: cover; }
.cd-card__body { display: flex; flex-direction: column; gap: 12px; height: 100%; padding: 24px; }
.cd-card__body p { margin: 0; color: var(--neutral-700); }
.cd-chip { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: var(--radius-sm); background: var(--cd-green-050); color: var(--cd-green); }
.cd-chip .cd-i { width: 24px; height: 24px; }
.elementor .cd-card__title { margin: 0; font: 700 24px/1.2 var(--font-display); color: var(--cd-blue); }
.cd-card__more { display: inline-flex; align-items: center; gap: 6px; margin-top: auto; padding-top: 12px; font: 700 14px/1 var(--font-display); color: var(--cd-blue); }
.cd-card__more::after { content: ""; width: 16px; height: 16px; background-color: currentColor; -webkit-mask: var(--i-arrow-right) center / contain no-repeat; mask: var(--i-arrow-right) center / contain no-repeat; transition: transform .14s var(--ease); }
a.cd-card:hover .cd-card__more::after { transform: translateX(3px); }
.elementor .e-con.cd-panel { --padding-top: 24px; --padding-bottom: 24px; --padding-left: 24px; --padding-right: 24px; }
/* The Housecall Pro form brings its own title, padding and white ground: it fills the card edge to edge. */
.elementor .e-con.cd-quote { --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; overflow: hidden; box-shadow: var(--shadow-md); }
.cd-quote iframe { display: block; width: 100% !important; max-width: 534px; margin: 0 auto; }
/* Housecall Pro resizes its form once loaded (650px to its real height), which pushed the page (CLS): start at the real
   height. Measured 29 Sep 2026: 744px at 379px wide (phones), 686px at 440 to 513px, 669px at 534px (tablet), 703px at
   438px (desktop aside). A taller form still grows; a shorter one keeps this space. */
.cd-quote iframe { min-height: 744px; }
@media (min-width: 480px) { .cd-quote iframe { min-height: 686px; } }
@media (min-width: 560px) { .cd-quote iframe { min-height: 669px; } }
@media (min-width: 1025px) { .cd-quote iframe { min-height: 703px; } }
/* The reviews widget (Trustindex) builds itself when it scrolls into view (about 60px, then 0, then full height) and pushed
   the gallery below it (CLS): reserve its final height. Measured 29 Sep 2026: 518px under 480px wide (1 column), 475px
   up to 699px, 278px from 700px (2 to 4 columns). */
.elementor .cd-reviews { min-height: 518px; }
@media (min-width: 480px) { .elementor .cd-reviews { min-height: 475px; } }
@media (min-width: 700px) { .elementor .cd-reviews { min-height: 278px; } } /* the HCP form is at most 534px wide and sits left inside its frame: centered in wider cards */
.cd-quote .elementor-shortcode > p { margin: 0; font-size: 0; line-height: 0; } /* the snippet's auto paragraph */
.elementor .cd-panel__title { margin: 0; font: 700 24px/1.2 var(--font-display); color: var(--cd-blue); }
.elementor .cd-panel__title { font-size: 18px; font-weight: 600; }
/* Notice strip at the top of the quote card (H-Town: minimum service charge, Alvaro 2026-10-01). */
.cd-quote__notice { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 0; padding: 10px 16px; background: var(--cd-blue-050); border-bottom: 1px solid var(--neutral-100); color: var(--cd-blue-900); font: 600 14px/1.4 var(--font-body); text-align: center; }
.cd-quote__notice .cd-i { flex: none; width: 16px; height: 16px; color: var(--cd-blue); }
.cd-quote__notice small { display: block; font-size: 12px; font-weight: 400; } /* footnote line under the notice */
/* Phones: the quote card opens on a compact block, a big main action (the call on H-Town) and a button that shows the
   form (client meeting, 2026-10-16). While closed, the form stays in the page at full width, so Housecall Pro keeps
   sizing its iframe. Tablet and desktop always show the form. .elementor prefixes beat the kit's button styles. */
.cd-quote__compact { display: none; }
@media (max-width: 767px) {
	.cd-quote__compact { display: grid; gap: 12px; padding: 16px; }
	.elementor .cd-quote__compact :is(a, button) { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 48px; margin: 0; padding: 0 16px; border: 2px solid var(--cd-blue); border-radius: var(--radius-sm); background: var(--neutral-000); color: var(--cd-blue); font: 700 16px/1.2 var(--font-display); text-decoration: none; cursor: pointer; }
	.elementor .cd-quote__compact a { min-height: 56px; border-color: var(--cd-blue-900); background: var(--cd-cta-primary-bg); color: var(--cd-cta-primary-fg); font-size: 18px; } /* navy edge: lime on white is 1.62:1 */
	.elementor .cd-quote__compact a:is(:hover, :active) { box-shadow: inset 0 0 0 2px var(--cd-blue-900); }
	.elementor .cd-quote__compact button:focus { background: var(--neutral-000); color: var(--cd-blue); }
	.elementor .cd-quote__compact button:hover { background: var(--cd-blue-050); }
	.elementor .cd-quote__compact :is(a, button):focus-visible { outline: none; box-shadow: var(--ring-focus); }
	.cd-quote__compact .cd-i { flex: none; width: 18px; height: 18px; }
	.cd-quote__toggle::after { content: ""; flex: none; width: 16px; height: 16px; background-color: currentColor; -webkit-mask: var(--i-chevron-down) center / contain no-repeat; mask: var(--i-chevron-down) center / contain no-repeat; transition: transform .2s var(--ease); }
	.cd-quote__toggle[aria-expanded="true"]::after { transform: rotate(180deg); }
	.cd-quote:not(.cd-quote--form, .is-open) .cd-quote__form { height: 0; overflow: hidden; visibility: hidden; }
	/* Los Cabos (WPForms card, which has its own padding): the form and its privacy note stay out until opened; the form
	   widget is display: contents there, so its parts are hidden instead. */
	.cd-quote--form .cd-quote__compact { padding: 0; }
	.cd-quote--form:not(.is-open) :is(.wpforms-container, .elementor-widget:has(.cd-quote__note)) { display: none; }
}
/* Los Cabos: the theme prints the notice inside the form's shortcode (functions.php: per request, so per language).
   Unwrapping the shortcode widget makes the notice and the form items of the card, so the notice takes the top edge of
   the card above the title, like H-Town's strip (Carlos, 2026-10-02). 24px = the card padding; 8px + the 16px gap. */
.cd-quote--form .cd-quote__form, .cd-quote--form .cd-quote__form .elementor-shortcode { display: contents; }
.cd-quote--form .cd-quote__notice { order: -1; margin: -24px -24px 8px; }
.cd-quote__note, .cd-hours { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 12px; line-height: 1.45; color: var(--neutral-500); }
.cd-hours { font-size: 14px; }
.cd-hours .cd-i { width: 16px; height: 16px; color: var(--cd-green); }
.cd-quote__note .cd-i { width: 14px; height: 14px; }
/* Native quote form (WPForms, Los Cabos): title, the form and a privacy note inside the card. The design system Input:
   48px fields, bold display labels; the border is darker than the system's neutral-200 (1.5:1) so the field edge reaches
   3:1 (WCAG 1.4.11). WPForms' own stylesheet reads these variables. They are !important because WPForms also prints
   per-form variables on #wpforms-<id>, and form 3096 still carries the old design's (white field text, 43px fields). */
.elementor .e-con.cd-quote--form { --padding-top: 24px; --padding-bottom: 24px; --padding-left: 24px; --padding-right: 24px; gap: 16px; }
.cd-quote__title .elementor-heading-title { margin: 0; font: 700 24px/1.2 var(--font-display); color: var(--cd-blue); }
.cd-maps-link { margin: 0; }
.cd-maps-link a { color: var(--cd-blue); font: 700 15px/1.3 var(--font-display); text-decoration: underline; text-underline-offset: .15em; }
.cd-maps-link a:hover { color: var(--cd-green); }
.cd-quote--form .wpforms-container {
	--wpforms-field-border-radius: var(--radius-sm) !important;
	--wpforms-field-border-color: #8a8178 !important;
	--wpforms-field-text-color: var(--neutral-700) !important;
	--wpforms-field-background-color: var(--neutral-000) !important;
	--wpforms-label-color: var(--neutral-700) !important;
	--wpforms-label-error-color: #b3261e !important;
	--wpforms-button-border-radius: var(--radius-sm) !important;
	--wpforms-button-background-color: var(--cd-blue) !important; /* blue submit (Carlos, 2026-09-29): green is WhatsApp's */
	--wpforms-button-border-color: var(--cd-blue) !important;
	--wpforms-button-text-color: var(--neutral-000) !important;
	--wpforms-field-size-input-height: 48px !important;
	--wpforms-field-size-input-spacing: 16px !important;
	--wpforms-field-size-font-size: 16px !important;
	--wpforms-field-size-padding-h: 14px !important;
	--wpforms-label-size-font-size: 14px !important;
	--wpforms-button-size-font-size: 16px !important;
	--wpforms-button-size-height: 48px !important;
	--wpforms-button-size-margin-top: 8px !important;
	margin: 0;
}
.cd-quote--form .wpforms-container .wpforms-form .wpforms-field { padding: 0 0 16px; }
.cd-quote--form .wpforms-container .wpforms-form .wpforms-field-label { font-family: var(--font-display); font-weight: 700; }
.cd-quote--form .wpforms-container .wpforms-form :is(input, select, textarea) { font-family: var(--font-body); box-shadow: inset 0 1px 2px rgba(38, 35, 31, .07); }
.cd-quote--form .wpforms-container .wpforms-form :is(input, select, textarea):focus { border-color: var(--cd-green); box-shadow: var(--ring-focus); outline: none; }
.cd-quote--form .wpforms-container .wpforms-form textarea { height: 104px; }
/* The hero sets white text, which the select inherited (white on white). */
.cd-quote--form .wpforms-container .wpforms-form select { color: var(--neutral-700); }
.cd-quote--form .wpforms-container .wpforms-form select:has(option.placeholder:checked) { color: var(--neutral-500); }
/* Phones: one field per row (two narrow columns put the inputs out of line when a label wraps). */
@media (max-width: 599px) {
	.cd-quote--form .wpforms-container .wpforms-form .wpforms-field.wpforms-one-half { float: none; width: 100%; margin-left: 0; }
}
.cd-quote--form .wpforms-container .wpforms-form .wpforms-submit-container { padding: 0; }
.cd-quote--form .wpforms-container .wpforms-form button[type=submit] { width: 100%; font-family: var(--font-display); font-weight: 700; }
.cd-quote--form .wpforms-container .wpforms-form button[type=submit]:hover { background: var(--cd-blue-700); border-color: var(--cd-blue-700); }
.cd-quote--form .wpforms-container .wpforms-form button[type=submit]:focus-visible { box-shadow: var(--ring-focus); outline: none; }
.cd-quote--form .cd-quote__note { font-size: 13px; }
@media (min-width: 1025px) { .elementor .e-con.cd-sticky { position: sticky; top: calc(var(--header-height) + 24px); } }
.elementor .e-con.cd-cols > .e-con.cd-aside { flex: 0 1 440px; }
/* Tablet and phone: the form column drops under the content at the full content width (same edges as the rest). */
@media (max-width: 1024px) {
	.elementor .e-con.cd-cols > .e-con.cd-aside, .elementor .e-con.cd-hero .cd-cols > .cd-hero__aside { flex: 1 1 100%; max-width: none; margin-left: 0; margin-right: 0; }
}

/* Lists: checks (service bullets), links (other services), certifications. */
.cd-checks { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 0; list-style: none; }
.cd-checks li { display: flex; align-items: flex-start; gap: 12px; }
.cd-checks li::before { content: ""; flex: none; width: 20px; height: 20px; margin-top: 2px; background-color: var(--cd-green); -webkit-mask: var(--i-check) center / contain no-repeat; mask: var(--i-check) center / contain no-repeat; }
.cd-checks--sm { gap: 4px; }
.cd-checks--sm li { gap: 8px; font-size: 14px; line-height: 1.45; }
.cd-checks--sm li::before { width: 16px; height: 16px; margin-top: 1px; background-color: var(--cd-green-secondary); }
.cd-checks--pin li::before { -webkit-mask-image: var(--i-map-pin); mask-image: var(--i-map-pin); }
.cd-areas { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 24px; }
.elementor .cd-areas__title { margin: 0 0 12px; font: 600 18px/1.2 var(--font-display); color: var(--cd-blue); }
.cd-links { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px 24px; margin: 12px 0 0; padding: 0; list-style: none; font-size: 14px; }
.cd-links a { color: var(--cd-blue); text-decoration: none; }
.cd-links a:hover { color: var(--cd-green); text-decoration: underline; }
.elementor .cd-cert img { height: 72px; width: auto; }
/* Five seals (Los Cabos) stay on one row in the narrow side panel. */
@media (min-width: 1025px) { .elementor .cd-panel .cd-certs:has(> :nth-child(5)) .cd-cert img { height: 56px; } }

/* Before and after: pairs of real job photos, each pair in a card. */
.cd-ba { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 480px), 1fr)); gap: 24px; margin: 0; padding: 0; list-style: none; } /* auto-fill: a single pair keeps half the width (the real photos are small) */
.cd-ba__item { display: flex; flex-direction: column; gap: 12px; padding: 16px; background: var(--neutral-000); border: 1px solid var(--neutral-100); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); }
.cd-ba__pair { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cd-ba__pair figure { margin: 0; }
.cd-ba__pair img { display: block; width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; border-radius: var(--radius-sm); }
.cd-ba__pair figcaption { margin-top: 6px; text-align: center; font-size: 14px; line-height: 1.45; color: var(--neutral-500); }
.cd-ba__pair figure + figure figcaption { color: var(--cd-green); font-weight: 700; }
.elementor .cd-ba__title { margin: 0; font: 600 18px/1.2 var(--font-display); color: var(--cd-blue); }

/* Language switch ([chemdry_lang], TranslatePress): ES / EN in the header, the current language marked. */
/* Language switch (Los Cabos): its own footer heading, like "Follow us", and the compact ES / EN control below. */
.elementor .cd-footer__subtitle { margin-top: 16px; }
.cd-lang { display: inline-flex; align-items: center; gap: 2px; padding: 2px; border: 1px solid rgba(255, 255, 255, .32); border-radius: var(--radius-sm); }
.cd-lang a { display: inline-flex; align-items: center; justify-content: center; min-width: 36px; min-height: 32px; padding: 0 6px; border-radius: 3px; color: var(--neutral-000); font: 700 14px/1 var(--font-display); text-decoration: none; }
.cd-lang a:hover { background: rgba(255, 255, 255, .12); }
.cd-lang a[aria-current] { background: var(--neutral-000); color: var(--cd-blue-900); }

/* ProcessSteps (on the blue band). */
.cd-steps { counter-reset: cd-step; display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 24px; margin: 0; padding: 0; list-style: none; }
.cd-steps li { counter-increment: cd-step; display: flex; flex-direction: column; gap: 12px; }
.cd-steps li::before { content: counter(cd-step); display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 999px; background: rgba(255, 255, 255, .14); color: var(--neutral-000); font: 700 20px/1 var(--font-display); }
.elementor .cd-steps h3 { display: inline-flex; align-items: center; gap: 8px; margin: 0; font: 600 18px/1.2 var(--font-display); color: var(--neutral-000); }
.elementor .cd-steps h3 .cd-i { color: var(--cd-green-light); }
.cd-steps p { margin: 0; font-size: 14px; line-height: 1.45; color: rgba(255, 255, 255, .88); }
.elementor .cd-steps p a { color: var(--neutral-000); font-weight: 700; text-decoration: underline; text-underline-offset: .15em; }

/* Accordion (FAQ). */
.cd-faq { display: flex; flex-direction: column; gap: 8px; }
.cd-faq__item { border: 1px solid var(--neutral-100); border-radius: var(--radius-lg); background: var(--neutral-000); overflow: hidden; }
.cd-faq__item summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 44px; padding: 16px 20px; list-style: none; cursor: pointer; }
.cd-faq__item summary::-webkit-details-marker { display: none; }
.cd-faq__item summary::after { content: ""; flex: none; width: 20px; height: 20px; background-color: var(--cd-green); -webkit-mask: var(--i-chevron-down) center / contain no-repeat; mask: var(--i-chevron-down) center / contain no-repeat; transition: transform .2s var(--ease); }
.cd-faq__item[open] summary { background: var(--neutral-025); }
.cd-faq__item[open] summary::after { transform: rotate(180deg); }
.cd-faq__item summary:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--cd-green); }
.elementor .cd-faq__item h3 { margin: 0; font: 600 18px/1.3 var(--font-display); color: var(--cd-blue); }
.cd-faq__a { padding: 0 20px 20px; color: var(--neutral-700); }
.cd-faq__a > :last-child { margin-bottom: 0; }

/* PhotoFrame, map, gallery spacing, breadcrumb, legal prose, confirmation pages. */
.elementor .cd-photo img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--radius-lg); }
.elementor .cd-map iframe { border-radius: var(--radius-lg); }
.cd-breadcrumb { font-size: 14px; line-height: 1.45; color: var(--neutral-500); }
.cd-breadcrumb a { color: var(--cd-blue); }
.cd-breadcrumb .cd-sep { margin: 0 8px; }
.cd-breadcrumb [aria-current] { color: var(--neutral-700); }
.elementor.elementor .e-con .elementor-widget.cd-prose { max-width: 760px; }
.elementor .cd-prose h2, .elementor .cd-prose h3 { margin: 32px 0 12px; font: 700 24px/1.2 var(--font-display); color: var(--cd-blue); }
.elementor .cd-prose h3 { font-size: 20px; }
.cd-prose ul, .cd-prose ol, .cd-copy ol { padding-left: 24px; }
.cd-copy ol li + li { margin-top: 8px; } /* service process steps */
.elementor .e-con.cd-thanks { max-width: 640px; margin: 0 auto; text-align: center; }
.cd-thanks__icon { display: inline-flex; align-items: center; justify-content: center; width: 64px; height: 64px; border-radius: 999px; background: var(--cd-green-050); color: var(--cd-green); }
.cd-thanks__icon .cd-i { width: 32px; height: 32px; }

:root {
	--i-arrow-right: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M5 12h14%22 /%3E%3Cpath d=%22m12 5 7 7-7 7%22 /%3E%3C/svg%3E");
	--i-award: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526%22 /%3E%3Ccircle cx=%2212%22 cy=%228%22 r=%226%22 /%3E%3C/svg%3E");
	--i-bed: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M2 4v16%22 /%3E%3Cpath d=%22M2 8h18a2 2 0 0 1 2 2v10%22 /%3E%3Cpath d=%22M2 17h20%22 /%3E%3Cpath d=%22M6 8v9%22 /%3E%3C/svg%3E");
	--i-building-2: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z%22 /%3E%3Cpath d=%22M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2%22 /%3E%3Cpath d=%22M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2%22 /%3E%3Cpath d=%22M10 6h4%22 /%3E%3Cpath d=%22M10 10h4%22 /%3E%3Cpath d=%22M10 14h4%22 /%3E%3Cpath d=%22M10 18h4%22 /%3E%3C/svg%3E");
	--i-calendar-check: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M8 2v4%22 /%3E%3Cpath d=%22M16 2v4%22 /%3E%3Crect width=%2218%22 height=%2218%22 x=%223%22 y=%224%22 rx=%222%22 /%3E%3Cpath d=%22M3 10h18%22 /%3E%3Cpath d=%22m9 16 2 2 4-4%22 /%3E%3C/svg%3E");
	--i-check: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M20 6 9 17l-5-5%22 /%3E%3C/svg%3E");
	--i-chevron-down: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22m6 9 6 6 6-6%22 /%3E%3C/svg%3E");
	--i-clipboard-list: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Crect width=%228%22 height=%224%22 x=%228%22 y=%222%22 rx=%221%22 ry=%221%22 /%3E%3Cpath d=%22M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2%22 /%3E%3Cpath d=%22M12 11h4%22 /%3E%3Cpath d=%22M12 16h4%22 /%3E%3Cpath d=%22M8 11h.01%22 /%3E%3Cpath d=%22M8 16h.01%22 /%3E%3C/svg%3E");
	--i-clock: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M12 6v6l4 2%22 /%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%2210%22 /%3E%3C/svg%3E");
	--i-droplets: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z%22 /%3E%3Cpath d=%22M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97%22 /%3E%3C/svg%3E");
	--i-facebook: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z%22 /%3E%3C/svg%3E");
	--i-gem: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M10.5 3 8 9l4 13 4-13-2.5-6%22 /%3E%3Cpath d=%22M17 3a2 2 0 0 1 1.6.8l3 4a2 2 0 0 1 .013 2.382l-7.99 10.986a2 2 0 0 1-3.247 0l-7.99-10.986A2 2 0 0 1 2.4 7.8l2.998-3.997A2 2 0 0 1 7 3z%22 /%3E%3Cpath d=%22M2 9h20%22 /%3E%3C/svg%3E");
	--i-grid-2x2: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M12 3v18%22 /%3E%3Cpath d=%22M3 12h18%22 /%3E%3Crect x=%223%22 y=%223%22 width=%2218%22 height=%2218%22 rx=%222%22 /%3E%3C/svg%3E");
	--i-instagram: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Crect width=%2220%22 height=%2220%22 x=%222%22 y=%222%22 rx=%225%22 ry=%225%22 /%3E%3Cpath d=%22M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z%22 /%3E%3Cline x1=%2217.5%22 x2=%2217.51%22 y1=%226.5%22 y2=%226.5%22 /%3E%3C/svg%3E");
	--i-layers: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z%22 /%3E%3Cpath d=%22M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12%22 /%3E%3Cpath d=%22M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17%22 /%3E%3C/svg%3E");
	--i-lock: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Crect width=%2218%22 height=%2211%22 x=%223%22 y=%2211%22 rx=%222%22 ry=%222%22 /%3E%3Cpath d=%22M7 11V7a5 5 0 0 1 10 0v4%22 /%3E%3C/svg%3E");
	--i-mail: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7%22 /%3E%3Crect x=%222%22 y=%224%22 width=%2220%22 height=%2216%22 rx=%222%22 /%3E%3C/svg%3E");
	--i-map-pin: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0%22 /%3E%3Ccircle cx=%2212%22 cy=%2210%22 r=%223%22 /%3E%3C/svg%3E");
	--i-menu: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M4 5h16%22 /%3E%3Cpath d=%22M4 12h16%22 /%3E%3Cpath d=%22M4 19h16%22 /%3E%3C/svg%3E");
	--i-message-square: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z%22 /%3E%3C/svg%3E");
	--i-paw-print: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Ccircle cx=%2211%22 cy=%224%22 r=%222%22 /%3E%3Ccircle cx=%2218%22 cy=%228%22 r=%222%22 /%3E%3Ccircle cx=%2220%22 cy=%2216%22 r=%222%22 /%3E%3Cpath d=%22M9 10a5 5 0 0 1 5 5v3.5a3.5 3.5 0 0 1-6.84 1.045Q6.52 17.48 4.46 16.84A3.5 3.5 0 0 1 5.5 10Z%22 /%3E%3C/svg%3E");
	--i-phone: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384%22 /%3E%3C/svg%3E");
	--i-receipt-text: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z%22 /%3E%3Cpath d=%22M14 8H8%22 /%3E%3Cpath d=%22M16 12H8%22 /%3E%3Cpath d=%22M13 16H8%22 /%3E%3C/svg%3E");
	--i-shield-check: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z%22 /%3E%3Cpath d=%22m9 12 2 2 4-4%22 /%3E%3C/svg%3E");
	--i-sofa: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M20 9V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v3%22 /%3E%3Cpath d=%22M2 16a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v1.5a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5V11a2 2 0 0 0-4 0z%22 /%3E%3Cpath d=%22M4 18v2%22 /%3E%3Cpath d=%22M20 18v2%22 /%3E%3Cpath d=%22M12 4v9%22 /%3E%3C/svg%3E");
	--i-sparkles: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z%22 /%3E%3Cpath d=%22M20 2v4%22 /%3E%3Cpath d=%22M22 4h-4%22 /%3E%3Ccircle cx=%224%22 cy=%2220%22 r=%222%22 /%3E%3C/svg%3E");
	--i-star: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z%22 /%3E%3C/svg%3E");
	--i-star-fill: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22%23000%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z%22 /%3E%3C/svg%3E");
	--i-tag: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z%22 /%3E%3Ccircle cx=%227.5%22 cy=%227.5%22 r=%22.5%22 fill=%22currentColor%22 /%3E%3C/svg%3E");
	--i-trees: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M10 10v.2A3 3 0 0 1 8.9 16H5a3 3 0 0 1-1-5.8V10a3 3 0 0 1 6 0Z%22 /%3E%3Cpath d=%22M7 16v6%22 /%3E%3Cpath d=%22M13 19v3%22 /%3E%3Cpath d=%22M12 19h8.3a1 1 0 0 0 .7-1.7L18 14h.3a1 1 0 0 0 .7-1.7L16 9h.2a1 1 0 0 0 .8-1.7L13 3l-1.4 1.5%22 /%3E%3C/svg%3E");
	--i-users: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2%22 /%3E%3Cpath d=%22M16 3.128a4 4 0 0 1 0 7.744%22 /%3E%3Cpath d=%22M22 21v-2a4 4 0 0 0-3-3.87%22 /%3E%3Ccircle cx=%229%22 cy=%227%22 r=%224%22 /%3E%3C/svg%3E");
	--i-x: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M18 6 6 18%22 /%3E%3Cpath d=%22m6 6 12 12%22 /%3E%3C/svg%3E");
	--i-pause: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='14' y='3' width='5' height='18' rx='1'/%3E%3Crect x='5' y='3' width='5' height='18' rx='1'/%3E%3C/svg%3E");
	--i-play: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z'/%3E%3C/svg%3E");
	/* WhatsApp: the brand glyph (Simple Icons 16.33, CC0); Lucide has no brand logos. */
	--i-whatsapp: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23000'%3E%3Cpath d='M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z'/%3E%3C/svg%3E");
}
.cd-i--arrow-right { --i: var(--i-arrow-right); } .cd-i--award { --i: var(--i-award); } .cd-i--bed { --i: var(--i-bed); } .cd-i--building-2 { --i: var(--i-building-2); } .cd-i--calendar-check { --i: var(--i-calendar-check); } .cd-i--check { --i: var(--i-check); } .cd-i--chevron-down { --i: var(--i-chevron-down); } .cd-i--clipboard-list { --i: var(--i-clipboard-list); } .cd-i--clock { --i: var(--i-clock); } .cd-i--droplets { --i: var(--i-droplets); } .cd-i--facebook { --i: var(--i-facebook); } .cd-i--gem { --i: var(--i-gem); } .cd-i--grid-2x2 { --i: var(--i-grid-2x2); } .cd-i--instagram { --i: var(--i-instagram); } .cd-i--layers { --i: var(--i-layers); } .cd-i--lock { --i: var(--i-lock); } .cd-i--mail { --i: var(--i-mail); } .cd-i--map-pin { --i: var(--i-map-pin); } .cd-i--menu { --i: var(--i-menu); } .cd-i--message-square { --i: var(--i-message-square); } .cd-i--paw-print { --i: var(--i-paw-print); } .cd-i--phone { --i: var(--i-phone); } .cd-i--receipt-text { --i: var(--i-receipt-text); } .cd-i--shield-check { --i: var(--i-shield-check); } .cd-i--sofa { --i: var(--i-sofa); } .cd-i--sparkles { --i: var(--i-sparkles); } .cd-i--star { --i: var(--i-star); } .cd-i--tag { --i: var(--i-tag); } .cd-i--trees { --i: var(--i-trees); } .cd-i--users { --i: var(--i-users); } .cd-i--x { --i: var(--i-x); } .cd-i--whatsapp { --i: var(--i-whatsapp); } .cd-i--star-fill { --i: var(--i-star-fill); }
