/* Source-layout corrections for native Elementor wrappers. */
/* Flex containers in the HTML source defaulted to row; Elementor defaults to column. */
html body .elementor .section-heading.e-con.e-flex,
html body .elementor .final-cta.e-con.e-flex { --flex-direction: row; flex-direction: row; }
html body .elementor .final-cta > .e-con:not(.contact-actions) { width: auto; flex: 1 1 650px; min-width: 0; }
html body .elementor .final-cta > .contact-actions { width: auto; flex: 0 0 auto; }
/* The source's number-badge rule must not style the spans introduced inside Elementor buttons. */
html body .elementor .need-card .elementor-button-content-wrapper,
html body .elementor .need-card .elementor-button-text {
 display: inline; width: auto; height: auto; margin: 0; padding: 0;
 background: transparent; color: inherit; border-radius: 0;
 font-size: inherit; font-weight: inherit; line-height: inherit;
}
html body .elementor .need-card .fb-link .elementor-button {
 min-height: 0; padding: 0; background: transparent; border: 0; border-radius: 0;
 color: var(--deep); font-size: 14px; font-weight: 900; line-height: normal;
 display: inline-block; margin-top: 10px; text-align: left;
}
/* In the source, each blockquote was a grid item and stretched to the row height. */
html body .elementor .review-grid > .elementor-widget-text-editor { align-self: stretch; }
html body .elementor .review-grid > .elementor-widget-text-editor > blockquote { height: 100%; }
/* Elementor image wrapper is exactly the source's 110px grid track. */
html body .elementor .service-card > .elementor-widget-image { width: 110px; }
@media (max-width: 1020px) {
 html body .elementor .final-cta.e-con.e-flex { --flex-direction: column; flex-direction: column; align-items: stretch; }
 html body .elementor .final-cta > .e-con:not(.contact-actions) { flex: initial; width: 100%; }
 html body .elementor .final-cta > .contact-actions { flex: initial; width: 100%; }
}
@media (max-width: 680px) {
 html body .elementor .section-heading { display: block; }
 html body .elementor .service-card > .elementor-widget-image { width: 92px; }
}
/* Original links inherited the body's 16px size; Elementor's default button is 15px. */
html body .elementor .fb-button .elementor-button { font-size: 16px; }
/* Preserve the source heading rhythm against Elementor's margin:0 / line-height:1 reset. */
html body .elementor .elementor-widget-heading h1.elementor-heading-title {
 margin:0 0 22px; max-width:720px; font-size:clamp(44px,6vw,76px); line-height:.96; letter-spacing:-.055em;
}
html body .elementor .elementor-widget-heading h2.elementor-heading-title {
 margin:0 0 18px; font-size:clamp(34px,4vw,52px); line-height:1.02; letter-spacing:-.04em;
}
html body .elementor .elementor-widget-heading h3.elementor-heading-title {
 margin:0 0 10px; font-size:22px; line-height:1.12; letter-spacing:-.02em;
}
html body .elementor .final-cta .elementor-widget-heading h2.elementor-heading-title { margin-bottom:12px; }

/* Equal-height objective cards keep the CTA first baseline aligned, even for wrapped labels. */
html body .elementor .need-card.e-con {
 display: flex; flex-direction: column; align-items: stretch; height: 100%;
}
html body .elementor .need-card.e-con > .fb-link {
 margin: auto 0 0; padding-top: 10px; flex-shrink: 0;
}
html body .elementor .need-card .fb-link .elementor-button {
 margin-top: 0; min-height: 2.5em; line-height: 1.25; vertical-align: top;
 align-items: flex-start; justify-content: flex-start;
}

html body .elementor .illustration-note { color: var(--muted); font-size: 12px; margin: 14px 0 0; }

/* Native anchor containers make the complete service card a keyboard-accessible contact link. */
html body .elementor a.service-card { color: inherit; text-decoration: none; cursor: pointer; }
html body .elementor a.service-card:focus-visible { outline: 3px solid var(--deep); outline-offset: 4px; }

html body .elementor .review-stars { color: var(--deep); letter-spacing: .08em; margin: 0 0 12px; }
html body .elementor .review-snapshot { color: var(--muted); font-size: 13px; margin: 18px 0; }

