:root {
    --fh-navy: #071a2f;
    --fh-navy-deep: #0b315f;
    --fh-blue: #1677e8;
    --fh-blue-hover: #0d63c7;
    --fh-black: #071a2f;
    --fh-white: #ffffff;
    --fh-soft: #f6f8fb;
    --fh-gray-100: #f6f8fb;
    --fh-gray-300: #e3e9f0;
    --fh-gray-600: #667085;
    --fh-gray-700: #475467;
    --fh-text: #101828;
    --fh-yellow: #f5b301;
    --fh-yellow-dark: #d99a00;
    --fh-shadow: 0 10px 30px rgba(7, 26, 47, 0.08);
    --fh-radius: 12px;
    --fh-header-height: 4.25rem;
    --fh-mobile-cta-height: 5.5rem;
    --font-body: "DM Sans", system-ui, sans-serif;
    --font-display: "DM Sans", system-ui, sans-serif;
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    scroll-padding-top: calc(var(--fh-header-height) + env(safe-area-inset-top, 0px));
    background: var(--fh-navy);
    overflow-x: clip;
}

body {
    margin: 0;
    font-family: var(--font-body);
    color: var(--fh-text);
    background: var(--fh-white);
    line-height: 1.6;
    overflow-x: clip;
    max-width: 100%;
}

img {
    max-width: 100%;
    height: auto;
}

a {
    color: inherit;
    text-decoration: none;
}

.site-header {
    position: sticky;
    top: 0;
    z-index: 1030;
    padding-top: env(safe-area-inset-top, 0px);
    background: var(--fh-navy);
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    transition:
        background-color 0.35s cubic-bezier(0.22, 1, 0.36, 1),
        border-color 0.35s cubic-bezier(0.22, 1, 0.36, 1),
        box-shadow 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.page-home .site-header--overlay {
    position: absolute;
    left: 0;
    right: 0;
    background: var(--fh-navy);
}

.page-home .site-header {
    border-bottom-color: rgba(255, 255, 255, 0.06);
}

.navbar {
    --bs-navbar-padding-y: 1rem;
    transition: padding 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.navbar-brand {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    color: var(--fh-white);
}

.brand-logo {
    display: block;
    height: 2.5rem;
    width: auto;
}

.brand-logo--footer {
    height: 2.75rem;
}

.brand-logo--inline {
    height: 2.25rem;
    width: auto;
    padding: 0.35rem 0.85rem;
    background: var(--fh-navy);
    border-radius: 0.5rem;
}

.brand-mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 0.75rem;
    background: var(--fh-blue);
    color: var(--fh-white);
    font-family: var(--font-display);
    font-weight: 700;
    letter-spacing: 0.04em;
}

.brand-text {
    display: flex;
    flex-direction: column;
    line-height: 1.1;
}

.brand-text strong,
.footer-brand strong {
    font-family: var(--font-display);
    font-size: 1.15rem;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.brand-text small {
    color: rgba(255, 255, 255, 0.72);
    font-size: 0.75rem;
}

.navbar-toggler {
    border-color: rgba(255, 255, 255, 0.25);
}

.navbar-toggler-icon {
    filter: invert(1);
}

.site-header__inner {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.site-header__bar {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.nav-link {
    font-weight: 500;
    position: relative;
}

.site-header .nav-link {
    color: rgba(255, 255, 255, 0.88) !important;
}

.nav-link:hover,
.nav-link.active,
.phone-link {
    color: var(--fh-blue) !important;
}

.header-phone {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--fh-white);
    font-weight: 600;
    white-space: nowrap;
}

.header-phone .icon {
    opacity: 0.95;
}

.header-actions {
    margin-top: 1rem;
}

@media (min-width: 992px) {
    .header-actions {
        margin-top: 0;
    }
}

.btn-primary,
.btn-accent {
    --bs-btn-color: var(--fh-white);
    --bs-btn-bg: var(--fh-blue);
    --bs-btn-border-color: var(--fh-blue);
    --bs-btn-hover-bg: var(--fh-blue-hover);
    --bs-btn-hover-border-color: var(--fh-blue-hover);
    --bs-btn-active-bg: var(--fh-blue-hover);
    --bs-btn-active-border-color: var(--fh-blue-hover);
    font-weight: 600;
    border-radius: var(--fh-radius);
    padding-inline: 1.25rem;
    box-shadow: 0 4px 14px rgba(22, 119, 232, 0.22);
    transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.btn-primary:hover,
.btn-accent:hover {
    transform: translateY(-1px);
}

.btn-outline {
    --bs-btn-color: var(--fh-text);
    --bs-btn-border-color: var(--fh-gray-300);
    --bs-btn-hover-bg: var(--fh-soft);
    --bs-btn-hover-border-color: var(--fh-gray-300);
    --bs-btn-hover-color: var(--fh-text);
    border-radius: var(--fh-radius);
    font-weight: 600;
    background: var(--fh-white);
}

.btn-outline-light,
.btn-secondary-light {
    border-radius: var(--fh-radius);
    font-weight: 600;
}

.btn-secondary-light {
    color: var(--fh-white);
    border: 1px solid rgba(255, 255, 255, 0.65);
    background: transparent;
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.65rem 1.25rem;
}

.btn-secondary-light:hover {
    background: rgba(255, 255, 255, 0.08);
    color: var(--fh-white);
}

.btn-play {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.65rem;
    height: 1.65rem;
    border: 1.5px solid currentColor;
    border-radius: 999px;
    flex-shrink: 0;
}

.btn-play::before {
    content: "";
    width: 0;
    height: 0;
    margin-left: 2px;
    border-top: 5px solid transparent;
    border-bottom: 5px solid transparent;
    border-left: 7px solid currentColor;
}

.btn-outline-dark {
    --bs-btn-color: var(--fh-text);
    --bs-btn-border-color: var(--fh-gray-300);
    --bs-btn-hover-bg: var(--fh-soft);
    --bs-btn-hover-border-color: var(--fh-gray-300);
    --bs-btn-hover-color: var(--fh-text);
    border-radius: var(--fh-radius);
    font-weight: 600;
    background: var(--fh-white);
}

.service-card {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.service-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(7, 26, 47, 0.12);
}

.service-card-title {
    font-family: var(--font-display);
    font-size: 1.15rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    line-height: 1.3;
}

.hero-section {
    position: relative;
    padding: 5rem 0 4rem;
    background:
        linear-gradient(135deg, rgba(8, 17, 31, 0.94), rgba(11, 31, 58, 0.88)),
        radial-gradient(circle at top right, rgba(245, 197, 24, 0.18), transparent 35%);
    color: var(--fh-white);
}

.hero-title,
.section-title {
    font-family: var(--font-display);
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--fh-text);
}

.hero-title {
    font-size: clamp(2.5rem, 6vw, 4.5rem);
    line-height: 0.95;
    margin-bottom: 1rem;
}

.hero-lead {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--fh-blue);
    margin-bottom: 1rem;
}

.hero-copy {
    max-width: 38rem;
    color: rgba(255, 255, 255, 0.82);
}

.hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 2rem;
}

.hero-card {
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: var(--fh-radius);
    padding: 1.75rem;
    box-shadow: var(--fh-shadow);
}

.hero-card-label,
.eyebrow {
    color: var(--fh-blue);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    margin-bottom: 0.75rem;
}

.eyebrow--light {
    color: rgba(255, 255, 255, 0.92);
}

.text-secondary {
    color: var(--fh-gray-600);
}

.hero-service-list {
    list-style: none;
    padding: 0;
    margin: 0 0 1rem;
}

.hero-service-list li + li {
    margin-top: 0.75rem;
}

.hero-service-list a {
    font-family: var(--font-display);
    font-size: 1.35rem;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.hero-service-list a:hover {
    color: var(--fh-blue);
}

.hero-card-note {
    color: rgba(255, 255, 255, 0.72);
    font-size: 0.95rem;
}

.section-trust,
.section-services,
.section-weather,
.section-locations,
.section-cta,
.section-error {
    padding: 4.5rem 0;
}

.section-trust {
    background: var(--fh-gray-100);
}

.trust-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 1rem;
}

.trust-item {
    background: var(--fh-white);
    border-radius: var(--fh-radius);
    padding: 1.25rem;
    text-align: center;
    font-weight: 700;
    box-shadow: var(--fh-shadow);
}

.section-heading {
    max-width: 42rem;
    margin-bottom: 2.5rem;
}

.section-title {
    font-size: clamp(2rem, 4vw, 3rem);
    line-height: 1;
    margin-bottom: 1rem;
}

.section-intro {
    color: var(--fh-gray-600);
    margin-bottom: 0;
}

.card-link {
    color: var(--fh-blue);
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.card-link .icon {
    transition: transform 0.2s ease;
}

.card-link:hover .icon {
    transform: translateX(2px);
}

.card-link:hover {
    color: var(--fh-blue-hover);
}

.section-weather {
    background: var(--fh-navy);
    color: var(--fh-white);
}

.feature-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 1rem;
}

.feature-list li {
    padding: 1rem 1.25rem;
    border-radius: 0.85rem;
    background: rgba(255, 255, 255, 0.08);
}

.location-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.location-chip {
    display: inline-flex;
    align-items: center;
    padding: 0.75rem 1rem;
    border-radius: 999px;
    background: var(--fh-gray-100);
    border: 1px solid var(--fh-gray-300);
    font-weight: 600;
}

.location-chip:hover {
    background: rgba(22, 119, 232, 0.1);
    border-color: var(--fh-blue);
    color: var(--fh-blue);
}

.section-cta {
    background: var(--fh-soft);
}

.cta-panel {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    padding: 2rem;
    border-radius: calc(var(--fh-radius) + 0.25rem);
    background: var(--fh-white);
    box-shadow: var(--fh-shadow);
}

.cta-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.site-footer {
    background: var(--fh-navy);
    color: rgba(255, 255, 255, 0.82);
    padding: 4rem 0 2rem;
}

.footer-logo img,
.footer-logo .brand-logo {
    height: 2.75rem;
    width: auto;
    margin-bottom: 1rem;
}

.footer-tagline {
    max-width: 22rem;
    color: rgba(255, 255, 255, 0.72);
}

.footer-social {
    display: flex;
    gap: 0.75rem;
    margin-top: 1rem;
}

.footer-social a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    color: var(--fh-white);
    font-size: 0.95rem;
}

.footer-contact {
    list-style: none;
    padding: 0;
    margin: 0;
    color: rgba(255, 255, 255, 0.72);
}

.footer-contact li + li {
    margin-top: 0.5rem;
}

.footer-contact a {
    color: rgba(255, 255, 255, 0.82);
}

.footer-brand {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
}

.footer-heading {
    font-family: var(--font-display);
    font-size: 1rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fh-white);
    margin-bottom: 1rem;
}

.footer-links {
    list-style: none;
    padding: 0;
    margin: 0;
}

.footer-links li + li {
    margin-top: 0.5rem;
}

.footer-links a:hover,
.footer-contact a:hover {
    color: var(--fh-blue);
}

.footer-bottom {
    margin-top: 2rem;
    padding-top: 1.5rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    color: rgba(255, 255, 255, 0.55);
    font-size: 0.95rem;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 1rem;
    align-items: center;
}

.footer-legal {
    display: flex;
    gap: 1rem;
}

.footer-legal a {
    color: rgba(255, 255, 255, 0.72);
}

.mobile-sticky-cta {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1040;
    display: flex;
    gap: 0.75rem;
    padding: 0.75rem 0.75rem calc(0.75rem + env(safe-area-inset-bottom, 0px));
    background: var(--fh-navy);
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

@media (max-width: 991.98px) {
    body {
        padding-bottom: calc(var(--fh-mobile-cta-height) + env(safe-area-inset-bottom, 0px));
    }

    #main-content {
        scroll-padding-bottom: calc(var(--fh-mobile-cta-height) + env(safe-area-inset-bottom, 0px));
    }

    .site-nav-offcanvas {
        width: min(calc(100% - 1.5rem), 22.5rem);
        border-left: none;
        box-shadow: none;
    }

    .site-nav-offcanvas.show,
    .site-nav-offcanvas.showing {
        border-left: 1px solid var(--fh-gray-300);
        box-shadow: -8px 0 24px rgba(7, 26, 47, 0.12);
    }

    .site-nav-offcanvas .offcanvas-header {
        padding: 1rem 1.25rem;
        border-bottom: 1px solid var(--fh-gray-300);
    }

    .site-nav-offcanvas .offcanvas-title {
        color: var(--fh-navy);
        font-family: var(--font-display);
        font-weight: 700;
        letter-spacing: 0.04em;
        text-transform: uppercase;
    }

    .site-nav-offcanvas .offcanvas-body {
        display: flex;
        flex-direction: column;
        padding: 0.5rem 1.25rem calc(1.25rem + env(safe-area-inset-bottom, 0px));
        overflow-y: auto;
    }

    .site-nav-offcanvas__links {
        width: 100%;
        margin: 0;
        gap: 0;
    }

    .site-nav-offcanvas__links .nav-item {
        width: 100%;
        border-bottom: 1px solid var(--fh-gray-300);
    }

    .site-nav-offcanvas__links .nav-link {
        display: block;
        width: 100%;
        padding: 0.95rem 0.15rem;
        color: var(--fh-navy) !important;
        font-size: 1.05rem;
        line-height: 1.3;
    }

    .site-nav-offcanvas__links .nav-link:hover,
    .site-nav-offcanvas__links .nav-link:focus,
    .site-nav-offcanvas__links .nav-link.active {
        color: var(--fh-blue) !important;
    }

    body.has-motion .site-nav-offcanvas__links .nav-link::after {
        display: none;
    }

    .site-nav-offcanvas__actions {
        margin-top: 1.25rem;
        width: 100%;
        gap: 0.75rem;
    }

    .site-nav-offcanvas__actions .header-phone {
        justify-content: center;
        width: 100%;
        padding: 0.85rem 1rem;
        color: var(--fh-navy);
        border: 1px solid var(--fh-gray-300);
        border-radius: var(--fh-radius);
        background: var(--fh-soft);
    }

    .site-nav-offcanvas__actions .site-nav-offcanvas__phone-icon {
        color: var(--fh-blue);
    }

    .site-nav-offcanvas__actions .btn-primary {
        width: 100%;
        justify-content: center;
    }
}

