/* ============================================================
   KUZNYA EFFECTS - Stage 1: Scroll Animations
   No Russian comments (CP1251 safe)
   ============================================================ */

/* ---- Base: elements wait invisible until visible ---- */
[data-effect] {
    opacity: 0;
    will-change: opacity, transform;
    transition:
        opacity var(--kz-duration, 0.6s) cubic-bezier(0.16, 1, 0.3, 1) var(--kz-delay, 0s),
        transform var(--kz-duration, 0.6s) cubic-bezier(0.16, 1, 0.3, 1) var(--kz-delay, 0s);
    backface-visibility: hidden;
}

[data-effect].kz-visible {
    opacity: 1;
    transform: none !important;
}

/* ---- Slide: fade-up / fade-down / fade-left / fade-right ---- */
[data-effect="fade-up"]    { transform: translate3d(0, 40px, 0); }
[data-effect="fade-down"]  { transform: translate3d(0, -40px, 0); }
[data-effect="fade-left"]  { transform: translate3d(-40px, 0, 0); }
[data-effect="fade-right"] { transform: translate3d(40px, 0, 0); }

/* ---- Zoom: zoom-in / zoom-out ---- */
[data-effect="zoom-in"]  { transform: scale(0.92); }
[data-effect="zoom-out"] { transform: scale(1.08); }

/* ---- Flip ---- */
[data-effect="flip"] {
    transform: perspective(800px) rotateX(-20deg);
    transform-origin: center bottom;
}

/* ---- Rotate ---- */
[data-effect="rotate"] {
    transform: rotate(-6deg) scale(0.95);
    transform-origin: center center;
}

/* ---- Fallback: if JS is disabled, show everything ---- */
html.no-js [data-effect] {
    opacity: 1 !important;
    transform: none !important;
}

/* ---- Accessibility: reduced motion ---- */
@media (prefers-reduced-motion: reduce) {
    [data-effect] {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}