.reveal {
    opacity: 0;
    transform: translateY(34px);
    transition:
        opacity .75s cubic-bezier(.2,.8,.2,1),
        transform .75s cubic-bezier(.2,.8,.2,1);
}

.reveal.slide-left {
    transform: translateX(-42px);
}

.reveal.slide-right {
    transform: translateX(42px);
}

.reveal.zoom-in {
    transform: scale(.94);
}

.reveal.is-visible {
    opacity: 1;
    transform: translate(0, 0) scale(1);
}

.glass {
    position: relative;
    overflow: hidden;
}

.glass::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        linear-gradient(
            135deg,
            rgba(255,255,255,.22),
            transparent 38%
        );
    opacity: .42;
}

.property-card,
.service-card,
.btn,
.home-search-strip a {
    will-change: transform;
}

.property-card,
.service-card {
    transition:
        transform .3s ease,
        box-shadow .3s ease,
        border-color .3s ease;
}

.property-card:hover,
.service-card:hover {
    transform: translateY(-9px);
    box-shadow: 0 34px 90px rgba(16,33,63,.22);
}

.btn {
    position: relative;
    overflow: hidden;
    transition:
        transform .22s ease,
        box-shadow .22s ease;
}

.btn::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(120deg, transparent, rgba(255,255,255,.28), transparent);
    transform: translateX(-120%);
    transition: transform .55s ease;
}

.btn:hover {
    transform: translateY(-3px);
    box-shadow: 0 18px 48px rgba(22,55,101,.24);
}

.btn:hover::after {
    transform: translateX(120%);
}

@media (prefers-reduced-motion: reduce) {
    .reveal,
    .property-card,
    .service-card,
    .btn,
    .home-search-strip a,
    .site-header {
        transition: none !important;
        transform: none !important;
    }
}