@media (min-width: 992px) {
    .offcanvas {
        position: static;
        transform: none !important;
        visibility: visible !important;
        background: transparent;
        border: 0;
        display: block !important;
        width: auto;
        max-width: none;
    }

    .offcanvas-header,
    .navbar-toggler {
        display: none;
    }

    .offcanvas-body {
        padding: 0;
    }

    .site-header .navbar {
        flex-wrap: nowrap;
    }

    .site-header__inner {
        flex-wrap: nowrap;
    }

    .site-nav-offcanvas {
        flex: 1 1 auto;
        min-width: 0;
    }

    .site-nav-offcanvas .offcanvas-body {
        display: flex;
        align-items: center;
        justify-content: space-between;
        width: 100%;
        padding: 0;
    }
}

.breadcrumb-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    list-style: none;
    padding: 0;
    margin: 0 0 1.5rem;
    font-size: 0.95rem;
}

.breadcrumb-list li + li::before {
    content: "/";
    margin-right: 0.5rem;
    opacity: 0.5;
}

.breadcrumb-list a:hover {
    color: var(--fh-blue);
}

.page-hero {
    padding: 4rem 0 3rem;
    background: linear-gradient(135deg, var(--fh-navy) 0%, #0b315f 62%, #124a8a 100%);
    color: var(--fh-white);
}

.page-hero-compact {
    padding-bottom: 2.5rem;
}

.page-hero .eyebrow,
.page-hero .eyebrow--light {
    color: rgba(255, 255, 255, 0.92);
}

.page-hero .breadcrumb-list,
.page-hero .breadcrumb-list a {
    color: rgba(255, 255, 255, 0.72);
}

.page-title {
    font-family: var(--font-display);
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    line-height: 1.08;
    letter-spacing: -0.02em;
    font-weight: 700;
    margin-bottom: 1rem;
}

.page-lead {
    max-width: 42rem;
    font-size: 1.05rem;
    line-height: 1.65;
    color: rgba(255, 255, 255, 0.88);
    margin-bottom: 1.5rem;
}

.page-hero .hero-actions {
    margin-top: 1.5rem;
}

.section-content,
.section-alt {
    padding: 5rem 0;
}

.section-alt {
    background: var(--fh-soft);
}

.section-title-sm {
    font-family: var(--font-display);
    font-size: clamp(1.35rem, 2.5vw, 1.75rem);
    letter-spacing: -0.01em;
    font-weight: 700;
    margin-bottom: 1rem;
    color: var(--fh-text);
}

.section-heading {
    max-width: none;
    margin-bottom: 2.5rem;
}

.section-heading .section-title {
    margin-bottom: 0.75rem;
}

.section-heading .section-intro,
.section-heading .eyebrow {
    margin-bottom: 0.75rem;
}

.content-grid {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);
    gap: 2rem;
    align-items: start;
}

.content-main {
    min-width: 0;
}

.resource-card,
.empty-state {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.resource-card {
    padding: 0;
    overflow: hidden;
    height: 100%;
    display: flex;
    flex-direction: column;
}

.resource-card__media {
    display: block;
    overflow: hidden;
}

.resource-card__image {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

.resource-card__body {
    padding: 1.35rem 1.5rem 1.5rem;
    display: flex;
    flex-direction: column;
    flex: 1;
}

.resource-card__body .card-link {
    margin-top: auto;
    padding-top: 1rem;
}

.resource-card__meta {
    color: var(--fh-gray-600);
    font-size: 0.88rem;
    font-weight: 600;
}

.resources-hub-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.5rem;
}

.cost-guides-disclaimer {
    margin: 0 0 2rem;
    padding: 1rem 1.25rem;
    background: var(--fh-white);
    border-left: 4px solid var(--fh-blue);
    border-radius: var(--fh-radius);
    font-size: 0.95rem;
    color: var(--fh-gray-700);
    line-height: 1.65;
}

.page-hero .cost-guides-disclaimer {
    color: var(--fh-gray-700);
    background: var(--fh-white);
}

.cost-guides-highlights {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1rem;
    margin: 0 0 2.5rem;
}

.cost-guides-highlight {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    padding: 1.25rem;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    box-shadow: var(--fh-shadow);
}

.cost-guides-highlight__title {
    margin: 0 0 0.35rem;
    font-family: var(--font-display);
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--fh-blue);
}

.cost-guides-highlight__text {
    margin: 0;
    font-size: 0.92rem;
    color: var(--fh-gray-600);
}

.cost-guides-intro__media {
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.cost-guides-intro__image {
    display: block;
    width: 100%;
    height: auto;
}

.location-reviews {
    margin-top: 2.5rem;
}

.location-reviews__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
    margin-top: 1.25rem;
}

.cost-scope-planner {
    margin: 2rem 0;
    padding: 1.5rem;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    box-shadow: var(--fh-shadow);
}

.cost-scope-planner__eyebrow {
    margin: 0 0 0.35rem;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--fh-blue);
}

.cost-scope-planner__title {
    margin: 0 0 0.75rem;
    font-family: var(--font-display);
    font-size: 1.35rem;
    font-weight: 700;
}

.cost-scope-planner__lead,
.cost-scope-planner__disclaimer {
    color: var(--fh-gray-600);
    font-size: 0.95rem;
}

.cost-scope-planner__field {
    margin-top: 1rem;
}

.cost-scope-planner__checks {
    display: grid;
    gap: 0.65rem;
}

.cost-scope-planner__check {
    display: flex;
    gap: 0.65rem;
    align-items: flex-start;
    font-size: 0.95rem;
    color: var(--fh-gray-700);
}

.cost-scope-planner__check input {
    margin-top: 0.2rem;
}

.cost-scope-planner__results {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--fh-gray-300);
}

.cost-scope-planner__results-title {
    margin: 0 0 0.75rem;
    font-weight: 700;
    color: var(--fh-navy);
}

.cost-calculator {
    margin: 2rem 0;
    padding: 1.5rem;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    box-shadow: var(--fh-shadow);
}

.cost-calculator__eyebrow {
    margin: 0 0 0.35rem;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--fh-blue);
}

.cost-calculator__title {
    margin: 0 0 0.75rem;
    font-family: var(--font-display);
    font-size: 1.35rem;
    font-weight: 700;
}

.cost-calculator__lead,
.cost-calculator__disclaimer {
    color: var(--fh-gray-600);
    font-size: 0.95rem;
}

.cost-calculator__field {
    margin-top: 1rem;
}

.cost-calculator__checks {
    display: grid;
    gap: 0.65rem;
}

.cost-calculator__check {
    display: flex;
    gap: 0.65rem;
    align-items: flex-start;
    font-size: 0.95rem;
    color: var(--fh-gray-700);
}

.cost-calculator__check input {
    margin-top: 0.2rem;
}

.cost-calculator__range {
    margin-top: 1.25rem;
    padding: 1rem 1.1rem;
    background: #fff;
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
}

.cost-calculator__range-label {
    margin: 0 0 0.35rem;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--fh-blue);
}

.cost-calculator__range-value {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.65rem;
    font-weight: 700;
    color: var(--fh-navy);
    line-height: 1.2;
}

.cost-calculator__results {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--fh-gray-300);
}

.cost-calculator__results-title {
    margin: 0 0 0.75rem;
    font-weight: 700;
    color: var(--fh-navy);
}

.resource-hero__meta {
    color: rgba(255, 255, 255, 0.78);
    font-size: 0.92rem;
    font-weight: 600;
    margin-top: 1rem;
}

.resource-hero-media {
    padding: 2.5rem 0 3.5rem;
}

.resource-hero-media__frame {
    max-width: 820px;
    margin: 0 auto;
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.resource-hero-media__image {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

.article-takeaways {
    margin-bottom: 2.5rem;
    padding: 1.5rem 1.35rem;
    border-radius: calc(var(--fh-radius) + 2px);
    background: linear-gradient(135deg, rgba(22, 119, 232, 0.07) 0%, var(--fh-soft) 100%);
    border: 1px solid rgba(22, 119, 232, 0.14);
}

.article-takeaways__eyebrow {
    margin: 0 0 0.35rem;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--fh-blue);
}

.article-takeaways__title {
    margin: 0 0 1rem;
    font-size: 1.15rem;
    font-weight: 700;
}

.info-panel,
.feature-card,
.option-card,
.process-card,
.location-card,
.empty-state {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.info-panel-title {
    font-family: var(--font-display);
    font-weight: 700;
    letter-spacing: -0.01em;
    margin-bottom: 1rem;
}

.feature-card h3,
.option-card h3,
.process-card h3,
.resource-card h2,
.resource-card h3 {
    font-family: var(--font-display);
    font-weight: 700;
    letter-spacing: -0.01em;
}

.check-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 0.75rem;
}

.check-list li {
    position: relative;
    padding-left: 1.5rem;
}

.check-list li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.55rem;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background: var(--fh-blue);
}

.process-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1rem;
}

.process-step {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background: var(--fh-blue);
    color: var(--fh-white);
    font-weight: 700;
    margin-bottom: 1rem;
}

.location-grid-large {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1rem;
}

.location-card-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
}

.location-card-links a {
    color: var(--fh-navy);
    font-weight: 600;
}

.location-card-links a:hover {
    color: var(--fh-blue);
}

.empty-state {
    text-align: center;
    max-width: 760px;
    margin: 0 auto;
}

.lead-form .form-control,
.lead-form .form-select {
    border-radius: 0.75rem;
    border-color: var(--fh-gray-300);
    padding: 0.85rem 1rem;
}

.lead-form .form-label {
    font-weight: 600;
}

.lead-form__hp {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
}

.contact-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 0.75rem;
}

.faq-accordion .accordion-item {
    border: 1px solid var(--fh-gray-300);
    border-radius: 0.85rem !important;
    overflow: hidden;
    margin-bottom: 0.75rem;
}

.faq-accordion .accordion-button {
    font-weight: 700;
    background: var(--fh-white);
}

.faq-accordion .accordion-button:not(.collapsed) {
    color: var(--fh-text);
    background: rgba(22, 119, 232, 0.08);
    box-shadow: none;
}

.badge-coming-soon {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 0.75rem;
    border-radius: 999px;
    background: var(--fh-gray-100);
    color: var(--fh-gray-600);
    font-size: 0.85rem;
    font-weight: 700;
}

@media (max-width: 991.98px) {
    body {
        padding-bottom: 4.5rem;
    }

    .content-grid {
        grid-template-columns: 1fr;
    }

    .featured-project-panel,
    .before-after-grid {
        grid-template-columns: 1fr;
    }
}

.section-projects,
.section-featured-project {
    padding: 4rem 0;
}

.section-featured-project {
    background: var(--fh-gray-100);
}

.featured-project-panel {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(280px, 0.8fr);
    gap: 2rem;
    align-items: center;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 0.25rem);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.featured-project-media img,
.project-card-media img,
.project-gallery-item img,
.before-after-item img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.featured-project-media {
    min-height: 320px;
}

.featured-project-copy {
    padding: 2rem;
}

.featured-project-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.featured-project-meta span,
.project-meta-row span {
    display: inline-flex;
    align-items: center;
    padding: 0.45rem 0.85rem;
    border-radius: 999px;
    background: var(--fh-gray-100);
    font-size: 0.9rem;
    font-weight: 600;
}

.project-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
}

.project-grid--compact {
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 380px));
}

.project-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.project-card-media {
    position: relative;
    display: block;
    aspect-ratio: 4 / 3;
    overflow: hidden;
}

.project-card-badge {
    position: absolute;
    left: 1rem;
    top: 1rem;
    padding: 0.35rem 0.75rem;
    border-radius: 999px;
    background: rgba(8, 17, 31, 0.82);
    color: var(--fh-white);
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.project-card-body {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 1.25rem;
    flex: 1;
}

.project-card-title {
    font-family: var(--font-display);
    font-size: 1.15rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    line-height: 1.3;
    margin: 0;
}

.project-card-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    font-weight: 600;
}

.project-card-excerpt {
    flex: 1;
    margin-bottom: 0;
}

.project-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 2rem;
}

