/* Shared public motion language: calm, short, and removable for reduced-motion users. */
:root {
    --motion-distance: 1.3rem;
    --motion-duration: 1080ms;
    --motion-ease: cubic-bezier(.22, 1, .36, 1);
    --motion-shadow: 0 1rem 2.5rem rgb(23 35 51 / .12);
}

html.has-scroll-reveal [data-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(--reveal-delay, 0ms);
}

html.has-scroll-reveal [data-reveal="card"] {
    transform: translate3d(0, 1rem, 0) scale(.985);
}

html.has-scroll-reveal [data-reveal].is-revealed {
    opacity: 1;
    transform: none;
}

.motion-card {
    transition: opacity var(--motion-duration) var(--motion-ease), border-color var(--transition-base), box-shadow var(--transition-base), transform var(--transition-base);
}

.motion-card .site-icon {
    transition: color var(--transition-fast), transform var(--transition-base);
}

/* Small hover cues for content blocks that are interactive without being links. */
.faq-item summary,
.faq-item__icon,
.expertise-media,
.feature-row,
.process-step,
.process-step__number,
.service-step,
.service-step__icon,
.service-feature-card,
.service-feature-card__icon,
.testimonial-card,
.faq-popular__grid article {
    transition: color var(--transition-fast), background-color var(--transition-base), border-color var(--transition-base), box-shadow var(--transition-base), transform var(--transition-base);
}

.inline-link,
.service-card__link,
.services-catalog-card__link,
.resource-download-card__link,
.resource-preview-card__link,
.related-articles__grid a strong {
    transition: color var(--transition-fast), transform var(--transition-fast);
}

.inline-link > span[aria-hidden="true"],
.service-card__link > span[aria-hidden="true"],
.services-catalog-card__link > span[aria-hidden="true"],
.resource-download-card__link > span[aria-hidden="true"],
.resource-preview-card__link > span[aria-hidden="true"],
.button > span[aria-hidden="true"] {
    display: inline-block;
    transition: transform var(--transition-fast);
}

.inline-link:hover > span[aria-hidden="true"],
.inline-link:focus-visible > span[aria-hidden="true"],
.service-card__link:hover > span[aria-hidden="true"],
.service-card__link:focus-visible > span[aria-hidden="true"],
.services-catalog-card__link:hover > span[aria-hidden="true"],
.services-catalog-card__link:focus-visible > span[aria-hidden="true"],
.resource-download-card__link:hover > span[aria-hidden="true"],
.resource-download-card__link:focus-visible > span[aria-hidden="true"],
.resource-preview-card__link:hover > span[aria-hidden="true"],
.resource-preview-card__link:focus-visible > span[aria-hidden="true"],
.button:hover > span[aria-hidden="true"],
.button:focus-visible > span[aria-hidden="true"] {
    transform: translateX(.22rem);
}

.button:focus-visible,
.inline-link:focus-visible,
.service-card__link:focus-visible,
.services-catalog-card__link:focus-visible,
.resource-download-card__link:focus-visible,
.resource-preview-card__link:focus-visible {
    outline-offset: .35rem;
}

