/**
 * Wave Divider Widget Styles
 * 
 * @package Templines_Shortcodes_Core
 * @author Templines
 * @link https://templines.com
 */

/* Base Wave Divider Styles */
.tl-wave-divider {
    position: relative;
    width: 100%;
    height: 100px;
    overflow: hidden;
    line-height: 0;
    transform: rotate(0deg);
}

.tl-wave-divider .wave-container {
    position: relative;
    display: block;
    height: 100%;
}

.tl-wave-divider .wave-fill {
    transition: fill 0.3s ease;
}

/* Wave Position Variants */
.tl-wave-divider.tl-wave-bottom {
    transform: rotate(180deg);
}

.tl-wave-divider.tl-wave-flipped {
    transform: scaleX(-1);
}

.tl-wave-divider.tl-wave-bottom.tl-wave-flipped {
    transform: rotate(180deg) scaleX(-1);
}

/* Animation Base */
.tl-wave-divider.tl-wave-animated .wave-fill {
    animation-timing-function: linear;
    animation-iteration-count: infinite;
    animation-duration: 8s;
    animation-direction: normal;
}

/* Seamless Infinite Wave Motion Animation */
@keyframes tl-wave-motion-seamless {
    0% {
        transform: translateX(0);
    }
    100% {
        transform: translateX(-2400px);
    }
}

.tl-wave-divider.tl-animation-wave .wave-fill {
    animation-name: tl-wave-motion-seamless;
    animation-duration: 25s;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
}

/* Float Animation with Seamless Movement */
@keyframes tl-wave-float-seamless {
    0% {
        transform: translateX(0) translateY(0px);
    }
    25% {
        transform: translateX(-600px) translateY(-8px);
    }
    50% {
        transform: translateX(-1200px) translateY(0px);
    }
    75% {
        transform: translateX(-1800px) translateY(5px);
    }
    100% {
        transform: translateX(-2400px) translateY(0px);
    }
}

.tl-wave-divider.tl-animation-float .wave-fill {
    animation-name: tl-wave-float-seamless;
    animation-duration: 30s;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
}

/* Slide Animation with Seamless Movement */
@keyframes tl-wave-slide-seamless {
    0% {
        transform: translateX(0) scaleX(1);
    }
    25% {
        transform: translateX(-600px) scaleX(0.98);
    }
    50% {
        transform: translateX(-1200px) scaleX(1.02);
    }
    75% {
        transform: translateX(-1800px) scaleX(0.99);
    }
    100% {
        transform: translateX(-2400px) scaleX(1);
    }
}

.tl-wave-divider.tl-animation-slide .wave-fill {
    animation-name: tl-wave-slide-seamless;
    animation-duration: 35s;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
}

/* Advanced Wave Effects */
.tl-wave-divider.tl-wave-animated .wave::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.1), transparent);
    animation: tl-wave-shimmer 3s ease-in-out infinite;
}

@keyframes tl-wave-shimmer {
    0% {
        left: -100%;
    }
    50% {
        left: 100%;
    }
    100% {
        left: 100%;
    }
}

/* Responsive Design */
@media (max-width: 1024px) {
    .tl-wave-divider {
        height: 80px;
    }
    
    .tl-wave-divider.tl-wave-animated .wave {
        animation-duration: 4s;
    }
}

@media (max-width: 767px) {
    .tl-wave-divider {
        height: 60px;
    }
    
    .tl-wave-divider.tl-wave-animated .wave {
        animation-duration: 5s;
    }
    
    /* Reduce animation intensity on mobile */
    .tl-wave-divider.tl-animation-float .wave {
        animation-name: tl-wave-float-mobile;
    }
}

@keyframes tl-wave-float-mobile {
    0%, 100% {
        transform: translateY(0px);
    }
    50% {
        transform: translateY(-5px);
    }
}

/* Performance Optimizations */
.tl-wave-divider.tl-wave-animated .wave {
    will-change: transform;
    backface-visibility: hidden;
    perspective: 1000px;
}

/* Hover Effects */
.tl-wave-divider:hover.tl-wave-animated .wave {
    animation-play-state: paused;
}

/* Accessibility - Respect user preferences */
@media (prefers-reduced-motion: reduce) {
    .tl-wave-divider.tl-wave-animated .wave {
        animation: none !important;
    }
    
    .tl-wave-divider.tl-wave-animated .wave::before {
        animation: none !important;
    }
}

/* Dark Mode Support */
@media (prefers-color-scheme: dark) {
    .tl-wave-divider .wave path {
        filter: brightness(0.9);
    }
}

/* High Contrast Mode */
@media (prefers-contrast: high) {
    .tl-wave-divider .wave path {
        filter: contrast(1.2);
    }
}

/* Print Styles */
@media print {
    .tl-wave-divider.tl-wave-animated .wave {
        animation: none !important;
    }
    
    .tl-wave-divider {
        height: 50px !important;
    }
}

/* Elementor Editor Specific Styles */
.elementor-editor-active .tl-wave-divider.tl-wave-animated .wave {
    animation-duration: 2s;
}

/* Custom Properties for Dynamic Styling */
.tl-wave-divider {
    --wave-color: #ffffff;
    --wave-height: 100px;
    --animation-speed: 3s;
}

.tl-wave-divider .wave path {
    fill: var(--wave-color);
}

.tl-wave-divider {
    height: var(--wave-height);
}

.tl-wave-divider.tl-wave-animated .wave {
    animation-duration: var(--animation-speed);
}