.filter-chip {
    display: inline-flex;
    align-items: center;
    padding: 0.65rem 1rem;
    border-radius: var(--fh-radius);
    border: 1px solid var(--fh-gray-300);
    background: var(--fh-white);
    font-weight: 600;
    font-size: 0.92rem;
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.filter-chip.is-active,
.filter-chip:hover {
    background: rgba(22, 119, 232, 0.12);
    border-color: var(--fh-blue);
    color: var(--fh-blue);
}

.before-after-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.before-after-item {
    margin: 0;
    border-radius: var(--fh-radius);
    overflow: hidden;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    box-shadow: var(--fh-shadow);
}

.before-after-item figcaption {
    padding: 0.85rem 1rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    background: var(--fh-gray-100);
}

.project-details {
    display: grid;
    gap: 1rem;
    margin: 0;
}

.project-details div {
    display: grid;
    gap: 0.25rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--fh-gray-300);
}

.project-details dt {
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--fh-gray-600);
}

.project-details dd {
    margin: 0;
    font-weight: 600;
}

.project-meta-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.project-gallery {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1rem;
}

.project-gallery-item {
    margin: 0;
    border-radius: var(--fh-radius);
    overflow: hidden;
    aspect-ratio: 4 / 3;
}

.review-panel {
    max-width: 760px;
    margin: 0 auto;
    text-align: center;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    padding: 2rem;
    box-shadow: var(--fh-shadow);
}

.review-panel blockquote {
    font-size: 1.25rem;
    margin: 0 0 1rem;
}

.review-author {
    color: var(--fh-gray-600);
    font-weight: 600;
}

.before-after-stack {
    display: grid;
    gap: 2rem;
}

.before-after-project h3 {
    margin-bottom: 1rem;
    font-family: var(--font-display);
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.resource-type-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 0.75rem;
    border-radius: 999px;
    background: rgba(22, 119, 232, 0.12);
    color: var(--fh-blue);
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    margin-bottom: 0.75rem;
}

.article-content .article-section + .article-section {
    margin-top: 2rem;
    padding-top: 2rem;
    border-top: 1px solid var(--fh-gray-300);
}

.article-content p:last-child {
    margin-bottom: 0;
}

.legal-content .legal-meta {
    color: var(--fh-gray-600);
    font-size: 0.95rem;
    margin-bottom: 2rem;
    padding-bottom: 1.25rem;
    border-bottom: 1px solid var(--fh-gray-300);
}

.legal-content .section-title-sm {
    margin-top: 2.5rem;
    font-size: clamp(1.2rem, 2vw, 1.45rem);
    letter-spacing: -0.01em;
    text-transform: none;
}

.legal-content .section-title-sm:first-of-type {
    margin-top: 0;
}

.legal-content ul {
    padding-left: 1.25rem;
    margin-bottom: 1.25rem;
}

.legal-content li + li {
    margin-top: 0.45rem;
}

.legal-content p {
    margin-bottom: 1.1rem;
}

.legal-contact-list {
    list-style: none;
    padding-left: 0;
    margin-bottom: 1.5rem;
}

.legal-contact-list li + li {
    margin-top: 0.35rem;
}

.review-card {
    height: 100%;
    padding: 1.5rem;
    border: 1px solid var(--fh-gray-300);
    border-radius: 0.75rem;
    background: #fff;
}

.review-card blockquote {
    margin: 0;
    font-size: 1rem;
    line-height: 1.6;
}

.review-rating {
    color: var(--fh-yellow);
    letter-spacing: 0.08em;
}

/* --- Homepage (reference layout) --- */
.page-home #main-content {
    padding-top: 0;
}

.home-hero {
    position: relative;
    background: var(--fh-navy);
    color: var(--fh-white);
    overflow: hidden;
    min-height: clamp(560px, 78vh, 760px);
}

.home-hero__container {
    position: relative;
    z-index: 2;
    min-height: inherit;
    display: flex;
    align-items: center;
    padding-top: clamp(2.5rem, 5vw, 4rem);
    padding-bottom: clamp(2rem, 4vw, 3rem);
}

.home-hero__row {
    width: 100%;
}

.home-hero__content {
    max-width: 36rem;
}

.home-hero__media-col {
    position: absolute;
    inset: 0 0 0 42%;
    overflow: hidden;
}

.home-hero__media-zoom {
    width: 100%;
    height: 100%;
    transform: scale(1.12);
    transform-origin: 58% center;
    animation: home-hero-zoom 10s ease-in-out infinite alternate;
    will-change: transform;
}

.home-hero__media-zoom picture,
.home-hero__media-zoom img,
.home-hero__media-col picture,
.home-hero__media-col img,
.home-hero__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

@keyframes home-hero-zoom {
    from {
        transform: scale(1.12);
    }
    to {
        transform: scale(1.38);
    }
}

.location-hero__bg-image {
    transform: scale(1.12);
    transform-origin: center center;
    animation: home-hero-zoom 10s ease-in-out infinite alternate;
    will-change: transform;
}

.home-hero__media-col::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(
        90deg,
        var(--fh-navy) 0%,
        rgba(7, 26, 47, 0.92) 10%,
        rgba(7, 26, 47, 0.45) 28%,
        transparent 52%
    );
}

@media (max-width: 991.98px) {
    .home-hero {
        min-height: auto;
    }

    .home-hero__media-col {
        inset: 0;
        opacity: 0.28;
    }

    .home-hero__media-col::before {
        background: linear-gradient(180deg, rgba(7, 26, 47, 0.35) 0%, var(--fh-navy) 72%);
    }
}

@media (min-width: 992px) {
    .home-hero__media-col {
        inset: 0 0 0 46%;
    }
}

.home-hero__title {
    font-size: clamp(2.35rem, 4.6vw, 3.85rem);
    line-height: 1.08;
    font-weight: 700;
    max-width: 12ch;
    margin-bottom: 1rem;
}

.text-accent-light {
    color: var(--fh-blue);
}

.home-hero__copy {
    max-width: 32rem;
    color: rgba(255, 255, 255, 0.88);
    font-size: 1.05rem;
    line-height: 1.65;
}

.home-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 1.75rem;
}

.home-trust-bar {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.15rem 1.5rem;
    margin-top: clamp(2rem, 4vw, 3rem);
    padding-top: clamp(1.5rem, 3vw, 2rem);
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

@media (min-width: 768px) {
    .home-trust-bar {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (max-width: 991.98px) {
    .home-trust-bar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.home-trust-bar__item {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    color: rgba(255, 255, 255, 0.92);
    font-weight: 600;
    font-size: 0.92rem;
    line-height: 1.35;
}

.section-block {
    padding: 5rem 0;
}

.section-block--soft {
    background: var(--fh-soft);
}

.section-heading-row {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    justify-content: space-between;
    gap: 1rem 1.5rem;
    margin-bottom: 2.5rem;
}

.home-about__media {
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.home-about__image {
    width: 100%;
    height: auto;
    display: block;
}

.home-about__trust {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.5rem 2rem;
    margin: 1.75rem 0 2rem;
}

.home-about__trust-item {
    display: flex;
    align-items: center;
    gap: 1rem;
    font-weight: 600;
    color: var(--fh-text);
    font-size: 0.98rem;
}

.home-about__trust-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    flex-shrink: 0;
}

.home-about__trust-icon .icon {
    font-size: 1.65rem;
}

.home-services .row > [class*="col-"] {
    overflow: visible;
}

.home-service-card {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto auto;
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    overflow: visible;
    box-shadow: var(--fh-shadow);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.home-service-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(7, 26, 47, 0.12);
}

.home-service-card__media {
    grid-row: 1;
    grid-column: 1;
    position: relative;
    z-index: 1;
    overflow: hidden;
    border-radius: calc(var(--fh-radius) + 2px) calc(var(--fh-radius) + 2px) 0 0;
}

.home-service-card__image,
.home-service-card__media picture {
    display: block;
    width: 100%;
}

.home-service-card__image {
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

.home-service-card__icon {
    grid-row: 1;
    grid-column: 1;
    align-self: end;
    justify-self: center;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    margin-bottom: -1.625rem;
    border-radius: 999px;
    background: var(--fh-navy);
    box-shadow: 0 8px 20px rgba(7, 26, 47, 0.22);
}

.home-service-card__body {
    grid-row: 2;
    grid-column: 1;
    position: relative;
    z-index: 2;
    padding: 2.5rem 1.25rem 1.5rem;
    text-align: center;
    background: var(--fh-white);
    border-radius: 0 0 calc(var(--fh-radius) + 2px) calc(var(--fh-radius) + 2px);
}

.home-service-card__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.75rem;
    color: var(--fh-text);
}

.home-service-card__text {
    color: var(--fh-gray-600);
    font-size: 0.95rem;
    margin-bottom: 1rem;
}

.home-project-card {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.home-project-card__media {
    display: block;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--fh-soft);
}

.home-project-card__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    display: block;
    transition: transform 0.35s ease;
}

.home-project-card__media:hover .home-project-card__image {
    transform: scale(1.03);
}

.home-project-card__body {
    padding: 1.25rem;
}

.home-project-card__title {
    font-size: 1rem;
    font-weight: 700;
    margin-bottom: 0.35rem;
}

.home-project-card__meta {
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    margin: 0;
}

.ba-slider {
    position: relative;
    overflow: hidden;
    aspect-ratio: 4 / 3;
    background: var(--fh-soft);
    user-select: none;
}

.ba-slider__labels {
    position: absolute;
    inset: 0.75rem 0.75rem auto;
    display: flex;
    justify-content: space-between;
    z-index: 4;
    pointer-events: none;
}

.ba-slider__labels span {
    background: rgba(7, 26, 47, 0.72);
    color: var(--fh-white);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    padding: 0.25rem 0.5rem;
    border-radius: 4px;
}

.ba-slider__after,
.ba-slider__before {
    position: absolute;
    inset: 0;
}

.ba-slider__before {
    z-index: 2;
    clip-path: inset(0 50% 0 0);
}

.ba-slider__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    display: block;
}

.ba-slider__disclosure {
    position: absolute;
    inset: auto 0.75rem 0.75rem;
    z-index: 5;
    margin: 0;
    padding: 0.35rem 0.65rem;
    background: rgba(7, 26, 47, 0.82);
    color: var(--fh-white);
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    border-radius: 4px;
    pointer-events: none;
}

.before-after-block__disclosure {
    margin: 0 0 0.75rem;
    color: var(--fh-gray-600);
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.before-after-placeholder {
    aspect-ratio: 4 / 3;
    background: linear-gradient(135deg, var(--fh-soft) 0%, #e8edf2 100%);
    border: 1px dashed rgba(7, 26, 47, 0.18);
    border-radius: var(--fh-radius, 12px);
    display: grid;
    place-items: center;
    padding: 1.5rem;
    text-align: center;
}

.before-after-placeholder__eyebrow {
    display: block;
    color: var(--fh-navy);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin-bottom: 0.35rem;
}

.before-after-placeholder__text {
    color: var(--fh-gray-600);
    font-size: 0.95rem;
    max-width: 22rem;
}

.ba-slider__handle {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 2px;
    background: var(--fh-white);
    z-index: 3;
    transform: translateX(-50%);
    pointer-events: none;
}

.ba-slider__knob {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 2.2rem;
    height: 2.2rem;
    border-radius: 999px;
    background: var(--fh-white);
    color: var(--fh-navy);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.85rem;
    font-weight: 700;
    box-shadow: var(--fh-shadow);
}

.ba-slider__input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: ew-resize;
    z-index: 6;
    touch-action: pan-y;
}

.home-cta-banner {
    padding: clamp(3rem, 5vw, 4.5rem) 0 5rem;
}

.home-cta-banner + .site-footer {
    margin-top: 0;
}

.section-content + .home-cta-banner {
    margin-top: 0;
}

.section-content:has(+ .home-cta-banner) {
    padding-bottom: 3rem;
}

.home-cta-banner__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1.25rem 1.75rem;
    padding: 1.75rem 2rem;
    border-radius: calc(var(--fh-radius) + 2px);
    background: linear-gradient(135deg, var(--fh-navy) 0%, #0b315f 62%, #124a8a 100%);
    color: var(--fh-white);
    box-shadow: var(--fh-shadow);
    border: 1px solid rgba(255, 255, 255, 0.08);
}

.home-cta-banner__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.75rem;
    height: 3.75rem;
    border-radius: 0.85rem;
    background: rgba(255, 255, 255, 0.12);
    border: 1px solid rgba(255, 255, 255, 0.18);
    flex-shrink: 0;
}

.home-cta-banner__copy {
    flex: 1 1 280px;
    min-width: 0;
}

.home-cta-banner__title {
    margin: 0 0 0.35rem;
    font-size: clamp(1.15rem, 2vw, 1.45rem);
    font-weight: 700;
    line-height: 1.25;
    color: var(--fh-white);
}

.home-cta-banner__subtitle {
    margin: 0;
    font-size: 1rem;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.96);
    max-width: 38rem;
}

.btn-cta-banner {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.85rem 1.5rem;
    border-radius: 999px;
    font-weight: 700;
    color: var(--fh-navy);
    background: var(--fh-white);
    border: none;
    box-shadow: 0 8px 24px rgba(7, 26, 47, 0.18);
    flex-shrink: 0;
}

.btn-cta-banner:hover,
.btn-cta-banner:focus {
    color: var(--fh-navy);
    background: var(--fh-soft);
}

.btn-cta-banner .icon {
    color: var(--fh-blue);
}

/* --- About page --- */
.about-intro__media,
.about-craft__media {
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.about-intro__image,
.about-craft__image {
    display: block;
    width: 100%;
    height: auto;
}

.about-intro__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 1.75rem;
}

.about-stats__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

@media (min-width: 768px) {
    .about-stats__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.about-stat {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    padding: 1.5rem 1.25rem;
    text-align: center;
    box-shadow: var(--fh-shadow);
}

.about-stat__value {
    margin: 0 0 0.35rem;
    font-family: var(--font-display);
    font-size: clamp(1.75rem, 3vw, 2.25rem);
    font-weight: 700;
    color: var(--fh-blue);
    line-height: 1;
}

.about-stat__label {
    margin: 0;
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    font-weight: 600;
}

.about-stats__license {
    margin-top: 1.5rem;
    text-align: center;
    font-size: 0.95rem;
}

.about-value-card {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.about-value-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1rem;
}

.about-value-card__icon .icon {
    font-size: 1.65rem;
}

.about-value-card__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.65rem;
    color: var(--fh-text);
}

.about-value-card__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
}