/* Local review carousel: native touch scrolling, no external script or autoplay. */
html body .elementor .review-slider.e-con { display:flex; flex-direction:row; flex-wrap:nowrap; gap:20px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-padding:2px; overscroll-behavior-x:contain; padding:4px 2px 12px; scrollbar-width:thin; }
html body .elementor .review-slider > .elementor-widget { flex:0 0 calc((100% - 20px)/2); width:calc((100% - 20px)/2); min-width:0; scroll-snap-align:start; }
html body .elementor .review-author { display:flex; align-items:center; gap:12px; margin-top:18px; }
html body .elementor .review-avatar,html body .elementor .review-initial { display:grid; place-items:center; width:36px; height:36px; min-width:36px; border-radius:50%; object-fit:cover; font:600 17px/1 system-ui; color:#fff; }
html body .elementor .review-initial-purple { background:#76529c; }
html body .elementor .review-initial-grey { background:#66706b; }
html body .elementor .review-author cite { margin:0; }
.review-controls { display:flex; align-items:center; justify-content:flex-end; gap:14px; margin-top:14px; }
.review-controls button { width:44px; height:44px; border:1px solid #0e473f; border-radius:50%; color:#0e473f; background:#fff; font-size:22px; cursor:pointer; }
.review-controls button:disabled { opacity:.35; cursor:default; }
.review-position { font:14px/1.4 system-ui; color:#61726b; }
.review-controls button:focus-visible,.review-slider:focus-visible { outline:3px solid #0e473f; outline-offset:3px; }
@media(max-width:680px){html body .elementor .review-slider > .elementor-widget { flex-basis:88%; width:88%; }}
@media(prefers-reduced-motion:reduce){.review-slider { scroll-behavior:auto; }}

/* Three distinct cards on medium desktop; four on wide screens. */
@media(min-width:960px){html body .elementor .review-slider > .elementor-widget { flex-basis:calc((100% - 40px)/3); width:calc((100% - 40px)/3); }}
@media(min-width:1280px){html body .elementor .review-slider > .elementor-widget { flex-basis:calc((100% - 60px)/4); width:calc((100% - 60px)/4); }}
.review-pause { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.review-pause:focus { position:static; width:auto; height:auto; overflow:visible; clip-path:none; white-space:normal; padding:10px 14px; border:2px solid #0e473f; border-radius:10px; background:#fff; color:#0e473f; }

@media(min-width:960px){html body .elementor .review-slider[data-review-count="3"] > .elementor-widget { flex-basis:calc((100% - 40px)/3); width:calc((100% - 40px)/3); }}
.review-slider { transition:opacity .3s ease; }
.review-slider.review-turning { opacity:0; }
@media(prefers-reduced-motion:reduce){.review-slider { transition:none; }}

/* Compact, readable body typography leaves space for the supplied longer review excerpt. */
html body .elementor .review-slider blockquote { padding:22px; font-size:16px; font-weight:400; line-height:1.5; display:flex; flex-direction:column; }
html body .elementor .review-slider blockquote > p:not(.review-stars) { margin:0 0 18px; font-size:16px; font-weight:400; line-height:1.5; }
html body .elementor .review-slider .review-author { margin-top:auto; padding-top:4px; }
html body .elementor .review-slider .review-author cite { font-size:14px; line-height:1.4; }

/* Compact review cards retain the 16px body size, expanding only on request. */
html body .elementor .review-slider blockquote { padding:18px; min-height:0; }
html body .elementor .review-slider blockquote > p:not(.review-stars) { margin-bottom:10px; }
html body .elementor .review-slider .review-stars { margin-bottom:8px; }
html body .elementor .review-slider .review-excerpt-collapsed { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:6; line-clamp:6; max-height:9em; overflow:hidden; }
html body .elementor .review-read-more { align-self:flex-start; border:0; padding:2px 0 8px; margin:0 0 8px; background:transparent; color:var(--deep); font-family:inherit; font-size:14px; font-weight:600; line-height:1.5; text-decoration:underline; cursor:pointer; min-height:36px; }
html body .elementor .review-read-more:focus-visible { outline:2px solid var(--deep); outline-offset:3px; }
