.reveal {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 420ms ease, transform 420ms ease;
}

.reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.hover-lift {
    transition: transform 180ms ease, box-shadow 180ms ease;
}

.hover-lift:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-soft);
}

.soft-float {
    animation: softFloat 6s ease-in-out infinite;
}

@keyframes softFloat {
    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-8px);
    }
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    .reveal,
    .hover-lift,
    .soft-float {
        animation: none;
        opacity: 1;
        transform: none;
        transition: none;
    }
}