.about-service-card {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.about-service-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(7, 26, 47, 0.12);
}

.about-service-card__media {
    display: block;
    overflow: hidden;
}

.about-service-card__image {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    display: block;
    transition: transform 0.35s ease;
}

.about-service-card:hover .about-service-card__image {
    transform: scale(1.03);
}

.about-service-card__body {
    padding: 1.25rem;
}

.about-service-card__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.5rem;
}

.about-service-card__title a {
    color: var(--fh-text);
}

.about-service-card__title a:hover {
    color: var(--fh-blue);
}

.about-service-card__text {
    color: var(--fh-gray-600);
    font-size: 0.95rem;
    line-height: 1.55;
    margin-bottom: 0.85rem;
}

.about-craft__list {
    margin: 1.5rem 0 2rem;
}

.about-craft__contact {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem 1.5rem;
}

.about-craft__phone {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 600;
    color: var(--fh-text);
}

.about-craft__phone:hover {
    color: var(--fh-blue);
}

.about-areas__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.about-areas__chip {
    display: inline-flex;
    align-items: center;
    padding: 0.7rem 1.1rem;
    border-radius: var(--fh-radius);
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    font-weight: 600;
    color: var(--fh-text);
    box-shadow: var(--fh-shadow);
}

/* --- Services hub page --- */
.services-hub-hero__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.75rem;
}

.services-hub-hero__chip {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.55rem 1rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.22);
    color: var(--fh-white);
    font-weight: 600;
    font-size: 0.92rem;
    transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.services-hub-hero__chip:hover {
    background: rgba(255, 255, 255, 0.16);
    border-color: rgba(255, 255, 255, 0.35);
    color: var(--fh-white);
    transform: translateY(-1px);
}

.services-hub-intro__media {
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.services-hub-intro__image {
    display: block;
    width: 100%;
    height: auto;
}

.services-hub-intro__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 1.75rem;
}

.services-hub-stats__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

@media (min-width: 768px) {
    .services-hub-stats__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.services-hub-stat {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    padding: 1.5rem 1.25rem;
    text-align: center;
    box-shadow: var(--fh-shadow);
}

.services-hub-stat__value {
    margin: 0 0 0.35rem;
    font-family: var(--font-display);
    font-size: clamp(1.75rem, 3vw, 2.25rem);
    font-weight: 700;
    color: var(--fh-blue);
    line-height: 1;
}

.services-hub-stat__label {
    margin: 0;
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    font-weight: 600;
}

.services-hub-stats__license {
    margin-top: 1.5rem;
    text-align: center;
    font-size: 0.95rem;
}

.services-hub-catalog__heading {
    margin-bottom: 2rem;
}

.services-hub-item {
    padding: 3.5rem 0;
}

.services-hub-item--alt {
    background: var(--fh-soft);
}

.services-hub-item__media {
    position: relative;
    display: block;
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.services-hub-item__image {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    transition: transform 0.35s ease;
}

.services-hub-item__media:hover .services-hub-item__image {
    transform: scale(1.03);
}

.services-hub-item__badge {
    position: absolute;
    left: 1rem;
    bottom: 1rem;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.45rem 0.85rem;
    border-radius: 999px;
    background: rgba(7, 26, 47, 0.78);
    color: var(--fh-white);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.services-hub-item__title {
    font-size: clamp(1.35rem, 2.5vw, 1.75rem);
    font-weight: 700;
    margin-bottom: 1rem;
    line-height: 1.25;
}

.services-hub-item__title a {
    color: var(--fh-text);
}

.services-hub-item__title a:hover {
    color: var(--fh-blue);
}

.services-hub-item__text {
    color: var(--fh-gray-600);
    line-height: 1.65;
    margin-bottom: 1.25rem;
}

.services-hub-item__list {
    margin-bottom: 1.75rem;
}

.services-hub-card {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.services-hub-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(7, 26, 47, 0.12);
}

.services-hub-card__media {
    position: relative;
    display: block;
    overflow: hidden;
}

.services-hub-card__image {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    display: block;
    transition: transform 0.35s ease;
}

.services-hub-card:hover .services-hub-card__image {
    transform: scale(1.03);
}

.services-hub-card__icon {
    position: absolute;
    left: 50%;
    bottom: 0;
    transform: translate(-50%, 50%);
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 999px;
    background: var(--fh-navy);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 8px 20px rgba(7, 26, 47, 0.22);
}

.services-hub-card__body {
    padding: 2rem 1.25rem 1.25rem;
}

.services-hub-card__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.5rem;
}

.services-hub-card__title a {
    color: var(--fh-text);
}

.services-hub-card__title a:hover {
    color: var(--fh-blue);
}

.services-hub-card__text {
    color: var(--fh-gray-600);
    font-size: 0.95rem;
    line-height: 1.55;
    margin-bottom: 0.85rem;
}

.services-hub-value {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.services-hub-value__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1rem;
}

.services-hub-value__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.65rem;
}

.services-hub-value__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
}

.services-hub-process__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}

@media (min-width: 768px) {
    .services-hub-process__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1200px) {
    .services-hub-process__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.services-hub-step {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
    height: 100%;
}

.services-hub-step__number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.5rem;
    height: 2.5rem;
    padding: 0 0.65rem;
    border-radius: 999px;
    background: rgba(22, 119, 232, 0.1);
    color: var(--fh-blue);
    font-weight: 700;
    font-size: 0.85rem;
    margin-bottom: 1rem;
}

.services-hub-step__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.65rem;
}

.services-hub-step__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
}

.services-hub-areas__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.services-hub-areas__chip {
    display: inline-flex;
    align-items: center;
    padding: 0.7rem 1.1rem;
    border-radius: var(--fh-radius);
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    font-weight: 600;
    color: var(--fh-text);
    box-shadow: var(--fh-shadow);
}

/* --- Service landing pages --- */
.page-service #main-content,
.page-services #main-content {
    padding-top: 0;
}

.service-hero {
    position: relative;
    background: var(--fh-navy);
    color: var(--fh-white);
    overflow: hidden;
    min-height: clamp(520px, 72vh, 700px);
}

.service-hero__container {
    position: relative;
    z-index: 2;
    min-height: inherit;
    display: flex;
    align-items: center;
    padding-top: clamp(2rem, 4vw, 3.5rem);
    padding-bottom: clamp(2rem, 4vw, 3rem);
}

.service-hero__row {
    width: 100%;
}

.service-hero__content {
    max-width: 40rem;
}

.service-hero__media-col {
    position: absolute;
    inset: 0 0 0 44%;
    overflow: hidden;
}

.service-hero__media-col::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(
        90deg,
        var(--fh-navy) 0%,
        rgba(7, 26, 47, 0.94) 12%,
        rgba(7, 26, 47, 0.5) 30%,
        transparent 54%
    );
}

.service-hero__media-col picture,
.service-hero__media-col img,
.service-hero__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.service-hero__title {
    font-size: clamp(2rem, 4.2vw, 3.25rem);
    line-height: 1.1;
    font-weight: 700;
    margin-bottom: 1rem;
}

.service-hero__copy {
    max-width: 34rem;
    color: rgba(255, 255, 255, 0.88);
    font-size: 1.05rem;
    line-height: 1.65;
}

.service-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 1.75rem;
}

.service-hero__trust {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem 1.5rem;
    margin-top: clamp(1.75rem, 3vw, 2.5rem);
    padding-top: 1.5rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.service-hero__trust-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    color: rgba(255, 255, 255, 0.92);
    font-weight: 600;
    font-size: 0.92rem;
}

.service-hero .breadcrumb-list,
.service-hero .breadcrumb-list a {
    color: rgba(255, 255, 255, 0.72);
}

.service-hero .breadcrumb-list a:hover {
    color: var(--fh-white);
}

.service-intro__media,
.service-local__media {
    position: relative;
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.service-intro__image,
.service-local__image {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

.service-intro__badge {
    position: absolute;
    left: 1rem;
    bottom: 1rem;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.45rem 0.85rem;
    border-radius: 999px;
    background: rgba(7, 26, 47, 0.78);
    color: var(--fh-white);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.service-intro__list {
    margin-top: 1.25rem;
}

.service-sidebar {
    margin-top: 1.5rem;
}

.service-sidebar__panel {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.service-sidebar__title {
    font-size: 1.15rem;
    font-weight: 700;
    margin-bottom: 0.75rem;
}

.service-sidebar__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
    margin-bottom: 1rem;
}

.service-sidebar__list {
    margin-bottom: 1.25rem;
}

.service-sidebar__phone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    margin-top: 0.85rem;
    font-weight: 600;
    color: var(--fh-text);
}

.service-sidebar__phone:hover {
    color: var(--fh-blue);
}

.service-benefit,
.service-option,
.service-guide {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.service-option--media {
    padding: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.service-option__media {
    overflow: hidden;
}

.service-option__image {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    transition: transform 0.35s ease;
}

.service-option--media:hover .service-option__image {
    transform: scale(1.05);
}

.service-option__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 1.35rem 1.5rem 1.5rem;
}

.service-option--media .service-option__title {
    margin-bottom: 0.55rem;
}

.service-benefit__icon,
.service-option__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1rem;
}

.service-option__icon {
    width: 3.5rem;
    height: 3.5rem;
    background: rgba(22, 119, 232, 0.08);
    border-color: rgba(22, 119, 232, 0.15);
}

.service-benefit__title,
.service-option__title,
.service-guide__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.65rem;
}

.service-benefit__text,
.service-option__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
}

.service-option--linked .service-option__text {
    margin-bottom: 0.75rem;
}

.service-option--linked .card-link {
    margin-top: auto;
}

.service-option__title a,
.service-option--linked .service-option__media {
    color: inherit;
    text-decoration: none;
}

.service-option__title a:hover {
    color: var(--fh-blue);
}

.service-subpage-section:last-child {
    margin-bottom: 0 !important;
}

.service-guide__icon {
    display: inline-flex;
    margin-bottom: 1rem;
}

.service-guide__title a {
    color: var(--fh-text);
}

.service-guide__title a:hover {
    color: var(--fh-blue);
}

.service-local__subtitle {
    font-size: 1.25rem;
    font-weight: 700;
    margin-bottom: 1rem;
}

.service-process__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}

@media (min-width: 768px) {
    .service-process__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1200px) {
    .service-process__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.service-step {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
    height: 100%;
}

.service-step__number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.5rem;
    height: 2.5rem;
    padding: 0 0.65rem;
    border-radius: 999px;
    background: rgba(22, 119, 232, 0.1);
    color: var(--fh-blue);
    font-weight: 700;
    font-size: 0.85rem;
    margin-bottom: 1rem;
}

.service-step__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.65rem;
}

.service-step__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
}

.service-showcase__card {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.service-showcase__media {
    display: block;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: var(--fh-soft);
}

.service-showcase__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    display: block;
    transition: transform 0.35s ease;
}

.service-showcase__media:hover .service-showcase__image {
    transform: scale(1.02);
}

.service-showcase__card .ba-slider {
    aspect-ratio: 16 / 9;
}

.service-showcase__body {
    padding: 1.25rem 1.5rem;
}

.service-showcase__title {
    font-size: 1.1rem;
    font-weight: 700;
    margin-bottom: 0.35rem;
}

.service-showcase__meta {
    color: var(--fh-gray-600);
    font-size: 0.95rem;
}

.service-areas__grid {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.service-areas__chip {
    display: inline-flex;
    align-items: center;
    padding: 0.7rem 1.1rem;
    border-radius: var(--fh-radius);
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    font-weight: 600;
    color: var(--fh-text);
    box-shadow: var(--fh-shadow);
    transition: transform 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.service-areas__chip:hover {
    transform: translateY(-1px);
    border-color: var(--fh-blue);
    color: var(--fh-blue);
}

.service-technical__header {
    max-width: 760px;
    margin-bottom: 2.5rem;
}

.service-technical__lead {
    margin-top: 1rem;
    font-size: 1.05rem;
    line-height: 1.7;
}

.service-technical__stack {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}

.service-tech-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
    align-items: center;
    padding: 1.5rem;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 4px);
    box-shadow: var(--fh-shadow);
}

.service-tech-row__media {
    border-radius: var(--fh-radius);
    overflow: hidden;
}

