/**
 * Shared Widget Styles for Elementor Swiss Kit
 * 
 * @package Elementor_Swiss_Kit
 * @since 1.0.0
 */

/* ==========================================================================
   Shared Widget Base Styles
   ========================================================================== */

.esk-widget {
    position: relative;
    box-sizing: border-box;
}

.esk-widget * {
    box-sizing: border-box;
}

/* ==========================================================================
   Loading States
   ========================================================================== */

.esk-loading {
    opacity: 0.6;
    pointer-events: none;
    transition: opacity 0.3s ease;
}

.esk-loading::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 20px;
    height: 20px;
    margin: -10px 0 0 -10px;
    border: 2px solid #f3f3f3;
    border-top: 2px solid #007AFF;
    border-radius: 50%;
    animation: esk-spin 1s linear infinite;
    z-index: 10;
}

@keyframes esk-spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* ==========================================================================
   Visibility States
   ========================================================================== */

.esk-hidden {
    display: none !important;
}

.esk-visible {
    display: block !important;
}

.esk-invisible {
    visibility: hidden !important;
}

/* ==========================================================================
   Responsive Utilities
   ========================================================================== */

.esk-mobile-only {
    display: none;
}

.esk-tablet-only {
    display: none;
}

.esk-desktop-only {
    display: block;
}

@media (max-width: 767px) {
    .esk-mobile-only {
        display: block;
    }
    
    .esk-desktop-only {
        display: none;
    }
}

@media (min-width: 768px) and (max-width: 1023px) {
    .esk-tablet-only {
        display: block;
    }
    
    .esk-desktop-only {
        display: none;
    }
}

/* ==========================================================================
   Animation Utilities
   ========================================================================== */

.esk-fade-in {
    animation: esk-fade-in 0.6s ease forwards;
}

.esk-slide-up {
    animation: esk-slide-up 0.6s ease forwards;
}

.esk-scale-in {
    animation: esk-scale-in 0.6s ease forwards;
}

@keyframes esk-fade-in {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes esk-slide-up {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes esk-scale-in {
    from {
        opacity: 0;
        transform: scale(0.9);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* ==========================================================================
   Interactive Elements
   ========================================================================== */

.esk-interactive {
    cursor: pointer;
    transition: all 0.3s ease;
}

.esk-interactive:hover {
    transform: translateY(-2px);
}

.esk-interactive:active {
    transform: translateY(0);
}

/* ==========================================================================
   Accessibility
   ========================================================================== */

.esk-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* ==========================================================================
   Focus States
   ========================================================================== */

.esk-focus-visible:focus {
    outline: 2px solid #007AFF;
    outline-offset: 2px;
}

/* ==========================================================================
   Print Styles
   ========================================================================== */

@media print {
    .esk-widget {
        break-inside: avoid;
    }
    
    .esk-interactive {
        cursor: default;
    }
    
    .esk-interactive:hover {
        transform: none;
    }
} 