/* ===================================================================
   NextGO — Animations & Keyframes
   =================================================================== */

/* ===== KEYFRAMES ===== */

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes fadeUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeDown {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeLeft {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes scaleIn {
    from {
        opacity: 0;
        transform: scale(0.92);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes charDrop {
    from {
        opacity: 0;
        transform: translateY(-40px) rotate(-10deg);
        filter: blur(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0) rotate(0deg);
        filter: blur(0);
    }
}

@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

@keyframes pulse {
    0%, 100% {
        opacity: 0.6;
        transform: scale(1);
    }
    50% {
        opacity: 1;
        transform: scale(1.15);
    }
}

/* bgBreathe keyframe DEPRECATED — scale-up was causing visible blur on the 4K hero.
   Kept as no-op for backward compat; no class references it anymore. */
@keyframes bgBreathe {
    0%, 100% { transform: none; }
}

@keyframes scrollHint {
    0%, 100% { transform: translate(-50%, 0); opacity: 0.6; }
    50% { transform: translate(-50%, 8px); opacity: 1; }
}

@keyframes modalIn {
    from {
        opacity: 0;
        transform: translateY(20px) scale(0.96);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

/* Staggered children entrance — cascade fade-up dla zawartości modala (sesja 22) */
@keyframes modalChild {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

.modal__panel .modal__header,
.modal__panel .form__field,
.modal__panel .form__checkbox,
.modal__panel .btn--block,
.modal__panel .form__divider,
.modal__panel .form__providers,
.modal__panel .form__footer {
    animation: modalChild 0.45s var(--ease-out) both;
}

.modal__panel .modal__header           { animation-delay: 0.08s; }
.modal__panel .form__field:nth-of-type(1)  { animation-delay: 0.14s; }
.modal__panel .form__field:nth-of-type(2)  { animation-delay: 0.20s; }
.modal__panel .form__checkbox          { animation-delay: 0.26s; }
.modal__panel .btn--block              { animation-delay: 0.32s; }
.modal__panel .form__divider           { animation-delay: 0.38s; }
.modal__panel .form__providers         { animation-delay: 0.44s; }
.modal__panel .form__footer            { animation-delay: 0.50s; }

@keyframes glow {
    0%, 100% {
        box-shadow: 0 0 20px rgba(245, 166, 35, 0.3);
    }
    50% {
        box-shadow: 0 0 40px rgba(245, 166, 35, 0.6);
    }
}

@keyframes shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

/* ===== SCROLL REVEAL CLASSES ===== */
[data-reveal] {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.9s var(--ease-out),
                transform 0.9s var(--ease-out);
    will-change: opacity, transform;
}

[data-reveal="left"] {
    transform: translateX(-40px);
}

[data-reveal="right"] {
    transform: translateX(40px);
}

[data-reveal="scale"] {
    transform: scale(0.92);
}

[data-reveal].is-visible {
    opacity: 1;
    transform: translate(0, 0) scale(1);
}

[data-reveal-delay="100"] { transition-delay: 100ms; }
[data-reveal-delay="200"] { transition-delay: 200ms; }
[data-reveal-delay="300"] { transition-delay: 300ms; }
[data-reveal-delay="400"] { transition-delay: 400ms; }
[data-reveal-delay="500"] { transition-delay: 500ms; }
[data-reveal-delay="600"] { transition-delay: 600ms; }

/* ===== STAGGERED CHILDREN ===== */
.features__inner .feature {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.7s var(--ease-out),
                transform 0.7s var(--ease-out);
}

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

.features__inner.is-visible .feature:nth-child(1) { transition-delay: 0ms; }
.features__inner.is-visible .feature:nth-child(2) { transition-delay: 120ms; }
.features__inner.is-visible .feature:nth-child(3) { transition-delay: 240ms; }
.features__inner.is-visible .feature:nth-child(4) { transition-delay: 360ms; }

/* ===== TEXT SHIMMER ===== */
.shimmer-text {
    background: linear-gradient(90deg, var(--color-text) 0%, var(--color-accent-bright) 50%, var(--color-text) 100%);
    background-size: 200% auto;
    background-clip: text;
    -webkit-background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
    animation: shimmer 6s linear infinite;
}

/* ===== REDUCED MOTION OVERRIDES ===== */
@media (prefers-reduced-motion: reduce) {
    .logo-mark__char,
    .portal__ring,
    .portal__core,
    .hero__eyebrow-dot,
    .bg-layer__image,
    .hero__scroll {
        animation: none !important;
    }

    [data-reveal] {
        opacity: 1 !important;
        transform: none !important;
    }
}