.service-tech-row__image {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

.service-tech-row__title {
    font-size: 1.25rem;
    font-weight: 700;
    margin-bottom: 0.75rem;
}

.service-tech-row__text {
    color: var(--fh-gray-600);
    line-height: 1.65;
    margin-bottom: 1rem;
}

.service-tech-row__list {
    margin-top: 0.25rem;
}

@media (min-width: 992px) {
    .service-tech-row {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 2rem;
        padding: 2rem;
    }

    .service-tech-row--reverse .service-tech-row__media {
        order: 2;
    }

    .service-tech-row--reverse .service-tech-row__body {
        order: 1;
    }
}

@media (max-width: 991.98px) {
    .service-hero {
        min-height: auto;
    }

    .service-hero__media-col {
        inset: 0;
        opacity: 0.28;
    }

    .service-hero__media-col::before {
        background: linear-gradient(180deg, rgba(7, 26, 47, 0.35) 0%, var(--fh-navy) 72%);
    }
}

@media (min-width: 992px) {
    .service-hero__media-col {
        inset: 0 0 0 48%;
    }
}

/* --- Projects hub page --- */
.projects-hub-hero__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.75rem;
}

.projects-hub-hero__chip {
    display: inline-flex;
    align-items: center;
    padding: 0.55rem 1rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.22);
    color: var(--fh-white);
    font-weight: 600;
    font-size: 0.92rem;
    transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.projects-hub-hero__chip:hover,
.projects-hub-hero__chip.is-active {
    background: rgba(255, 255, 255, 0.16);
    border-color: rgba(255, 255, 255, 0.35);
    color: var(--fh-white);
}

.projects-hub-hero__chip.is-active {
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
}

.projects-hub-showcase,
.projects-hub-card {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
    height: 100%;
    position: relative;
}

.projects-hub-showcase__body,
.projects-hub-card__body {
    padding: 1.25rem;
}

.projects-hub-showcase__title,
.projects-hub-card__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.35rem;
}

.projects-hub-showcase__title {
    margin-bottom: 0.35rem;
}

.projects-hub-showcase__meta,
.projects-hub-card__meta {
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    font-weight: 600;
}

.projects-hub-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 1rem;
    margin-bottom: 0.75rem;
}

.projects-hub-card__meta span {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.projects-hub-card__excerpt {
    color: var(--fh-gray-600);
    line-height: 1.6;
    margin-bottom: 0.85rem;
}

.projects-hub-card__badge {
    position: absolute;
    left: 1rem;
    top: 1rem;
    z-index: 3;
    padding: 0.35rem 0.75rem;
    border-radius: 999px;
    background: rgba(7, 26, 47, 0.82);
    color: var(--fh-white);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.projects-hub-card__slider {
    position: relative;
}

.projects-hub-card__media {
    display: block;
    overflow: hidden;
}

.projects-hub-card__image {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    display: block;
    transition: transform 0.35s ease;
}

.projects-hub-card:hover .projects-hub-card__image {
    transform: scale(1.03);
}

.projects-hub-intro__media {
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.projects-hub-intro__image {
    display: block;
    width: 100%;
    height: auto;
}

.projects-hub-intro__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 1.75rem;
}

.projects-hub-stats__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

@media (min-width: 768px) {
    .projects-hub-stats__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.projects-hub-stat {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    padding: 1.5rem 1.25rem;
    text-align: center;
    box-shadow: var(--fh-shadow);
}

.projects-hub-stat__value {
    margin: 0 0 0.35rem;
    font-family: var(--font-display);
    font-size: clamp(1.75rem, 3vw, 2.25rem);
    font-weight: 700;
    color: var(--fh-blue);
    line-height: 1;
}

.projects-hub-stat__label {
    margin: 0;
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    font-weight: 600;
}

.projects-hub-stats__license {
    margin-top: 1.5rem;
    text-align: center;
    font-size: 0.95rem;
}

.projects-hub-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    align-items: center;
}

.projects-hub-filters--locations {
    margin-bottom: 2rem;
}

.projects-hub-filters__label {
    flex: 0 0 100%;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--fh-gray-600);
    margin-bottom: -0.15rem;
}

@media (min-width: 768px) {
    .projects-hub-filters__label {
        flex: 0 0 auto;
        margin-bottom: 0;
        margin-right: 0.25rem;
    }
}

.projects-hub-filter {
    display: inline-flex;
    align-items: center;
    padding: 0.65rem 1.1rem;
    border-radius: var(--fh-radius);
    border: 1px solid var(--fh-gray-300);
    background: var(--fh-white);
    font-weight: 600;
    font-size: 0.92rem;
    color: var(--fh-text);
    box-shadow: var(--fh-shadow);
    transition: transform 0.2s ease, border-color 0.2s ease, color 0.2s ease, background 0.2s ease;
}

.projects-hub-filter:hover {
    border-color: var(--fh-blue);
    color: var(--fh-blue);
}

.projects-hub-filter.is-active {
    background: var(--fh-navy);
    border-color: var(--fh-navy);
    color: var(--fh-white);
}

.projects-hub-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
    gap: 1.5rem;
}

.projects-map__layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
    align-items: start;
}

#projects-catalog {
    scroll-margin-top: 6rem;
}

@media (min-width: 992px) {
    .projects-map__layout {
        grid-template-columns: minmax(0, 1.4fr) minmax(260px, 0.8fr);
    }
}

.projects-map__canvas {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 4px);
    box-shadow: var(--fh-shadow);
    padding: 1.25rem;
}

.projects-map__svg {
    display: block;
    width: 100%;
    height: auto;
    max-height: 520px;
}

.projects-map__water {
    fill: url(#projects-map-water);
}

.projects-map__land {
    fill: #f8fafc;
    stroke: none;
    pointer-events: none;
}

.projects-map__outline {
    fill: none;
    stroke: #1d4ed8;
    stroke-width: 2.5;
    stroke-linejoin: round;
    stroke-linecap: round;
    pointer-events: none;
}

.projects-map__marker {
    cursor: pointer;
    pointer-events: all;
}

.projects-map__hit {
    fill: transparent;
    stroke: none;
    pointer-events: all;
}

.projects-map__dot {
    fill: var(--fh-blue);
    stroke: var(--fh-white);
    stroke-width: 2;
    transition: transform 0.2s ease, fill 0.2s ease;
    pointer-events: none;
}

.projects-map__pulse {
    fill: rgba(22, 119, 232, 0.18);
    pointer-events: none;
}

.projects-map__marker:hover .projects-map__dot,
.projects-map__marker:focus .projects-map__dot {
    fill: var(--fh-navy);
}

.projects-map__caption {
    margin-top: 0.85rem;
    font-size: 0.88rem;
    color: var(--fh-gray-600);
}

.projects-map__panel {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    box-shadow: var(--fh-shadow);
    padding: 1.25rem 1.35rem;
}

.projects-map__panel-eyebrow {
    margin: 0 0 0.75rem;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--fh-blue);
}

.projects-map__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.5rem;
}

.projects-map__list-link {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.65rem 0.75rem;
    border-radius: var(--fh-radius);
    color: var(--fh-text);
    text-decoration: none;
    font-weight: 600;
    transition: background 0.2s ease, color 0.2s ease;
}

.projects-map__list-link:hover {
    background: var(--fh-soft);
    color: var(--fh-blue);
}

.projects-map__count {
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    font-weight: 600;
}

.projects-map__preview {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--fh-gray-300);
}

.projects-map__preview-title {
    margin: 0 0 0.35rem;
    font-weight: 700;
    color: var(--fh-navy);
}

.projects-map__preview-text {
    color: var(--fh-gray-600);
    font-size: 0.92rem;
}

.projects-map__preview-media {
    margin-bottom: 0.75rem;
    border-radius: var(--fh-radius);
    overflow: hidden;
}

.projects-map__preview-image {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

.projects-map__preview-link {
    display: inline-flex;
    margin-top: 0.75rem;
}

@media (max-width: 991.98px) {
    .projects-map {
        scroll-margin-top: calc(var(--fh-header-height) + env(safe-area-inset-top, 0px) + 0.5rem);
    }

    .projects-map__panel {
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .projects-map__list {
        max-height: min(
            28rem,
            calc(
                100dvh
                - var(--fh-mobile-cta-height)
                - var(--fh-header-height)
                - 8rem
                - env(safe-area-inset-top, 0px)
                - env(safe-area-inset-bottom, 0px)
            )
        );
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
        padding-block: 0.15rem 0.35rem;
    }

    .projects-map__list::-webkit-scrollbar {
        width: 4px;
    }

    .projects-map__list::-webkit-scrollbar-thumb {
        background: var(--fh-gray-300);
        border-radius: 999px;
    }
}

.projects-hub-filters--materials,
.projects-hub-filters--manufacturers {
    margin-top: 0.75rem;
}

.projects-hub-empty {
    text-align: center;
    padding: 3rem 1.5rem;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    box-shadow: var(--fh-shadow);
}

.projects-hub-empty__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.5rem;
    height: 4.5rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1.25rem;
}

.projects-hub-highlight {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.projects-hub-highlight__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1rem;
}

.projects-hub-highlight__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.65rem;
}

.projects-hub-highlight__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
}

/* --- Project detail page --- */
.project-hero {
    position: relative;
    min-height: clamp(28rem, 62vh, 40rem);
    display: flex;
    align-items: flex-end;
    overflow: hidden;
    background: var(--fh-navy);
}

.project-hero__media {
    position: absolute;
    inset: 0;
}

.project-hero__media::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(
        180deg,
        rgba(7, 26, 47, 0.35) 0%,
        rgba(7, 26, 47, 0.72) 48%,
        rgba(7, 26, 47, 0.94) 100%
    );
    pointer-events: none;
}

.project-hero__media picture,
.project-hero__media img,
.project-hero__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.project-hero__container {
    position: relative;
    z-index: 2;
    width: 100%;
    padding-top: 2rem;
    padding-bottom: clamp(2.5rem, 5vw, 4rem);
}

.project-hero__content {
    max-width: 760px;
}

.project-hero__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin-bottom: 1rem;
}

.project-hero__badge {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.45rem 0.85rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.18);
    color: var(--fh-white);
    font-size: 0.85rem;
    font-weight: 700;
}

.project-hero__badge .icon {
    margin: 0;
}

.project-hero__title {
    font-family: var(--font-display);
    font-size: clamp(2rem, 4.5vw, 3.35rem);
    line-height: 1.08;
    font-weight: 700;
    color: var(--fh-white);
    margin-bottom: 1rem;
}

.project-hero__lead {
    max-width: 42rem;
    color: rgba(255, 255, 255, 0.88);
    font-size: 1.05rem;
    line-height: 1.65;
    margin-bottom: 1.25rem;
}

.project-hero__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin-bottom: 1.5rem;
}

.project-hero__meta span {
    display: inline-flex;
    align-items: center;
    padding: 0.45rem 0.8rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.14);
    color: rgba(255, 255, 255, 0.92);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.project-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.project-hero .breadcrumb-list,
.project-hero .breadcrumb-list a {
    color: rgba(255, 255, 255, 0.72);
}

.project-hero .breadcrumb-list a:hover {
    color: var(--fh-white);
}

.project-showcase__hint {
    max-width: 280px;
    text-align: right;
    font-size: 0.95rem;
    line-height: 1.5;
}

.project-showcase__card {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.project-showcase__slider {
    aspect-ratio: 16 / 9;
}

.project-showcase__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.25rem 1.5rem;
    border-top: 1px solid var(--fh-gray-300);
}

.project-showcase__title {
    font-size: 1.15rem;
    font-weight: 700;
}

.project-showcase__meta {
    color: var(--fh-gray-600);
    font-size: 0.95rem;
}

.project-overview__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(300px, 1fr);
    gap: 1.75rem;
    align-items: start;
}

.project-specs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    margin-top: 1.75rem;
}

.project-spec {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    padding: 1rem 1.1rem;
    box-shadow: var(--fh-shadow);
}

.project-spec__label {
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--fh-gray-600);
}

.project-spec__value {
    font-weight: 700;
    color: var(--fh-text);
    line-height: 1.4;
}

a.project-spec__value:hover {
    color: var(--fh-blue);
}

.project-sidebar__panel {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.project-sidebar__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1rem;
}

.project-sidebar__title {
    font-size: 1.2rem;
    font-weight: 700;
    margin-bottom: 0.75rem;
}

.project-sidebar__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
    margin-bottom: 1rem;
}

.project-sidebar__list {
    margin-bottom: 1.25rem;
}

.project-sidebar__phone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    margin-top: 0.85rem;
    font-weight: 700;
    color: var(--fh-text);
}

.project-sidebar__phone:hover {
    color: var(--fh-blue);
}

.project-story__card {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.75rem;
    box-shadow: var(--fh-shadow);
}

.project-story__card--accent {
    border-color: rgba(22, 119, 232, 0.25);
    background: linear-gradient(180deg, rgba(22, 119, 232, 0.05) 0%, var(--fh-white) 42%);
}

.project-story__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1rem;
}

.project-story__title {
    font-size: 1.25rem;
    font-weight: 700;
    margin-bottom: 0.85rem;
}

.project-story__text {
    color: var(--fh-gray-600);
    line-height: 1.65;
}

.project-result__panel {
    max-width: 860px;
    margin: 0 auto;
    text-align: center;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 4px);
    padding: clamp(2rem, 4vw, 3rem);
    box-shadow: var(--fh-shadow);
}

.project-result__text {
    color: var(--fh-gray-600);
    font-size: 1.05rem;
    line-height: 1.7;
}

.project-gallery-section__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
    gap: 1rem;
}

.project-gallery-section__item {
    margin: 0;
    border-radius: calc(var(--fh-radius) + 2px);
    overflow: hidden;
    aspect-ratio: 4 / 3;
    box-shadow: var(--fh-shadow);
    border: 1px solid var(--fh-gray-300);
}