@media (hover: hover) and (pointer: fine) {
    .faq-item summary:hover,
    .faq-item summary:focus-visible {
        color: var(--color-accent);
    }

    .faq-item summary:hover .faq-item__icon,
    .faq-item summary:focus-visible .faq-item__icon {
        transform: scale(1.08);
    }

    .expertise-media:hover {
        box-shadow: var(--motion-shadow);
        transform: translateY(-.2rem);
    }

    .feature-row:hover,
    .feature-row:focus-within {
        border-color: rgb(175 31 41 / .3);
        background: linear-gradient(90deg, rgb(248 247 244 / .92), transparent);
        transform: translateX(.18rem);
    }

    .feature-row:hover .feature-row__icon,
    .feature-row:focus-within .feature-row__icon {
        box-shadow: 0 .5rem 1rem rgb(23 35 51 / .1);
        transform: translateY(-.12rem) scale(1.05);
    }

    .process-step:hover,
    .process-step:focus-within {
        border-color: rgb(175 31 41 / .3);
        background: linear-gradient(90deg, rgb(248 247 244 / .92), transparent);
        transform: translateY(-.12rem);
    }

    .process-step:hover .process-step__number,
    .process-step:focus-within .process-step__number {
        color: var(--color-navy-700);
        transform: translateY(-.12rem);
    }

    .process-step:hover h3,
    .process-step:focus-within h3 {
        color: var(--color-accent);
    }

    .service-step:hover,
    .service-feature-card:hover {
        background-color: var(--color-surface);
    }

    .service-step:hover .service-step__icon,
    .service-feature-card:hover .service-feature-card__icon {
        box-shadow: 0 0.5rem 1rem rgb(23 35 51 / .1);
        transform: translateY(-.12rem) scale(1.04);
    }

    .testimonial-card:hover,
    .faq-popular__grid article:hover {
        border-color: rgb(175 31 41 / .32);
        box-shadow: var(--motion-shadow);
        transform: translateY(-.2rem);
    }

    .motion-card:hover,
    .motion-card:focus-within {
        border-color: rgb(175 31 41 / .32);
        box-shadow: var(--motion-shadow);
        transform: translateY(-.22rem);
    }

    .motion-card:hover .site-icon,
    .motion-card:focus-within .site-icon {
        transform: translateY(-.08rem) scale(1.04);
    }

    [data-parallax-ready="true"] {
        will-change: transform;
        transform-origin: center;
    }
}

.consultation-modal.is-closing .consultation-modal__backdrop {
    animation: consultation-backdrop-out 240ms ease forwards;
}

.consultation-modal.is-closing .consultation-modal__dialog {
    animation: consultation-dialog-out 240ms var(--motion-ease) forwards;
}

.consultation-modal__form-shell.is-leaving {
    animation: consultation-content-out 180ms ease forwards;
}

.consultation-modal__success.is-entering {
    animation: consultation-content-in 300ms var(--motion-ease) both;
}

@keyframes consultation-backdrop-out {
    from { opacity: 1; }
    to { opacity: 0; }
}

@keyframes consultation-dialog-out {
    from { opacity: 1; transform: translateY(0) scale(1); }
    to { opacity: 0; transform: translateY(.7rem) scale(.985); }
}

@keyframes consultation-content-out {
    from { opacity: 1; transform: translateY(0); }
    to { opacity: 0; transform: translateY(-.25rem); }
}

@keyframes consultation-content-in {
    from { opacity: 0; transform: translateY(.35rem); }
    to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    html.has-scroll-reveal [data-reveal],
    html.has-scroll-reveal [data-reveal].is-revealed {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .motion-card,
    .motion-card .site-icon,
    .faq-item summary,
    .faq-item__icon,
    .expertise-media,
    .feature-row,
    .feature-row__icon,
    .process-step,
    .process-step__number,
    .service-step,
    .service-step__icon,
    .service-feature-card,
    .service-feature-card__icon,
    .testimonial-card,
    .faq-popular__grid article,
    .inline-link,
    .service-card__link,
    .services-catalog-card__link,
    .resource-download-card__link,
    .resource-preview-card__link,
    .related-articles__grid a strong,
    .button > span[aria-hidden="true"] {
        transition: none;
    }

    .motion-card:hover,
    .motion-card:focus-within,
    .motion-card:hover .site-icon,
    .motion-card:focus-within .site-icon,
    .faq-item summary:hover .faq-item__icon,
    .faq-item summary:focus-visible .faq-item__icon,
    .expertise-media:hover,
    .feature-row:hover,
    .feature-row:focus-within,
    .feature-row:hover .feature-row__icon,
    .feature-row:focus-within .feature-row__icon,
    .process-step:hover,
    .process-step:focus-within,
    .process-step:hover .process-step__number,
    .process-step:focus-within .process-step__number,
    .service-step:hover .service-step__icon,
    .service-feature-card:hover .service-feature-card__icon,
    .testimonial-card:hover,
    .faq-popular__grid article:hover {
        transform: none;
    }

    .consultation-modal.is-closing .consultation-modal__backdrop,
    .consultation-modal.is-closing .consultation-modal__dialog,
    .consultation-modal__form-shell.is-leaving,
    .consultation-modal__success.is-entering {
        animation: none;
    }
}
