/* AKAI Motion Effects for Elementor */
.akai-motion {
    opacity: 0;
    transition-property: opacity, transform, filter, clip-path;
    transition-duration: var(--akai-duration, 900ms);
    transition-delay: var(--akai-delay, 0ms);
    transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
    will-change: opacity, transform, filter, clip-path;
}

.akai-motion.akai-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1) rotate(0deg) rotateX(0deg) rotateY(0deg);
    filter: blur(0);
    clip-path: inset(0 0 0 0);
}

/* Entrance / Scroll Reveal */
.akai-effect-fade-up { transform: translate3d(0, var(--akai-strength, 60px), 0); }
.akai-effect-fade-down { transform: translate3d(0, calc(var(--akai-strength, 60px) * -1), 0); }
.akai-effect-fade-left { transform: translate3d(var(--akai-strength, 60px), 0, 0); }
.akai-effect-fade-right { transform: translate3d(calc(var(--akai-strength, 60px) * -1), 0, 0); }

.akai-effect-slide-up { transform: translate3d(0, calc(var(--akai-strength, 60px) * 1.5), 0); }
.akai-effect-slide-down { transform: translate3d(0, calc(var(--akai-strength, 60px) * -1.5), 0); }
.akai-effect-slide-left { transform: translate3d(calc(var(--akai-strength, 60px) * 1.5), 0, 0); }
.akai-effect-slide-right { transform: translate3d(calc(var(--akai-strength, 60px) * -1.5), 0, 0); }

.akai-effect-zoom-in { transform: scale(0.82); }
.akai-effect-zoom-out { transform: scale(1.18); }
.akai-effect-blur-reveal { transform: translate3d(0, calc(var(--akai-strength, 60px) / 2), 0); filter: blur(14px); }
.akai-effect-rotate-in { transform: translate3d(0, var(--akai-strength, 60px), 0) rotate(-8deg) scale(0.94); }
.akai-effect-flip-up { transform: perspective(900px) rotateX(18deg) translateY(var(--akai-strength, 60px)); transform-origin: center bottom; }
.akai-effect-flip-left { transform: perspective(900px) rotateY(-18deg) translateX(var(--akai-strength, 60px)); transform-origin: left center; }
.akai-effect-clip-up { clip-path: inset(100% 0 0 0); transform: translateY(calc(var(--akai-strength, 60px) / 2)); }
.akai-effect-clip-left { clip-path: inset(0 100% 0 0); transform: translateX(calc(var(--akai-strength, 60px) / 2)); }

/* Loop effects */
.akai-effect-float.akai-visible { animation: akaiFloat 3.5s ease-in-out infinite; }
.akai-effect-pulse.akai-visible { animation: akaiPulse 2.4s ease-in-out infinite; }
.akai-effect-soft-bounce.akai-visible { animation: akaiSoftBounce 2.2s ease-in-out infinite; }
.akai-effect-swing.akai-visible { transform-origin: top center; animation: akaiSwing 2.6s ease-in-out infinite; }
.akai-effect-shake.akai-visible { animation: akaiShake 0.8s ease-in-out; }

@keyframes akaiFloat {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-14px); }
}

@keyframes akaiPulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.055); }
}

@keyframes akaiSoftBounce {
    0%, 100% { transform: translateY(0); }
    45% { transform: translateY(-18px); }
    60% { transform: translateY(-10px); }
}

@keyframes akaiSwing {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(2.5deg); }
    75% { transform: rotate(-2.5deg); }
}

@keyframes akaiShake {
    0%, 100% { transform: translateX(0); }
    20% { transform: translateX(-9px); }
    40% { transform: translateX(9px); }
    60% { transform: translateX(-6px); }
    80% { transform: translateX(6px); }
}

/* Hover */
.akai-motion-hover {
    transition-property: opacity, transform, filter, clip-path, box-shadow;
}

.akai-motion-hover.akai-visible:hover {
    transform: translateY(-8px) scale(1.015);
}

/* Image effects */
.akai-effect-image-zoom {
    overflow: hidden;
}

.akai-effect-image-zoom img {
    transform: scale(1.16);
    transition: transform var(--akai-duration, 900ms) cubic-bezier(0.22, 1, 0.36, 1);
}

.akai-effect-image-zoom.akai-visible img {
    transform: scale(1);
}

.akai-effect-image-parallax {
    opacity: 1;
    transform: none;
    overflow: hidden;
}

.akai-effect-image-parallax img {
    transform: translateY(var(--akai-parallax-y, 0px)) scale(1.08);
    will-change: transform;
}

.akai-effect-image-tilt {
    opacity: 1;
    transform: none;
    transition: transform 250ms ease;
}

/* Text effects */
.akai-effect-text-reveal {
    clip-path: inset(0 0 100% 0);
    transform: translateY(24px);
}

.akai-effect-typewriter {
    opacity: 1;
    overflow: hidden;
    white-space: nowrap;
    width: 0;
    border-right: 2px solid currentColor;
}

.akai-effect-typewriter.akai-visible {
    animation: akaiTypewriter var(--akai-duration, 1800ms) steps(40, end) forwards, akaiCursor 0.8s step-end infinite;
}

@keyframes akaiTypewriter {
    from { width: 0; }
    to { width: 100%; }
}

@keyframes akaiCursor {
    0%, 100% { border-color: transparent; }
    50% { border-color: currentColor; }
}

/* Stagger children */
.akai-effect-stagger-children {
    opacity: 1;
    transform: none;
}

.akai-effect-stagger-children > * {
    opacity: 0;
    transform: translateY(35px);
    transition: opacity 700ms cubic-bezier(0.22, 1, 0.36, 1), transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.akai-effect-stagger-children.akai-visible > * {
    opacity: 1;
    transform: translateY(0);
}

.akai-effect-stagger-children.akai-visible > *:nth-child(1) { transition-delay: 80ms; }
.akai-effect-stagger-children.akai-visible > *:nth-child(2) { transition-delay: 160ms; }
.akai-effect-stagger-children.akai-visible > *:nth-child(3) { transition-delay: 240ms; }
.akai-effect-stagger-children.akai-visible > *:nth-child(4) { transition-delay: 320ms; }
.akai-effect-stagger-children.akai-visible > *:nth-child(5) { transition-delay: 400ms; }
.akai-effect-stagger-children.akai-visible > *:nth-child(6) { transition-delay: 480ms; }
.akai-effect-stagger-children.akai-visible > *:nth-child(7) { transition-delay: 560ms; }
.akai-effect-stagger-children.akai-visible > *:nth-child(8) { transition-delay: 640ms; }

@media (prefers-reduced-motion: reduce) {
    .akai-motion,
    .akai-motion *,
    .akai-effect-typewriter.akai-visible {
        animation: none !important;
        transition: none !important;
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
        clip-path: none !important;
        width: auto !important;
    }
}