.project-gallery-section__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.project-review .reviews-hub-card {
    max-width: 820px;
}

.project-guides__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
    gap: 1rem;
}

.project-guides__grid .resource-card__body {
    padding: 1.25rem 1.5rem 1.5rem;
}

.project-guide-card {
    height: 100%;
    display: flex;
    flex-direction: column;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.project-guide-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1rem;
}

.project-guide-card__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.65rem;
}

.project-guide-card__title a {
    color: var(--fh-text);
}

.project-guide-card__title a:hover {
    color: var(--fh-blue);
}

.project-guide-card__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
    flex: 1;
    margin-bottom: 1rem;
}

@media (max-width: 991.98px) {
    .project-overview__grid {
        grid-template-columns: 1fr;
    }

    .project-showcase__hint {
        max-width: none;
        text-align: left;
    }

    .project-showcase__footer {
        flex-direction: column;
        align-items: flex-start;
    }
}

@media (max-width: 575.98px) {
    .project-specs {
        grid-template-columns: 1fr;
    }
}

/* --- Service areas hub page --- */
.locations-hub-hero__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin-top: 1.75rem;
}

.locations-hub-hero__chip {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.5rem 0.95rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.22);
    color: var(--fh-white);
    font-weight: 600;
    font-size: 0.88rem;
    transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.locations-hub-hero__chip:hover {
    background: rgba(255, 255, 255, 0.16);
    border-color: rgba(255, 255, 255, 0.35);
    color: var(--fh-white);
    transform: translateY(-1px);
}

.locations-hub-intro__media {
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
    background: var(--fh-white);
}

.locations-hub-intro__map.ct-service-map {
    aspect-ratio: 800 / 620;
}

.locations-hub-intro__image {
    display: block;
    width: 100%;
    height: auto;
}

.locations-hub-regions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin: 1.25rem 0 1.75rem;
}

.locations-hub-regions__chip {
    display: inline-flex;
    align-items: center;
    padding: 0.55rem 0.95rem;
    border-radius: var(--fh-radius);
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    font-weight: 600;
    color: var(--fh-text);
    box-shadow: var(--fh-shadow);
}

.locations-hub-intro__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.locations-hub-stats__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

@media (min-width: 768px) {
    .locations-hub-stats__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.locations-hub-stat {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    padding: 1.5rem 1.25rem;
    text-align: center;
    box-shadow: var(--fh-shadow);
}

.locations-hub-stat__value {
    margin: 0 0 0.35rem;
    font-family: var(--font-display);
    font-size: clamp(1.75rem, 3vw, 2.25rem);
    font-weight: 700;
    color: var(--fh-blue);
    line-height: 1;
}

.locations-hub-stat__label {
    margin: 0;
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    font-weight: 600;
}

.locations-hub-stats__license {
    margin-top: 1.5rem;
    text-align: center;
    font-size: 0.95rem;
}

.locations-hub-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
    gap: 1.5rem;
}

.locations-hub-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.locations-hub-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(7, 26, 47, 0.12);
}

.locations-hub-card__head {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    margin-bottom: 1rem;
}

.locations-hub-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 999px;
    background: rgba(22, 119, 232, 0.08);
    border: 1px solid rgba(22, 119, 232, 0.15);
    flex-shrink: 0;
}

.locations-hub-card__title {
    font-size: 1.15rem;
    font-weight: 700;
    margin-bottom: 0.45rem;
    line-height: 1.25;
}

.locations-hub-card__title a {
    color: var(--fh-text);
}

.locations-hub-card__title a:hover {
    color: var(--fh-blue);
}

.locations-hub-card__lead {
    color: var(--fh-gray-600);
    line-height: 1.55;
    font-size: 0.95rem;
}

.locations-hub-card__neighborhoods {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.locations-hub-card__neighborhood {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 0.7rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--fh-gray-600);
}

.locations-hub-card__services {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.locations-hub-card__service {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    padding: 0.55rem 0.65rem;
    border-radius: var(--fh-radius);
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--fh-text);
    text-align: center;
    transition: border-color 0.2s ease, color 0.2s ease, background 0.2s ease;
}

.locations-hub-card__service:hover {
    border-color: rgba(22, 119, 232, 0.25);
    color: var(--fh-blue);
    background: rgba(22, 119, 232, 0.04);
}

.locations-hub-callouts__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

@media (min-width: 768px) {
    .locations-hub-callouts__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.locations-hub-callout {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
    color: var(--fh-text);
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.locations-hub-callout:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(7, 26, 47, 0.12);
    border-color: rgba(22, 119, 232, 0.25);
    color: var(--fh-text);
}

.locations-hub-callout__media {
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--fh-soft);
}

.locations-hub-callout__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.3s ease;
}

.locations-hub-callout:hover .locations-hub-callout__image {
    transform: scale(1.04);
}

.locations-hub-callout__label {
    display: block;
    padding: 1rem 0.85rem;
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1.35;
    text-align: center;
}

.locations-hub-card__link {
    margin-top: auto;
}

.locations-hub-service,
.locations-hub-highlight {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.locations-hub-highlight__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1rem;
}

.locations-hub-card__icon .icon,
.locations-hub-highlight__icon .icon {
    font-size: 1.35rem;
    line-height: 1;
}

.locations-hub-hero__chip .icon {
    font-size: 0.85rem;
    line-height: 1;
}

.locations-hub-service__title,
.locations-hub-highlight__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.65rem;
}

.locations-hub-service__title a {
    color: var(--fh-text);
}

.locations-hub-service__title a:hover {
    color: var(--fh-blue);
}

.locations-hub-service__text,
.locations-hub-highlight__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
}

.locations-hub-directory__lead {
    max-width: 760px;
    margin-bottom: 1.75rem;
    line-height: 1.65;
}

.locations-hub-directory__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.65rem;
}

@media (min-width: 576px) {
    .locations-hub-directory__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (min-width: 992px) {
    .locations-hub-directory__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (min-width: 1200px) {
    .locations-hub-directory__grid {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }
}

.locations-hub-directory__item {
    display: block;
    padding: 0.7rem 0.85rem;
    border-radius: var(--fh-radius);
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    color: var(--fh-text);
    font-size: 0.92rem;
    font-weight: 600;
    line-height: 1.35;
    box-shadow: var(--fh-shadow);
}

.locations-hub-directory__item--linked {
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.locations-hub-directory__item--linked:hover {
    transform: translateY(-1px);
    border-color: rgba(22, 119, 232, 0.25);
    box-shadow: 0 10px 24px rgba(7, 26, 47, 0.08);
    color: var(--fh-blue);
}

.locations-hub-directory__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 2rem;
}

.about-areas__chip--linked {
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.about-areas__chip--linked:hover {
    transform: translateY(-1px);
    border-color: rgba(22, 119, 232, 0.25);
    color: var(--fh-blue);
}

/* --- Individual location / service area pages --- */
.location-hero {
    position: relative;
    isolation: isolate;
    padding: 3.5rem 0 4rem;
    color: var(--fh-white);
    overflow: hidden;
}

.location-hero__bg {
    position: absolute;
    inset: 0;
    z-index: -2;
}

.location-hero__bg-image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: brightness(0.62) saturate(0.9);
}

.location-hero__overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        linear-gradient(
            90deg,
            rgba(7, 26, 47, 0.97) 0%,
            rgba(7, 26, 47, 0.92) 36%,
            rgba(7, 26, 47, 0.72) 58%,
            rgba(7, 26, 47, 0.48) 100%
        ),
        rgba(7, 26, 47, 0.28);
}

.location-hero__content {
    position: relative;
    z-index: 2;
}

.location-hero .page-title,
.location-hero .page-lead,
.location-hero .eyebrow {
    text-shadow: 0 2px 16px rgba(7, 26, 47, 0.55);
}

.location-hero .page-lead {
    color: rgba(255, 255, 255, 0.94);
}

.location-hero__content .breadcrumb-list,
.location-hero__content .breadcrumb-list a {
    color: rgba(255, 255, 255, 0.82);
    text-shadow: 0 1px 8px rgba(7, 26, 47, 0.45);
}

.location-hero__stats {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.85rem;
}

.location-hero__stat {
    padding: 1rem 1.1rem;
    border-radius: calc(var(--fh-radius) + 2px);
    background: rgba(7, 26, 47, 0.55);
    border: 1px solid rgba(255, 255, 255, 0.22);
    backdrop-filter: blur(10px);
}

.location-hero__stat-value {
    margin: 0 0 0.2rem;
    font-family: var(--font-display);
    font-size: 1.65rem;
    font-weight: 700;
    line-height: 1.1;
    color: var(--fh-white);
}

.location-hero__stat-label {
    margin: 0;
    font-size: 0.82rem;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.78);
}

.location-intro__media {
    border-radius: calc(var(--fh-radius) + 6px);
    overflow: hidden;
    box-shadow: 0 24px 48px rgba(7, 26, 47, 0.14);
}

.location-intro__image {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 5;
    object-fit: cover;
}

.location-styles {
    margin-top: 1.75rem;
}

.location-styles__label {
    margin: 0 0 0.75rem;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--fh-gray-600);
}

.location-styles__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
}

.location-styles__chip {
    display: inline-flex;
    align-items: center;
    padding: 0.45rem 0.85rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid rgba(7, 26, 47, 0.08);
    color: var(--fh-text);
    font-size: 0.88rem;
    font-weight: 600;
}

.location-highlights__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.25rem;
}

.location-highlight {
    height: 100%;
    padding: 1.75rem 1.5rem;
    border-radius: calc(var(--fh-radius) + 4px);
    background: var(--fh-white);
    border: 1px solid rgba(7, 26, 47, 0.08);
    box-shadow: 0 10px 28px rgba(7, 26, 47, 0.05);
}

.location-highlight__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    margin-bottom: 1rem;
    border-radius: 999px;
    background: rgba(22, 119, 232, 0.1);
}

.location-highlight__title {
    margin-bottom: 0.65rem;
}

.location-highlight__text {
    color: var(--fh-gray-600);
    line-height: 1.65;
}

.location-services__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1.25rem;
}

.location-service-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    background: var(--fh-white);
    border: 1px solid rgba(7, 26, 47, 0.08);
    box-shadow: 0 10px 28px rgba(7, 26, 47, 0.05);
    color: inherit;
    text-decoration: none;
}

.location-service-card:hover {
    color: inherit;
    border-color: rgba(22, 119, 232, 0.22);
}

.location-service-card__media {
    overflow: hidden;
}

.location-service-card__image {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    transition: transform 0.35s ease;
}

.location-service-card:hover .location-service-card__image {
    transform: scale(1.04);
}

.location-service-card__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 1.25rem 1.35rem 1.4rem;
}

.location-service-card__icon {
    display: inline-flex;
    margin-bottom: 0.65rem;
}

.location-service-card__title {
    margin-bottom: 0.55rem;
}

.location-service-card__text {
    margin-bottom: 1rem;
    color: var(--fh-gray-600);
    line-height: 1.6;
    font-size: 0.95rem;
}

.location-service-card__body .card-link {
    margin-top: auto;
}

.location-factor-card {
    height: 100%;
    padding: 2rem 1.75rem;
    border-radius: calc(var(--fh-radius) + 4px);
    background: var(--fh-white);
    border: 1px solid rgba(7, 26, 47, 0.08);
    box-shadow: 0 10px 28px rgba(7, 26, 47, 0.04);
}

.location-content__section + .location-content__section {
    margin-top: 2.5rem;
    padding-top: 2.5rem;
    border-top: 1px solid rgba(7, 26, 47, 0.08);
}

.location-process__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1.25rem;
}

.location-process__step {
    position: relative;
    height: 100%;
    padding: 1.5rem 1.35rem;
    border-radius: calc(var(--fh-radius) + 4px);
    background: var(--fh-white);
    border: 1px solid rgba(7, 26, 47, 0.08);
}

.location-process__number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    margin-bottom: 1rem;
    border-radius: 999px;
    background: var(--fh-blue);
    color: var(--fh-white);
    font-weight: 700;
    font-size: 0.95rem;
}

.location-process__title {
    margin-bottom: 0.55rem;
}

.location-process__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
    font-size: 0.94rem;
}

.location-neighborhoods__grid {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.location-neighborhoods__chip {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.65rem 1rem;
    border-radius: 999px;
    background: var(--fh-white);
    border: 1px solid rgba(7, 26, 47, 0.1);
    font-weight: 600;
    color: var(--fh-text);
    box-shadow: 0 6px 18px rgba(7, 26, 47, 0.04);
}

.location-nearby__panel {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    padding: 2rem 2rem;
    border-radius: calc(var(--fh-radius) + 6px);
    background: linear-gradient(135deg, rgba(22, 119, 232, 0.08) 0%, var(--fh-soft) 100%);
    border: 1px solid rgba(22, 119, 232, 0.14);
}

.location-nearby__links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
}

