/* Custom scroll reveal (homepage) — same behavior as former AOS attrs */

[data-gs-reveal] {
    transition-property: opacity, transform;
    transition-timing-function: ease;
    transition-duration: var(--gs-duration, 400ms);
    transition-delay: 0s;
    will-change: opacity, transform;
}

[data-gs-reveal].is-gs-revealed {
    transition-delay: var(--gs-delay, 0ms);
}

[data-gs-reveal^="fade"] {
    opacity: 0;
}

[data-gs-reveal^="fade"].is-gs-revealed {
    opacity: 1;
    transform: translateZ(0);
}

/*
 * Homepage glass boxes (column-description + backdrop-filter):
 * clear parent transform after reveal so blur samples the skewed image behind.
 */
.img-box-home-row [data-gs-reveal].is-gs-revealed,
.img-box-home-row-2 [data-gs-reveal].is-gs-revealed {
    transform: none;
    will-change: auto;
}

[data-gs-reveal="fade-up"] {
    transform: translate3d(0, 100px, 0);
}

[data-gs-reveal="fade-down"] {
    transform: translate3d(0, -100px, 0);
}

[data-gs-reveal="fade-right"] {
    transform: translate3d(-100px, 0, 0);
}

[data-gs-reveal="fade-left"] {
    transform: translate3d(100px, 0, 0);
}

[data-gs-reveal="fade-in"] {
    transform: none;
}

/*
 * Mobile: horizontal slide (±100px) causes overflow-x until reveal.
 * Use vertical rise instead; keep duration/delay/opacity the same.
 */
@media (max-width: 991px) {
    .home-page-wrap {
        overflow-x: clip;
    }

    .home-page-wrap .img-box-home-row,
    .home-page-wrap .img-box-home-row-2 {
        overflow-x: clip;
    }

    [data-gs-reveal="fade-left"],
    [data-gs-reveal="fade-right"] {
        transform: translate3d(0, 48px, 0);
    }
}

/* Custom group: service items rise (ported from former AOS hook) */
.home-page-wrap .service-items-row[data-gs-reveal="service-item-rise-group"] .service-item-main-container {
    opacity: 0;
    transition-property: transform, opacity;
    transition-timing-function: ease;
    transition-duration: 600ms;
}

.home-page-wrap .service-items-row[data-gs-reveal="service-item-rise-group"] .service-item-main-container:nth-child(1) {
    transform: translateY(42px);
    transition-delay: 0ms;
}

.home-page-wrap .service-items-row[data-gs-reveal="service-item-rise-group"] .service-item-main-container:nth-child(2) {
    transform: translateY(32px);
    transition-delay: 200ms;
}

.home-page-wrap .service-items-row[data-gs-reveal="service-item-rise-group"] .service-item-main-container:nth-child(3) {
    transform: translateY(52px);
    transition-delay: 400ms;
}

.home-page-wrap .service-items-row[data-gs-reveal="service-item-rise-group"].is-gs-revealed .service-item-main-container {
    opacity: 1;
    transform: none;
}

@media (max-width: 1023px) {
    .home-page-wrap .service-items-row[data-gs-reveal="service-item-rise-group"] .service-item-main-container:nth-child(2) {
        transition-delay: 100ms;
    }

    .home-page-wrap .service-items-row[data-gs-reveal="service-item-rise-group"] .service-item-main-container:nth-child(3) {
        transition-delay: 200ms;
    }
}

@media (prefers-reduced-motion: reduce) {
    [data-gs-reveal],
    .home-page-wrap .service-items-row[data-gs-reveal="service-item-rise-group"] .service-item-main-container {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}
