/**
 * Custom Sticky Container - Frontend Styles
 * Version: 3.1.0
 * Enhanced with activation modes and placeholder management
 */

/* Base container styles */
.csc-container {
    transition: none;
}

/* Visible at top state (for after_scroll mode) */
.csc-container.csc-visible-top {
    position: relative;
    opacity: 1;
    visibility: visible;
}

/* Hidden state - used before sticky activation */
.csc-container.csc-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

/* Sticky state */
.csc-container.csc-sticky {
    position: fixed;
    transition: none;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
}

/* Full width modifier */
.csc-container.csc-sticky.csc-full-width {
    left: 0;
    right: 0;
    width: 100%;
}

/* Position modifiers */
.csc-container.csc-sticky.csc-top {
    bottom: auto;
}

.csc-container.csc-sticky.csc-bottom {
    top: auto;
}

/* Placeholder element to prevent jump */
.csc-placeholder {
    opacity: 0 !important;
    pointer-events: none !important;
    position: static !important;
    transition: none !important;
    animation: none !important;
    transform: none !important;
    background: transparent !important;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
}

/* Animation states */
.csc-container.csc-animating {
    transition: transform var(--csc-duration, 300ms) ease-out,
                opacity var(--csc-duration, 300ms) ease-out;
}

/* Fade animation */
.csc-container.csc-animate-fade {
    opacity: 0;
}

.csc-container.csc-animate-fade.csc-animating {
    opacity: 1;
}

/* Slide animation */
.csc-container.csc-animate-slide {
    opacity: 0;
}

.csc-container.csc-animate-slide.csc-top {
    transform: translateY(-100%);
}

.csc-container.csc-animate-slide.csc-bottom {
    transform: translateY(100%);
}

.csc-container.csc-animate-slide.csc-animating {
    opacity: 1;
    transform: translateY(0);
}

/* Fade & Slide animation */
.csc-container.csc-animate-fade-slide {
    opacity: 0;
}

.csc-container.csc-animate-fade-slide.csc-top {
    transform: translateY(-20px);
}

.csc-container.csc-animate-fade-slide.csc-bottom {
    transform: translateY(20px);
}

.csc-container.csc-animate-fade-slide.csc-animating {
    opacity: 1;
    transform: translateY(0);
}

/* Scale animation */
.csc-container.csc-animate-scale {
    opacity: 0;
    transform: scale(0.9);
    transform-origin: center;
}

.csc-container.csc-animate-scale.csc-top {
    transform-origin: center top;
}

.csc-container.csc-animate-scale.csc-bottom {
    transform-origin: center bottom;
}

.csc-container.csc-animate-scale.csc-animating {
    opacity: 1;
    transform: scale(1);
}

/* Bounce animation */
@keyframes csc-bounce-in {
    0% {
        opacity: 0;
        transform: translateY(-100%);
    }
    60% {
        opacity: 1;
        transform: translateY(20%);
    }
    80% {
        transform: translateY(-10%);
    }
    100% {
        transform: translateY(0);
    }
}

@keyframes csc-bounce-in-bottom {
    0% {
        opacity: 0;
        transform: translateY(100%);
    }
    60% {
        opacity: 1;
        transform: translateY(-20%);
    }
    80% {
        transform: translateY(10%);
    }
    100% {
        transform: translateY(0);
    }
}

.csc-container.csc-animate-bounce {
    opacity: 0;
}

.csc-container.csc-animate-bounce.csc-animating.csc-top {
    animation: csc-bounce-in var(--csc-duration, 600ms) cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards;
}

.csc-container.csc-animate-bounce.csc-animating.csc-bottom {
    animation: csc-bounce-in-bottom var(--csc-duration, 600ms) cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards;
}

/* Smooth transition for after_scroll mode */
.csc-container.csc-visible-top {
    transition: none;
}

.csc-container.csc-visible-top.csc-sticky {
    transition: none;
}

/* Prevent layout shift during transition */
.csc-container {
    will-change: position;
}

.csc-container.csc-sticky {
    will-change: auto;
}

/* Responsive visibility */
@media (max-width: 767px) {
    .csc-container.csc-no-mobile {
        position: relative !important;
        opacity: 1 !important;
        visibility: visible !important;
        transform: none !important;
    }
    
    .csc-container.csc-no-mobile.csc-sticky {
        position: relative !important;
    }
}

@media (min-width: 768px) and (max-width: 1024px) {
    .csc-container.csc-no-tablet {
        position: relative !important;
        opacity: 1 !important;
        visibility: visible !important;
        transform: none !important;
    }
    
    .csc-container.csc-no-tablet.csc-sticky {
        position: relative !important;
    }
}

@media (min-width: 1025px) {
    .csc-container.csc-no-desktop {
        position: relative !important;
        opacity: 1 !important;
        visibility: visible !important;
        transform: none !important;
    }
    
    .csc-container.csc-no-desktop.csc-sticky {
        position: relative !important;
    }
}

/* Accessibility */
@media (prefers-reduced-motion: reduce) {
    .csc-container {
        transition: none !important;
        animation: none !important;
    }
    
    .csc-container.csc-animating {
        opacity: 1 !important;
        transform: none !important;
    }
}

/* Editor mode adjustments */
.elementor-editor-active .csc-container {
    position: relative !important;
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
}

.elementor-editor-active .csc-placeholder {
    display: none !important;
}

/* Z-index management for nested sticky containers */
.csc-container.csc-sticky + .csc-container.csc-sticky {
    z-index: calc(var(--csc-z-index, 999) - 1);
}

/* Ensure proper stacking context */
.csc-container.csc-sticky {
    will-change: transform;
}

/* Fix for potential overflow issues */
body.has-csc-sticky {
    overflow-x: hidden;
}

/* Smooth scroll behavior compatibility */
html.smooth-scroll .csc-container {
    scroll-behavior: smooth;
}