.location-nearby__link {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.55rem 0.95rem;
    border-radius: 999px;
    background: var(--fh-white);
    border: 1px solid rgba(7, 26, 47, 0.1);
    color: var(--fh-text);
    font-weight: 600;
    font-size: 0.9rem;
    transition: border-color 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

.location-nearby__link:hover {
    color: var(--fh-blue);
    border-color: rgba(22, 119, 232, 0.25);
    transform: translateY(-1px);
}

.location-nearby__link--all {
    background: transparent;
}

@media (max-width: 1199.98px) {
    .location-services__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .location-highlights__grid,
    .location-process__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767.98px) {
    .location-hero {
        padding: 2.5rem 0 3rem;
    }

    .location-hero__stats {
        margin-top: 0.5rem;
    }

    .location-services__grid,
    .location-highlights__grid,
    .location-process__grid {
        grid-template-columns: 1fr;
    }

    .location-nearby__panel {
        padding: 1.5rem;
    }
}

/* --- Reviews hub page --- */
.reviews-hub-hero__rating {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.85rem 1.25rem;
    margin-top: 1.5rem;
}

.reviews-hub-hero__score {
    color: rgba(255, 255, 255, 0.88);
    font-weight: 600;
}

.review-stars {
    display: inline-flex;
    gap: 0.15rem;
    line-height: 1;
}

.review-stars__icon {
    color: var(--fh-gold, #F5B301);
    font-size: 1.1rem;
}

.review-stars--hero .review-stars__icon {
    font-size: 1.35rem;
}

.reviews-hub-intro__media {
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.reviews-hub-intro__image {
    display: block;
    width: 100%;
    height: auto;
}

.reviews-hub-intro__list {
    margin: 1.25rem 0 1.75rem;
}

.reviews-hub-intro__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.reviews-hub-stats__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

@media (min-width: 768px) {
    .reviews-hub-stats__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.reviews-hub-stat {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    padding: 1.5rem 1.25rem;
    text-align: center;
    box-shadow: var(--fh-shadow);
}

.reviews-hub-stat__value {
    margin: 0 0 0.35rem;
    font-family: var(--font-display);
    font-size: clamp(1.75rem, 3vw, 2.25rem);
    font-weight: 700;
    color: var(--fh-blue);
    line-height: 1;
}

.reviews-hub-stat__label {
    margin: 0;
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    font-weight: 600;
}

.reviews-hub-stats__license {
    margin-top: 1.5rem;
    text-align: center;
    font-size: 0.95rem;
}

.reviews-hub-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
    gap: 1.5rem;
}

.reviews-hub-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 0;
    overflow: hidden;
    box-shadow: var(--fh-shadow);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.reviews-hub-card__media {
    aspect-ratio: 800 / 520;
    overflow: hidden;
    background: var(--fh-soft);
}

.reviews-hub-card__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.reviews-hub-card__head,
.reviews-hub-card__quote,
.reviews-hub-card__footer,
.reviews-hub-card__project {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
}

.reviews-hub-card__head {
    padding-top: 1.25rem;
}

.reviews-hub-card__project {
    padding-bottom: 1.5rem;
}

.reviews-hub-trust__media {
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
}

.reviews-hub-trust__image {
    display: block;
    width: 100%;
    height: auto;
}

.reviews-hub-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(7, 26, 47, 0.12);
}

.reviews-hub-card--featured {
    border-color: rgba(22, 119, 232, 0.25);
    background: linear-gradient(180deg, rgba(22, 119, 232, 0.04) 0%, var(--fh-white) 42%);
}

.reviews-hub-card--text-only .reviews-hub-card__head {
    padding-top: 1.5rem;
}

.reviews-hub-card__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.reviews-hub-card__source {
    display: inline-flex;
    align-items: center;
    padding: 0.3rem 0.65rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--fh-gray-600);
}

.reviews-hub-card__quote {
    margin: 0 0 1.25rem;
    color: var(--fh-text);
    font-size: 1rem;
    line-height: 1.65;
    flex: 1;
}

.reviews-hub-card__footer {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.75rem;
}

.reviews-hub-card__author {
    font-weight: 700;
    color: var(--fh-text);
}

.reviews-hub-card__city {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.25rem;
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    font-weight: 600;
}

.reviews-hub-card__service {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 0.7rem;
    border-radius: 999px;
    background: rgba(22, 119, 232, 0.08);
    border: 1px solid rgba(22, 119, 232, 0.15);
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--fh-blue);
    white-space: nowrap;
}

.reviews-hub-card__project {
    margin-top: auto;
}

.reviews-hub-empty {
    text-align: center;
    padding: 3rem 1.5rem;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    box-shadow: var(--fh-shadow);
}

.reviews-hub-empty__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.5rem;
    height: 4.5rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1.25rem;
}

.reviews-hub-highlight {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.reviews-hub-highlight__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1rem;
}

.reviews-hub-highlight__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.65rem;
}

.reviews-hub-highlight__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
}

/* --- Contact hub page --- */
.contact-hub-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.5rem;
}

.contact-hub-hero__chip {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1.15rem;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    background: rgba(255, 255, 255, 0.08);
    color: var(--fh-white);
    font-weight: 600;
    font-size: 0.95rem;
    transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.contact-hub-hero__chip:hover {
    background: rgba(255, 255, 255, 0.16);
    border-color: rgba(255, 255, 255, 0.35);
    color: var(--fh-white);
    transform: translateY(-1px);
}

.contact-hub-hero__chip--accent {
    background: var(--fh-blue);
    border-color: var(--fh-blue);
}

.contact-hub-hero__chip--accent:hover {
    background: #1266d4;
    border-color: #1266d4;
}

.contact-hub-map {
    padding-top: 2.5rem;
    padding-bottom: 3rem;
}

.contact-hub-map__frame {
    max-width: 920px;
    margin: 0 auto;
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
    background: var(--fh-white);
}

.contact-hub-map__map.ct-service-map {
    aspect-ratio: 800 / 620;
}

.page-contact .contact-hub-form--after-hero {
    padding-top: clamp(2.5rem, 5vw, 3.5rem);
    scroll-margin-top: calc(var(--fh-header-height) + env(safe-area-inset-top, 0px) + 0.5rem);
}

.contact-hub-intro__media {
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: var(--fh-shadow);
    background: var(--fh-white);
}

.contact-hub-intro__map.ct-service-map {
    aspect-ratio: 800 / 620;
}

.contact-hub-intro__image {
    display: block;
    width: 100%;
    height: auto;
}

/* Connecticut statewide service map (contact + hubs) */
.ct-service-map {
    display: block;
    width: 100%;
    background: linear-gradient(180deg, #f8fbff 0%, #eef6ff 100%);
}

.ct-service-map__svg {
    display: block;
    width: 100%;
    height: auto;
}

.ct-service-map__water {
    fill: url(#ct-service-map-water);
}

.ct-service-map__land {
    fill: var(--fh-navy);
    stroke: none;
}

.ct-service-map__outline {
    fill: none;
    stroke: rgba(255, 255, 255, 0.35);
    stroke-width: 1.5;
    stroke-linejoin: round;
    pointer-events: none;
}

.ct-service-map__pin-shape {
    fill: var(--fh-white);
    stroke: rgba(7, 26, 47, 0.08);
    stroke-width: 0.75;
}

.ct-service-map__pin-dot {
    fill: var(--fh-blue);
}

.contact-hub-intro__list {
    margin: 1.25rem 0 1.75rem;
}

.contact-hub-intro__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.contact-hub-intro__actions .btn .icon {
    margin-left: 0;
    margin-right: 0.35rem;
}

.contact-hub-stats__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

@media (min-width: 768px) {
    .contact-hub-stats__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.contact-hub-stat {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    padding: 1.5rem 1.25rem;
    text-align: center;
    box-shadow: var(--fh-shadow);
}

.contact-hub-stat__value {
    margin: 0 0 0.35rem;
    font-family: var(--font-display);
    font-size: clamp(1.75rem, 3vw, 2.25rem);
    font-weight: 700;
    color: var(--fh-blue);
    line-height: 1;
}

.contact-hub-stat__label {
    margin: 0;
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    font-weight: 600;
}

.contact-hub-stats__license {
    margin-top: 1.5rem;
    text-align: center;
    font-size: 0.95rem;
}

.contact-hub-form__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(300px, 1fr);
    gap: 1.75rem;
    align-items: start;
}

@media (max-width: 991.98px) {
    .contact-hub-form__grid {
        grid-template-columns: 1fr;
    }
}

.contact-hub-form__panel {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: clamp(1.5rem, 3vw, 2rem);
    box-shadow: var(--fh-shadow);
}

.contact-hub-form__lead {
    margin-bottom: 1.5rem;
    font-size: 1rem;
    line-height: 1.6;
}

.contact-hub-form__panel .lead-form .btn-lg {
    width: 100%;
}

@media (min-width: 576px) {
    .contact-hub-form__panel .lead-form .btn-lg {
        width: auto;
    }
}

.contact-hub-form__aside {
    display: grid;
    gap: 1rem;
}

.contact-hub-info-card {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.25rem;
    box-shadow: var(--fh-shadow);
}

.contact-hub-info-card--primary {
    border-color: rgba(22, 119, 232, 0.25);
    background: linear-gradient(180deg, rgba(22, 119, 232, 0.06) 0%, var(--fh-white) 55%);
}

.contact-hub-info-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    flex-shrink: 0;
}

.contact-hub-info-card__label {
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--fh-gray-600);
}

.contact-hub-info-card__value {
    display: inline-block;
    font-family: var(--font-display);
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--fh-text);
    line-height: 1.3;
    margin-bottom: 0.35rem;
}

.contact-hub-info-card__value:hover {
    color: var(--fh-blue);
}

.contact-hub-info-card__value--text {
    font-family: var(--font-body);
    font-size: 1rem;
    font-weight: 600;
}

.contact-hub-info-card__hint {
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    line-height: 1.5;
}

.contact-hub-office-map {
    border-radius: calc(var(--fh-radius) + 2px);
    overflow: hidden;
    border: 1px solid var(--fh-gray-300);
    box-shadow: var(--fh-shadow);
    background: var(--fh-soft);
}

.contact-hub-office-map__frame {
    display: block;
    width: 100%;
    height: 220px;
    border: 0;
}

.contact-hub-social {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 0.75rem;
}

.contact-hub-social__link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.65rem 1rem;
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    background: var(--fh-white);
    color: var(--fh-text);
    font-weight: 600;
    box-shadow: var(--fh-shadow);
    transition: border-color 0.2s ease, color 0.2s ease;
}

.contact-hub-social__link:hover {
    border-color: var(--fh-blue);
    color: var(--fh-blue);
}

.contact-hub-highlight {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
}

.contact-hub-highlight__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    margin-bottom: 1rem;
}

.contact-hub-highlight__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.65rem;
}

.contact-hub-highlight__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
}

.contact-hub-services__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
    gap: 1rem;
}

.contact-hub-service {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.15rem 1.25rem;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    box-shadow: var(--fh-shadow);
    color: var(--fh-text);
    font-weight: 700;
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.contact-hub-service:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 32px rgba(7, 26, 47, 0.1);
    border-color: rgba(22, 119, 232, 0.25);
    color: var(--fh-text);
}

.contact-hub-service__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    flex-shrink: 0;
}

.contact-hub-service__icon .icon {
    font-size: 1.25rem;
    line-height: 1;
}

.contact-hub-service__title {
    flex: 1;
}

.contact-hub-service > .icon:last-child {
    margin-left: auto;
}

/* --- Free Estimate hub page --- */
.page-estimate .page-hero {
    position: relative;
    overflow: hidden;
}

.page-estimate .page-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 85% 20%, rgba(22, 119, 232, 0.22) 0%, transparent 42%),
        radial-gradient(circle at 10% 90%, rgba(255, 255, 255, 0.06) 0%, transparent 35%);
    pointer-events: none;
}

.page-estimate .page-hero .container {
    position: relative;
    z-index: 1;
}

.page-estimate .estimate-hub-form--after-hero {
    padding-top: clamp(2.5rem, 5vw, 3.5rem);
    scroll-margin-top: calc(var(--fh-header-height) + env(safe-area-inset-top, 0px) + 0.5rem);
}

.estimate-hub-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.5rem;
}

