/* Home microinteractions. Layout, content and carousel mechanics stay in their own files. */
.home-reveal { --home-reveal-x:0px; --home-reveal-y:18px; }
.home-reveal--left { --home-reveal-x:-18px; --home-reveal-y:0px; }
.home-reveal--right { --home-reveal-x:18px; --home-reveal-y:0px; }
/* Pending content stays visible. Only an observed entrance gets an animation,
   whose final frame is visible even if JavaScript stops afterwards. */
.home-effects .home-reveal.is-revealing {
    animation:home-effects-reveal 550ms cubic-bezier(.22, .61, .36, 1) var(--home-reveal-delay, 0ms) both;
}
@keyframes home-effects-reveal {
    from { opacity:0; translate:var(--home-reveal-x) var(--home-reveal-y); }
    to { opacity:1; translate:0 0; }
}
.home-effects .home-story { overflow-x:clip; }

.is-home .home-products__card { transition:transform .3s ease, box-shadow .3s ease; }
.is-home .home-products__media img,
.is-home .home-videos__thumbnail > img { transition:transform .3s ease; }
.is-home .home-videos__play { transition:transform .3s ease, box-shadow .3s ease, background-color .2s ease; }
.is-home :is(.nav-cta, .hero-cta, .home-cta__button) {
    transition:transform .22s ease, box-shadow .22s ease, background-color .18s ease, border-color .18s ease;
}
@media (hover:hover) and (pointer:fine) {
    .is-home .home-products__card:hover {
        transform:translateY(-4px);
        box-shadow:0 12px 30px rgb(23 23 23 / .17), 0 4px 10px rgb(23 23 23 / .07);
    }
    .is-home .home-products__card:hover .home-products__media img { transform:scale(1.025); }
    .is-home .home-videos__card:hover .home-videos__thumbnail > img { transform:scale(1.02); }
    .is-home .home-videos__card:hover .home-videos__thumbnail::after { border-color:rgb(255 255 255 / .85); }
    .is-home .home-videos__card:hover .home-videos__play { transform:scale(1.05); }
    .is-home :is(.nav-cta, .hero-cta, .home-cta__button):hover {
        transform:translateY(-2px);
        box-shadow:0 5px 14px rgb(23 23 23 / .16);
    }
}

.is-home .site-header { transition:box-shadow .22s ease; }
@media (min-width:801px) {
    /* Six pixels of local padding, with the overlaid logo kept at its full size. */
    .is-home .site-header .header-inner { transition:min-height .22s ease, padding-block .22s ease; }
    .is-home .site-header.header--scrolled .header-inner { min-height:68px; padding-block:9px; }
}

/* Three photographic layers at most; overscan covers the entire 24px travel. */
.is-home .home-parallax { overflow:clip; }
.is-home .home-parallax > :is(.hero-slides, .home-videos__background, .home-cta__background) {
    inset-block:-12px;
    height:calc(100% + 24px);
    translate:0 var(--home-parallax-y, 0px);
}
@media (max-width:800px) {
    .is-home .home-reveal { --home-reveal-x:0px; --home-reveal-y:12px; }
}
@media (prefers-reduced-motion:reduce) {
    .home-effects .home-reveal.is-revealing { animation:none; opacity:1; translate:none; }
    .is-home :is(.home-products__card, .home-products__media img, .home-videos__thumbnail > img, .home-videos__play, .home-videos__thumbnail::after, .nav-cta, .hero-cta, .home-cta__button, .site-header, .site-header .header-inner) { transition:none; }
    .is-home .home-products__card:hover,
    .is-home .home-products__card:hover .home-products__media img,
    .is-home .home-videos__card:hover .home-videos__thumbnail > img,
    .is-home .home-videos__card:hover .home-videos__play,
    .is-home :is(.nav-cta, .hero-cta, .home-cta__button):hover { transform:none; }
    .is-home .home-parallax > :is(.hero-slides, .home-videos__background, .home-cta__background) { translate:none; }
}
@media print {
    .home-effects .home-reveal.is-revealing { animation:none; opacity:1; translate:none; }
    .is-home .home-parallax > :is(.hero-slides, .home-videos__background, .home-cta__background) { translate:none; }
}
