/**
 * OXORA Landing V2 — Biblioteca de Animações
 * Fase 1: preparação only. NÃO importar na landing até Fase 2.
 * Engenharia extraída do snapshot de referência; tokens Oxora.
 */

@media (prefers-reduced-motion: reduce) {
    .ox-lv2-animate,
    .ox-lv2-reveal,
    .ox-lv2-reveal-stagger > *,
    .ox-lv2-float,
    .ox-lv2-pulse,
    .ox-lv2-marquee-track {
        animation: none !important;
        transition: none !important;
        opacity: 1 !important;
        transform: none !important;
    }
}

/* ── Entrada / Reveal ── */
@keyframes ox-lv2-rise {
    0% { transform: translateY(20px); opacity: 0; }
    100% { transform: translateY(0); opacity: 1; }
}

@keyframes ox-lv2-pop {
    0% { transform: scale(0.96); opacity: 0; }
    100% { transform: scale(1); opacity: 1; }
}

.ox-lv2-reveal {
    opacity: 0;
    transform: translateY(var(--ox-motion-reveal-y, 24px));
    transition: opacity var(--ox-motion-reveal, 640ms) var(--ox-motion-ease, cubic-bezier(0.22, 1, 0.36, 1)),
                transform var(--ox-motion-reveal, 640ms) var(--ox-motion-ease, cubic-bezier(0.22, 1, 0.36, 1));
}

.ox-lv2-reveal.revealed {
    opacity: 1;
    transform: translateY(0);
}

.ox-lv2-reveal-stagger > * {
    opacity: 0;
    transform: translateY(16px);
    transition: opacity var(--ox-motion-slow, 560ms) var(--ox-motion-ease, cubic-bezier(0.22, 1, 0.36, 1)),
                transform var(--ox-motion-slow, 560ms) var(--ox-motion-ease, cubic-bezier(0.22, 1, 0.36, 1));
}

.ox-lv2-reveal-stagger.revealed > *:nth-child(1) { transition-delay: 0ms; }
.ox-lv2-reveal-stagger.revealed > *:nth-child(2) { transition-delay: 80ms; }
.ox-lv2-reveal-stagger.revealed > *:nth-child(3) { transition-delay: 160ms; }
.ox-lv2-reveal-stagger.revealed > *:nth-child(4) { transition-delay: 240ms; }
.ox-lv2-reveal-stagger.revealed > *:nth-child(5) { transition-delay: 320ms; }
.ox-lv2-reveal-stagger.revealed > *:nth-child(6) { transition-delay: 400ms; }

.ox-lv2-reveal-stagger.revealed > * {
    opacity: 1;
    transform: translateY(0);
}

.ox-lv2-animate-rise {
    animation: ox-lv2-rise 500ms ease forwards;
}

.ox-lv2-animate-pop {
    animation: ox-lv2-pop 400ms ease forwards;
}

/* ── Float (hero decorativo) ── */
@keyframes ox-lv2-float-a {
    0%, 100% { transform: translateY(0) rotate(-3deg); }
    50% { transform: translateY(-6px) rotate(-3deg); }
}

@keyframes ox-lv2-float-b {
    0%, 100% { transform: translateY(0) rotate(3deg); }
    50% { transform: translateY(-6px) rotate(3deg); }
}

@keyframes ox-lv2-float-center {
    0%, 100% { transform: translate(-50%, 0) rotate(-2deg); }
    50% { transform: translate(-50%, -7px) rotate(-2deg); }
}

.ox-lv2-float--a { animation: ox-lv2-float-a 4s ease-in-out infinite; }
.ox-lv2-float--b { animation: ox-lv2-float-b 4.5s ease-in-out infinite; }
.ox-lv2-float--center { animation: ox-lv2-float-center 5s ease-in-out infinite; }

/* ── Pulse / Glow ── */
@keyframes ox-lv2-pulse-glow {
    0%, 100% {
        box-shadow: 0 0 0 3px rgba(155, 61, 255, 0.32), var(--ox-shadow);
    }
    50% {
        box-shadow: 0 0 0 7px rgba(155, 61, 255, 0.18), var(--ox-shadow);
    }
}

.ox-lv2-pulse {
    animation: ox-lv2-pulse-glow 2.5s ease-in-out infinite;
}

/* ── SVG stroke dash ── */
@keyframes ox-lv2-dash-flow {
    to { stroke-dashoffset: -18; }
}

.ox-lv2-dash-animate {
    stroke-dasharray: 6 12;
    animation: ox-lv2-dash-flow 1.2s linear infinite;
}

/* ── Bounce sutil (conectores) ── */
@keyframes ox-lv2-bridge-bounce {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(5px); }
}

.ox-lv2-bridge-bounce {
    animation: ox-lv2-bridge-bounce 2s ease-in-out infinite;
}

/* ── Marquee (CSS fallback; JS preferido) ── */
@keyframes ox-lv2-marquee-scroll {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

.ox-lv2-marquee-track--css {
    display: flex;
    width: max-content;
    animation: ox-lv2-marquee-scroll 40s linear infinite;
}

.ox-lv2-marquee-track--css:hover {
    animation-play-state: paused;
}