.estimate-hub-hero__chip {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1.15rem;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    background: rgba(255, 255, 255, 0.08);
    color: var(--fh-white);
    font-weight: 600;
    font-size: 0.95rem;
    transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.estimate-hub-hero__chip:hover {
    background: rgba(255, 255, 255, 0.16);
    border-color: rgba(255, 255, 255, 0.35);
    color: var(--fh-white);
    transform: translateY(-1px);
}

.estimate-hub-hero__chip--accent {
    background: var(--fh-blue);
    border-color: var(--fh-blue);
}

.estimate-hub-hero__chip--accent:hover {
    background: #1266d4;
    border-color: #1266d4;
}

.estimate-hub-intro__media {
    position: relative;
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: 0 24px 48px rgba(7, 26, 47, 0.14);
}

.estimate-hub-intro__media::after {
    content: "";
    position: absolute;
    inset: auto 0 0 0;
    height: 35%;
    background: linear-gradient(180deg, transparent 0%, rgba(7, 26, 47, 0.35) 100%);
    pointer-events: none;
}

.estimate-hub-intro__image {
    display: block;
    width: 100%;
    height: auto;
}

.estimate-hub-intro__list {
    margin: 1.25rem 0 1.75rem;
}

.estimate-hub-trust {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem 1.25rem;
    padding: 1.35rem;
    border-radius: calc(var(--fh-radius) + 2px);
    background: linear-gradient(135deg, rgba(22, 119, 232, 0.06) 0%, var(--fh-soft) 100%);
    border: 1px solid rgba(22, 119, 232, 0.12);
}

@media (min-width: 768px) {
    .estimate-hub-trust {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.estimate-hub-trust__item {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.55rem;
    font-weight: 600;
    font-size: 0.88rem;
    line-height: 1.35;
    color: var(--fh-text);
}

.estimate-hub-stats__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

@media (min-width: 768px) {
    .estimate-hub-stats__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.estimate-hub-stat {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: var(--fh-radius);
    padding: 1.5rem 1.25rem;
    text-align: center;
    box-shadow: var(--fh-shadow);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.estimate-hub-stat:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 32px rgba(7, 26, 47, 0.1);
}

.estimate-hub-stat__value {
    margin: 0 0 0.35rem;
    font-family: var(--font-display);
    font-size: clamp(1.75rem, 3vw, 2.25rem);
    font-weight: 700;
    color: var(--fh-blue);
    line-height: 1;
}

.estimate-hub-stat__label {
    margin: 0;
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    font-weight: 600;
}

.estimate-hub-stats__license {
    margin-top: 1.5rem;
    text-align: center;
    font-size: 0.95rem;
}

.estimate-hub-form__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(300px, 1fr);
    gap: 1.75rem;
    align-items: start;
}

@media (max-width: 991.98px) {
    .estimate-hub-form__grid {
        grid-template-columns: 1fr;
    }
}

.estimate-hub-form__panel {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 4px);
    overflow: hidden;
    box-shadow: 0 20px 44px rgba(7, 26, 47, 0.1);
}

.estimate-hub-form__header {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: clamp(1.35rem, 3vw, 1.75rem);
    background: linear-gradient(135deg, var(--fh-navy) 0%, #124a8a 100%);
    color: var(--fh-white);
}

.estimate-hub-form__header-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    border: 1px solid rgba(255, 255, 255, 0.18);
    flex-shrink: 0;
}

.estimate-hub-form__header-title {
    margin: 0 0 0.35rem;
    font-family: var(--font-display);
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--fh-white);
}

.estimate-hub-form__header-text {
    color: rgba(255, 255, 255, 0.82);
    font-size: 0.95rem;
    line-height: 1.55;
}

.estimate-hub-form__body {
    padding: clamp(1.5rem, 3vw, 2rem);
}

.estimate-hub-form__panel .lead-form .btn-lg {
    width: 100%;
}

@media (min-width: 576px) {
    .estimate-hub-form__panel .lead-form .btn-lg {
        width: auto;
    }
}

.estimate-hub-form__aside {
    display: grid;
    gap: 1rem;
}

.estimate-hub-steps {
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.35rem 1.25rem;
    box-shadow: var(--fh-shadow);
}

.estimate-hub-steps__eyebrow {
    margin: 0 0 0.35rem;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--fh-blue);
}

.estimate-hub-steps__title {
    margin: 0 0 1.15rem;
    font-size: 1.05rem;
    font-weight: 700;
}

.estimate-hub-steps__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 1rem;
}

.estimate-hub-step {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
}

.estimate-hub-step__number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.35rem;
    height: 2.35rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    font-family: var(--font-display);
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--fh-blue);
    flex-shrink: 0;
}

.estimate-hub-step__title {
    font-weight: 700;
    font-size: 0.98rem;
}

.estimate-hub-step__text {
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    line-height: 1.55;
}

.estimate-hub-info-card {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.25rem;
    box-shadow: var(--fh-shadow);
}

.estimate-hub-info-card--primary {
    border-color: rgba(22, 119, 232, 0.25);
    background: linear-gradient(180deg, rgba(22, 119, 232, 0.06) 0%, var(--fh-white) 55%);
}

.estimate-hub-info-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 999px;
    background: var(--fh-soft);
    border: 1px solid var(--fh-gray-300);
    flex-shrink: 0;
}

.estimate-hub-info-card__label {
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--fh-gray-600);
}

.estimate-hub-info-card__value {
    display: inline-block;
    font-family: var(--font-display);
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--fh-text);
    line-height: 1.3;
    margin-bottom: 0.35rem;
}

.estimate-hub-info-card__value:hover {
    color: var(--fh-blue);
}

.estimate-hub-info-card__hint {
    color: var(--fh-gray-600);
    font-size: 0.92rem;
    line-height: 1.5;
}

.estimate-hub-highlight {
    height: 100%;
    background: var(--fh-white);
    border: 1px solid var(--fh-gray-300);
    border-radius: calc(var(--fh-radius) + 2px);
    padding: 1.5rem;
    box-shadow: var(--fh-shadow);
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.estimate-hub-highlight:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(7, 26, 47, 0.1);
    border-color: rgba(22, 119, 232, 0.2);
}

.estimate-hub-highlight__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    border-radius: 999px;
    background: linear-gradient(180deg, rgba(22, 119, 232, 0.08) 0%, var(--fh-soft) 100%);
    border: 1px solid rgba(22, 119, 232, 0.12);
    margin-bottom: 1rem;
}

.estimate-hub-highlight__title {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.65rem;
}

.estimate-hub-highlight__text {
    color: var(--fh-gray-600);
    line-height: 1.6;
}

.form-control:focus,
.form-select:focus {
    border-color: var(--fh-blue);
    box-shadow: 0 0 0 0.2rem rgba(22, 119, 232, 0.15);
}

/* Icon system — inline SVG via icon() helper */
.icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    flex-shrink: 0;
    color: var(--fh-blue);
}

.icon svg {
    width: 1em;
    height: 1em;
    display: block;
}

.icon--sm svg {
    width: 0.875em;
    height: 0.875em;
}

.icon--lg svg {
    width: 1.125em;
    height: 1.125em;
}

.icon--xl svg {
    width: 1.35em;
    height: 1.35em;
}

.icon--white {
    color: var(--fh-white);
}

.icon--blue {
    color: var(--fh-blue);
}

.icon--navy {
    color: var(--fh-navy);
}

.btn .icon {
    margin-left: 0.35rem;
}

.btn-primary .icon,
.btn-accent .icon {
    color: var(--fh-white);
}

.card-link .icon {
    transition: transform 0.2s ease;
}

.card-link:hover .icon {
    transform: translateX(2px);
}

.footer-contact li {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
}

.footer-contact .icon {
    margin-top: 0.15rem;
    color: rgba(255, 255, 255, 0.72);
}

/* --- Premium motion system --- */
:root {
    --motion-duration: 0.7s;
    --motion-duration-fast: 0.35s;
    --motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
    --motion-distance: 18px;
    --motion-stagger-step: 70ms;
}

body.has-motion .motion-reveal {
    opacity: 0;
    transform: translate3d(0, var(--motion-distance), 0);
    transition:
        opacity var(--motion-duration) var(--motion-ease),
        transform var(--motion-duration) var(--motion-ease);
    transition-delay: var(--motion-delay, 0ms);
}

body.has-motion .motion-reveal.is-inview {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

body.has-motion .site-header.is-scrolled {
    background: rgba(7, 26, 47, 0.97);
    border-bottom-color: rgba(255, 255, 255, 0.1);
    box-shadow: 0 10px 32px rgba(7, 26, 47, 0.22);
}

body.has-motion .site-header.is-scrolled .navbar {
    --bs-navbar-padding-y: 0.72rem;
}

body.has-motion .site-header.is-scrolled .brand-logo {
    height: 2.25rem;
    transition: height var(--motion-duration-fast) var(--motion-ease);
}

body.has-motion .brand-logo {
    transition: height var(--motion-duration-fast) var(--motion-ease);
}

body.has-motion .nav-link::after,
body.has-motion .footer-links a::after,
body.has-motion .footer-legal a::after,
body.has-motion .breadcrumb-list a::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0.15rem;
    width: 100%;
    height: 1px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform var(--motion-duration-fast) var(--motion-ease);
    opacity: 0.75;
}

body.has-motion .nav-link::after {
    background: var(--fh-blue);
    opacity: 1;
}

body.has-motion .nav-link:hover::after,
body.has-motion .nav-link.active::after,
body.has-motion .footer-links a:hover::after,
body.has-motion .footer-legal a:hover::after,
body.has-motion .breadcrumb-list a:hover::after {
    transform: scaleX(1);
}

body.has-motion .footer-links a,
body.has-motion .footer-legal a,
body.has-motion .breadcrumb-list a {
    position: relative;
    display: inline-block;
}

body.has-motion .card-link {
    position: relative;
    background-image: linear-gradient(currentColor, currentColor);
    background-repeat: no-repeat;
    background-position: 0 100%;
    background-size: 0 1px;
    transition:
        color var(--motion-duration-fast) var(--motion-ease),
        background-size var(--motion-duration-fast) var(--motion-ease);
}

body.has-motion .card-link:hover {
    background-size: 100% 1px;
}

body.has-motion .btn,
body.has-motion .btn-primary,
body.has-motion .btn-accent,
body.has-motion .btn-outline,
body.has-motion .btn-outline-light,
body.has-motion .btn-outline-dark,
body.has-motion .btn-secondary-light {
    transition:
        transform var(--motion-duration-fast) var(--motion-ease),
        box-shadow var(--motion-duration-fast) var(--motion-ease),
        background-color var(--motion-duration-fast) var(--motion-ease),
        border-color var(--motion-duration-fast) var(--motion-ease),
        color var(--motion-duration-fast) var(--motion-ease);
}

body.has-motion .btn-primary:hover,
body.has-motion .btn-accent:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 22px rgba(22, 119, 232, 0.28);
}

body.has-motion .btn-outline:hover,
body.has-motion .btn-outline-dark:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(7, 26, 47, 0.08);
}

body.has-motion .btn-primary:active,
body.has-motion .btn-accent:active,
body.has-motion .btn-outline:active,
body.has-motion .btn-outline-dark:active,
body.has-motion .btn-outline-light:active,
body.has-motion .btn-secondary-light:active {
    transform: translateY(0) scale(0.985);
}

body.has-motion [class*="__media"]:not(.ba-slider):not(.ba-slider__before):not(.ba-slider__after):not(.contact-hub-map):not(.home-hero__media-col) {
    overflow: hidden;
}

body.has-motion [class*="__media"]:not(.ba-slider):not(.ba-slider__before):not(.ba-slider__after):not(.contact-hub-map):not(.home-hero__media-col) img,
body.has-motion [class*="__media"]:not(.ba-slider):not(.ba-slider__before):not(.ba-slider__after):not(.contact-hub-map):not(.home-hero__media-col) picture {
    display: block;
}

body.has-motion [class*="__media"]:not(.ba-slider):not(.ba-slider__before):not(.ba-slider__after):not(.contact-hub-map):not(.home-hero__media-col) img {
    transition: transform 0.75s var(--motion-ease);
}

body.has-motion [class*="__media"]:not(.ba-slider):not(.ba-slider__before):not(.ba-slider__after):not(.contact-hub-map):not(.home-hero__media-col):hover img {
    transform: scale(1.03);
}

body.has-motion .motion-parallax {
    transform: translate3d(0, var(--motion-parallax-y, 0px), 0);
}

body.has-motion .service-card:hover,
body.has-motion .home-service-card:hover,
body.has-motion .about-service-card:hover,
body.has-motion .services-hub-item:hover,
body.has-motion .services-hub-card:hover,
body.has-motion .projects-hub-card:hover,
body.has-motion .locations-hub-card:hover,
body.has-motion .location-service-card:hover,
body.has-motion .location-highlight:hover,
body.has-motion .contact-hub-highlight:hover,
body.has-motion .estimate-hub-highlight:hover,
body.has-motion .review-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(7, 26, 47, 0.1);
}

body.has-motion .service-card,
body.has-motion .home-service-card,
body.has-motion .about-service-card,
body.has-motion .services-hub-item,
body.has-motion .services-hub-card,
body.has-motion .projects-hub-card,
body.has-motion .locations-hub-card,
body.has-motion .location-service-card,
body.has-motion .location-highlight,
body.has-motion .contact-hub-highlight,
body.has-motion .estimate-hub-highlight,
body.has-motion .review-card {
    transition:
        transform var(--motion-duration-fast) var(--motion-ease),
        box-shadow var(--motion-duration-fast) var(--motion-ease),
        border-color var(--motion-duration-fast) var(--motion-ease);
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    body.has-motion .motion-reveal,
    body.has-motion .motion-reveal.is-inview {
        opacity: 1;
        transform: none;
        transition: none;
        will-change: auto;
    }

    body.has-motion .motion-parallax {
        transform: none;
        will-change: auto;
    }

    body.has-motion .home-hero__media-zoom,
    body.has-motion .location-hero__bg-image,
    .home-hero__media-zoom,
    .location-hero__bg-image {
        animation: none;
        transform: none;
        will-change: auto;
    }

    body.has-motion .site-header,
    body.has-motion .navbar,
    body.has-motion .brand-logo,
    body.has-motion .btn,
    body.has-motion .service-card,
    body.has-motion .home-service-card,
    body.has-motion .about-service-card,
    body.has-motion .services-hub-item,
    body.has-motion .services-hub-card,
    body.has-motion .projects-hub-card,
    body.has-motion .locations-hub-card,
    body.has-motion .contact-hub-highlight,
    body.has-motion .estimate-hub-highlight,
    body.has-motion .review-card,
    body.has-motion [class*="__media"] img {
        transition: none;
    }

    body.has-motion .nav-link::after,
    body.has-motion .footer-links a::after,
    body.has-motion .footer-legal a::after,
    body.has-motion .breadcrumb-list a::after {
        display: none;
    }

    body.has-motion .card-link {
        background: none;
    }
}
