@media (prefers-reduced-motion: no-preference) {
    @keyframes fade-rise {
        from { opacity: 0; transform: translateY(14px); }
        to { opacity: 1; transform: translateY(0); }
    }

    @keyframes fade-in {
        from { opacity: 0; }
        to { opacity: 1; }
    }

    @keyframes dialog-enter {
        from { opacity: 0; transform: translateY(10px) scale(.98); }
        to { opacity: 1; transform: translateY(0) scale(1); }
    }

    .hero,
    .login-wrap,
    .admin-head,
    .reservation-success {
        animation: fade-rise .52s ease-out backwards;
    }

    .selection-surface,
    .admin-entry,
    .admin-nav,
    .admin-section {
        animation: fade-rise .52s ease-out .08s backwards;
    }

    .selection-count,
    .stats .stat,
    .admin-destination,
    .letter-card,
    .event-card {
        animation: fade-rise .48s ease-out backwards;
    }

    .selection-count { animation-delay: .15s; }
    .stats .stat:nth-child(1),
    .letter-card:nth-child(3n + 1) { animation-delay: .12s; }
    .stats .stat:nth-child(2),
    .letter-card:nth-child(3n + 2) { animation-delay: .17s; }
    .stats .stat:nth-child(3),
    .letter-card:nth-child(3n) { animation-delay: .22s; }
    .stats .stat:nth-child(4) { animation-delay: .27s; }

    .letter-viewer[open],
    .reserve-confirm[open] {
        animation: dialog-enter .22s ease-out backwards;
    }

    .letter-viewer[open]::backdrop,
    .reserve-confirm[open]::backdrop {
        animation: fade-in .22s ease-out backwards;
    }

    .button,
    .secondary-button,
    .school-filter {
        transition: background-color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease;
    }

    .button:hover,
    .secondary-button:hover,
    .school-filter:hover {
        transform: translateY(-1px);
        box-shadow: 0 4px 12px #003b6519;
    }
}

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