/* Page 141 only. Visual roles are independent of the heading outline.
   Native UX Builder owns section geometry, artwork, colors and buttons. */
body.ecom-home-layout {
 --ecom-type-hero: clamp(2.125rem, 1.45rem + 2.85vw, 4.5rem);
 --ecom-type-section: clamp(1.75rem, 1.4rem + 1.5vw, 2.75rem);
 --ecom-type-card: clamp(1.25rem, 1.15rem + .35vw, 1.5rem);
 --ecom-type-body: clamp(1rem, .95rem + .2vw, 1.125rem);
}
body.ecom-home-layout #main .ecom-title-hero {
 font-size: var(--ecom-type-hero); line-height: 1.08; font-weight: 800;
 letter-spacing: 0; overflow-wrap: normal; text-wrap: balance;
}
body.ecom-home-layout #main .ecom-title-section {
 font-size: var(--ecom-type-section); line-height: 1.18; font-weight: 700;
 letter-spacing: -.025em; margin: 0 0 1.5rem; text-wrap: balance;
}
body.ecom-home-layout #main .ecom-title-card {
 font-size: var(--ecom-type-card); line-height: 1.3; font-weight: 700;
 letter-spacing: 0; margin: 0 0 .875rem;
}
body.ecom-home-layout #main .ecom-title-detail {
 font-size: 1rem; line-height: 1.4; font-weight: 600;
 letter-spacing: 0; margin: 0 0 .25rem;
}
/* Catalog group labels retain their quieter visual role, at a readable size. */
body.ecom-home-layout #main .ecom-tech-category-heading .ecom-title-card {
 font-size: 1.125rem; line-height: 1.4; margin-bottom: 1.875rem;
}
body.ecom-home-layout #main :is(.ecom-hero-copy,.ecom-services-intro,.ecom-services-section .icon-box-text,.ecom-section-heading,.ecom-process-card,.ecom-catalog-intro,.ecom-catalog-copy,.ecom-home-booking,.ecom-case-card,.ecom-tech-item,.ecom-build-copy) p:not(.ecom-hero-actions):not(.ecom-hero-desc):not(.ecom-process-kicker):not(.ecom-case-eyebrow) {
 font-size: var(--ecom-type-body); line-height: 1.6; letter-spacing: 0;
}
body.ecom-home-layout #main .ecom-hero-desc {
 font-size: clamp(1.125rem, 1rem + .5vw, 1.375rem); line-height: 1.5;
}
/* Let native flex rows equalize cards and align links without truncation. */
body.ecom-home-layout .ecom-home-card-row { align-items: stretch; }
body.ecom-home-layout .ecom-home-card-row > .col > .col-inner,
body.ecom-home-layout .ecom-home-card-row .icon-box,
body.ecom-home-layout .ecom-home-card-row .icon-box-text {
 height: 100%; min-width: 0;
}
body.ecom-home-layout .ecom-home-card-row .icon-box-text {
 display: flex; flex-direction: column;
}
body.ecom-home-layout .ecom-home-card-row .icon-box-text .button {
 margin-top: auto; align-self: flex-start; white-space: normal;
}
body.ecom-home-layout #main .ecom-title-hero,
body.ecom-home-layout #main .ecom-title-section,
body.ecom-home-layout #main .ecom-title-card,
body.ecom-home-layout #main .ecom-title-detail { max-width: 100%; }
/* Keep the arrow beside wrapped service-link text on narrow columns. */
body.ecom-home-layout .ecom-home-card-row .icon-box-text .button {
 display: inline-flex; align-items: center; text-align: left; gap: .25rem;
 max-width: 100%;
}
body.ecom-home-layout .ecom-home-card-row .icon-box-text .button span { min-width: 0; }
body.ecom-home-layout .ecom-home-card-row .icon-box-text .button i { flex-shrink: 0; }
/* Long section titles share a deliberate two-line desktop composition. */
@media (min-width: 850px) {
 body.ecom-home-layout #main .ecom-title-section .ecom-heading-line { display: block; }
}
