@media (prefers-reduced-motion: no-preference) {
    body.motion-ready .reveal {
        opacity: 0;
        transform: translateY(22px);
        transition: opacity 650ms ease, transform 650ms cubic-bezier(.2, .7, .2, 1);
        will-change: opacity, transform;
    }

    body.motion-ready .reveal.is-visible {
        opacity: 1;
        transform: translateY(0);
        will-change: auto;
    }

    .product-grid .product-tile:nth-child(4n + 2),
    .value-row article:nth-child(2),
    .location-card:nth-child(2) {
        transition-delay: 90ms;
    }

    .product-grid .product-tile:nth-child(4n + 3),
    .value-row article:nth-child(3) {
        transition-delay: 170ms;
    }

    .product-grid .product-tile:nth-child(4n + 4) {
        transition-delay: 240ms;
    }

    .hero-copy > .eyebrow,
    .hero-copy > h1,
    .hero-copy > .hero-lede,
    .hero-copy > .hero-actions,
    .hero-copy > .hero-notes {
        opacity: 0;
        animation: hero-enter 650ms cubic-bezier(.2, .7, .2, 1) forwards;
    }

    .hero-copy > h1 { animation-delay: 90ms; }
    .hero-copy > .hero-lede { animation-delay: 170ms; }
    .hero-copy > .hero-actions { animation-delay: 240ms; }
    .hero-copy > .hero-notes { animation-delay: 320ms; }

    .hero-photo img {
        animation: photo-enter 1100ms cubic-bezier(.2, .7, .2, 1) both;
    }

    .hero-photo .photo-label {
        animation: badge-enter 700ms 400ms cubic-bezier(.2, .7, .2, 1) both;
    }

    .button,
    .nav-links a,
    .location-card>a {
        transition: color 180ms ease, background-color 180ms ease, border-color 180ms ease, transform 180ms ease;
    }

    .button:hover,
    .product-tile:hover,
    .location-card:hover {
        transform: translateY(-3px);
    }

    .product-tile.reveal.is-visible:hover,
    .location-card.reveal.is-visible:hover {
        transform: translateY(-3px);
    }

    .tile-image img {
        transition: transform 350ms ease;
    }

    .product-tile:hover .tile-image img {
        transform: scale(1.045);
    }

    .location-card iframe {
        transition: filter 250ms ease;
    }

    .location-card:hover iframe {
        filter: grayscale(.15) contrast(1);
    }

    @keyframes hero-enter {
        from { opacity: 0; transform: translateY(17px); }
        to { opacity: 1; transform: translateY(0); }
    }

    @keyframes photo-enter {
        from { opacity: .65; transform: scale(1.045); }
        to { opacity: 1; transform: scale(1); }
    }

    @keyframes badge-enter {
        from { opacity: 0; transform: translateY(9px) scale(.96); }
        to { opacity: 1; transform: translateY(0) scale(1); }
    }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
}
