html, body {
    font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial;
    scroll-behavior: smooth;
}

/* ===== Page enter animation ===== */
.enter-up {
    opacity: 0;
    transform: translateY(14px);
}

.enter-up.is-in {
    opacity: 1;
    transform: translateY(0);
    transition: 700ms cubic-bezier(.2, .8, .2, 1);
}

.enter-fade {
    opacity: 0;
}

.enter-fade.is-in {
    opacity: 1;
    transition: 700ms cubic-bezier(.2, .8, .2, 1);
}

.delay-1 {
    transition-delay: 80ms;
}

.delay-2 {
    transition-delay: 160ms;
}

.delay-3 {
    transition-delay: 240ms;
}

.delay-4 {
    transition-delay: 320ms;
}

.delay-5 {
    transition-delay: 400ms;
}

/* ===== Modal animation (universal) ===== */
.modal-root {
    opacity: 0;
    pointer-events: none;
    transition: opacity 220ms ease;
}

.modal-root.is-open {
    opacity: 1;
    pointer-events: auto;
}

.modal-overlay {
    opacity: 0;
    transition: opacity 220ms ease;
}

.modal-root.is-open .modal-overlay {
    opacity: 1;
}

.modal-panel {
    opacity: 0;
    transform: translateY(10px) scale(.98);
    transition: 260ms cubic-bezier(.2, .8, .2, 1);
}

.modal-root.is-open .modal-panel {
    opacity: 1;
    transform: translateY(0) scale(1);
}
