
:root {
    --ghm-duration: 650ms;
    --ghm-stagger: 90ms;
    --ghm-distance: 22px;
    --ghm-scale: .975;
    --ghm-ease: cubic-bezier(.22, .61, .36, 1);
}

html.ghm-ready .ghm-reveal {
    opacity: 0;
    transform: translate3d(0, var(--ghm-distance), 0);
    transition:
        opacity var(--ghm-duration) var(--ghm-ease),
        transform var(--ghm-duration) var(--ghm-ease);
    transition-delay: var(--ghm-delay, 0ms);
    will-change: opacity, transform;
}

html.ghm-ready .ghm-reveal.ghm-from-left {
    transform: translate3d(calc(var(--ghm-distance) * -1), 0, 0);
}

html.ghm-ready .ghm-reveal.ghm-from-right {
    transform: translate3d(var(--ghm-distance), 0, 0);
}

html.ghm-ready .ghm-reveal.ghm-scale-in {
    transform: scale(var(--ghm-scale));
}

html.ghm-ready .ghm-reveal.ghm-visible {
    opacity: 1;
    transform: none;
}

html.ghm-ready .ghm-divider-reveal {
    transform-origin: left center;
    transform: scaleX(0);
    transition: transform var(--ghm-duration) var(--ghm-ease);
    transition-delay: var(--ghm-delay, 0ms);
}

html.ghm-ready .ghm-divider-reveal.ghm-visible {
    transform: scaleX(1);
}

html.ghm-ready .ghm-icon-pop {
    opacity: 0;
    transform: scale(.84);
    transition:
        opacity calc(var(--ghm-duration) * .8) var(--ghm-ease),
        transform calc(var(--ghm-duration) * .8) var(--ghm-ease);
    transition-delay: var(--ghm-delay, 0ms);
}

html.ghm-ready .ghm-icon-pop.ghm-visible {
    opacity: 1;
    transform: scale(1);
}

html.ghm-ready .ghm-image-reveal {
    opacity: 0;
    transform: scale(1.025);
    transition:
        opacity calc(var(--ghm-duration) * 1.25) var(--ghm-ease),
        transform calc(var(--ghm-duration) * 1.25) var(--ghm-ease);
    transition-delay: var(--ghm-delay, 0ms);
    will-change: opacity, transform;
}

html.ghm-ready .ghm-image-reveal.ghm-visible {
    opacity: 1;
    transform: scale(1);
}

/* FAQs should feel responsive without dramatic motion. */
.ghome-faq__answer,
[class*="ghome-faq"] .elementor-tab-content {
    transition: opacity 260ms ease, transform 260ms ease;
}

/* Desktop hover polish. */
@media (hover: hover) and (pointer: fine) {
    html.ghm-hover-enabled .ghm-hover-card {
        transition:
            transform 280ms var(--ghm-ease),
            box-shadow 280ms var(--ghm-ease);
    }

    html.ghm-hover-enabled .ghm-hover-card:hover {
        transform: translateY(-7px);
        box-shadow: 0 18px 38px rgba(0, 0, 0, .13);
    }

    html.ghm-hover-enabled .ghm-hover-card img {
        transition: transform 700ms var(--ghm-ease);
    }

    html.ghm-hover-enabled .ghm-hover-card:hover img {
        transform: scale(1.025);
    }

    html.ghm-button-hover-enabled .ghm-hover-button {
        position: relative;
        overflow: hidden;
        isolation: isolate;
        transition: transform 220ms ease, box-shadow 220ms ease;
    }

    html.ghm-button-hover-enabled .ghm-hover-button::before {
        content: "";
        position: absolute;
        inset: 0;
        background: rgba(255, 255, 255, .12);
        transform: translateX(-105%);
        transition: transform 360ms var(--ghm-ease);
        pointer-events: none;
        z-index: -1;
    }

    html.ghm-button-hover-enabled .ghm-hover-button:hover {
        transform: translateY(-2px);
        box-shadow: 0 12px 24px rgba(0, 0, 0, .16);
    }

    html.ghm-button-hover-enabled .ghm-hover-button:hover::before {
        transform: translateX(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    html.ghm-respect-reduced .ghm-reveal,
    html.ghm-respect-reduced .ghm-divider-reveal,
    html.ghm-respect-reduced .ghm-icon-pop,
    html.ghm-respect-reduced .ghm-image-reveal,
    html.ghm-respect-reduced .ghm-hover-card,
    html.ghm-respect-reduced .ghm-hover-button {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
        animation: none !important;
    }
}

@media (max-width: 767px) {
    html.ghm-mobile-disabled .ghm-reveal,
    html.ghm-mobile-disabled .ghm-divider-reveal,
    html.ghm-mobile-disabled .ghm-icon-pop,
    html.ghm-mobile-disabled .ghm-image-reveal {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}


/* v1.2: text elements never receive card hover shadows. */
@media (hover: hover) and (pointer: fine) {
    html.ghm-hover-enabled h1.ghm-hover-card,
    html.ghm-hover-enabled h2.ghm-hover-card,
    html.ghm-hover-enabled h3.ghm-hover-card,
    html.ghm-hover-enabled h4.ghm-hover-card,
    html.ghm-hover-enabled h5.ghm-hover-card,
    html.ghm-hover-enabled h6.ghm-hover-card,
    html.ghm-hover-enabled p.ghm-hover-card,
    html.ghm-hover-enabled span.ghm-hover-card,
    html.ghm-hover-enabled strong.ghm-hover-card,
    html.ghm-hover-enabled [class*="__description"].ghm-hover-card,
    html.ghm-hover-enabled [class*="__title"].ghm-hover-card,
    html.ghm-hover-enabled [class*="__heading"].ghm-hover-card,
    html.ghm-hover-enabled [class*="__number"].ghm-hover-card,
    html.ghm-hover-enabled [class*="__value"].ghm-hover-card {
        transform: none !important;
        box-shadow: none !important;
    }
}
