/* Easy Elements Preloader */

.easyel-preloader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--easyel-preloader-bg, #ffffff);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 999999;
    transition: opacity var(--easyel-preloader-fadeout, 600ms) cubic-bezier(0.4, 0, 0.2, 1),
                visibility var(--easyel-preloader-fadeout, 600ms) cubic-bezier(0.4, 0, 0.2, 1);
    opacity: 1;
    visibility: visible;
}

.easyel-preloader.easyel-preloader-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.easyel-preloader-logo {
    margin-bottom: 20px;
    text-align: center;
}

.easyel-preloader-logo img {
    max-width: 180px;
    max-height: 80px;
    height: auto;
    width: auto;
}

.easyel-preloader-spinner {
    display: flex;
    align-items: center;
    justify-content: center;
}

/* ----- Style 1: Circle ----- */
.easyel-preloader-style-circle .easyel-preloader-circle {
    width: var(--easyel-preloader-size, 60px);
    height: var(--easyel-preloader-size, 60px);
    border: 3px solid var(--easyel-preloader-secondary, #e0e0e0);
    border-top-color: var(--easyel-preloader-color, #5933ff);
    border-right-color: var(--easyel-preloader-color, #5933ff);
    border-radius: 50%;
    animation: easyel-preloader-rotate var(--easyel-preloader-speed, 1s) cubic-bezier(0.65, 0.05, 0.36, 1) infinite;
    will-change: transform;
}

@keyframes easyel-preloader-rotate {
    0%   { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* ----- Style 1b: Dotted Circle (lds-roller pattern: 8 dots orbiting) ----- */
.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle {
    display: inline-block;
    position: relative;
    width: var(--easyel-preloader-size, 80px);
    height: var(--easyel-preloader-size, 80px);
}

.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transform-origin: 50% 50%;
    animation: easyel-preloader-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
    animation-duration: var(--easyel-preloader-speed, 1.2s);
}

.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div::after {
    content: " ";
    display: block;
    position: absolute;
    width: calc(var(--easyel-preloader-size, 80px) * 0.075);
    height: calc(var(--easyel-preloader-size, 80px) * 0.075);
    border-radius: 50%;
    background: var(--easyel-preloader-color, #5933ff);
    margin: calc(var(--easyel-preloader-size, 80px) * -0.025) 0 0
            calc(var(--easyel-preloader-size, 80px) * -0.025);
}

.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(1) { animation-delay: -0.036s; }
.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(1)::after { top: 78.75%; left: 78.75%; }

.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(2) { animation-delay: -0.072s; }
.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(2)::after { top: 85%; left: 70%; }

.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(3) { animation-delay: -0.108s; }
.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(3)::after { top: 88.75%; left: 60%; }

.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(4) { animation-delay: -0.144s; }
.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(4)::after { top: 90%; left: 50%; }

.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(5) { animation-delay: -0.18s; }
.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(5)::after { top: 88.75%; left: 40%; }

.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(6) { animation-delay: -0.216s; }
.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(6)::after { top: 85%; left: 30%; }

.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(7) { animation-delay: -0.252s; }
.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(7)::after { top: 78.75%; left: 21.25%; }

.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(8) { animation-delay: -0.288s; }
.easyel-preloader-style-dotted_circle .easyel-preloader-dotted-circle div:nth-child(8)::after { top: 70%; left: 15%; }

@keyframes easyel-preloader-roller {
    0%   { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* ----- Style 2: Dots ----- */
.easyel-preloader-style-dots .easyel-preloader-spinner {
    gap: calc(var(--easyel-preloader-size, 60px) * 0.2);
}

.easyel-preloader-style-dots .easyel-preloader-dot {
    width: calc(var(--easyel-preloader-size, 60px) * 0.25);
    height: calc(var(--easyel-preloader-size, 60px) * 0.25);
    background: var(--easyel-preloader-color, #5933ff);
    border-radius: 50%;
    display: inline-block;
    animation: easyel-preloader-bounce var(--easyel-preloader-speed, 1s) cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite both;
    will-change: transform, opacity;
}

.easyel-preloader-style-dots .easyel-preloader-dot:nth-child(1) {
    animation-delay: -0.32s;
}

.easyel-preloader-style-dots .easyel-preloader-dot:nth-child(2) {
    animation-delay: -0.16s;
}

@keyframes easyel-preloader-bounce {
    0%   { transform: scale(0.3); opacity: 0.4; }
    50%  { transform: scale(1);   opacity: 1;   }
    100% { transform: scale(0.3); opacity: 0.4; }
}

/* ----- Style 3: Bars ----- */
.easyel-preloader-style-bars .easyel-preloader-spinner {
    gap: calc(var(--easyel-preloader-size, 60px) * 0.1);
    height: var(--easyel-preloader-size, 60px);
    align-items: center;
}

.easyel-preloader-style-bars .easyel-preloader-bar {
    display: inline-block;
    width: calc(var(--easyel-preloader-size, 60px) * 0.12);
    height: 100%;
    background: var(--easyel-preloader-color, #5933ff);
    border-radius: 4px;
    transform-origin: center;
    animation: easyel-preloader-bars var(--easyel-preloader-speed, 1s) cubic-bezier(0.45, 0.05, 0.55, 0.95) infinite;
    will-change: transform;
}

.easyel-preloader-style-bars .easyel-preloader-bar:nth-child(1) {
    animation-delay: -1.1s;
}
.easyel-preloader-style-bars .easyel-preloader-bar:nth-child(2) {
    animation-delay: -1s;
}
.easyel-preloader-style-bars .easyel-preloader-bar:nth-child(3) {
    animation-delay: -0.9s;
}
.easyel-preloader-style-bars .easyel-preloader-bar:nth-child(4) {
    animation-delay: -0.8s;
}

@keyframes easyel-preloader-bars {
    0%   { transform: scaleY(0.35); opacity: 0.6; }
    50%  { transform: scaleY(1);    opacity: 1;   }
    100% { transform: scaleY(0.35); opacity: 0.6; }
}

/* ----- Style 4: Pulse (double pulse for premium feel) ----- */
.easyel-preloader-style-pulse .easyel-preloader-spinner {
    position: relative;
    width: var(--easyel-preloader-size, 60px);
    height: var(--easyel-preloader-size, 60px);
}

.easyel-preloader-style-pulse .easyel-preloader-pulse {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--easyel-preloader-color, #5933ff);
    border-radius: 50%;
    animation: easyel-preloader-pulse var(--easyel-preloader-speed, 1s) cubic-bezier(0.4, 0, 0.2, 1) infinite;
    will-change: transform, opacity;
}

.easyel-preloader-style-pulse .easyel-preloader-spinner::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--easyel-preloader-color, #5933ff);
    border-radius: 50%;
    animation: easyel-preloader-pulse var(--easyel-preloader-speed, 1s) cubic-bezier(0.4, 0, 0.2, 1) infinite;
    animation-delay: calc(var(--easyel-preloader-speed, 1s) * -0.5);
    will-change: transform, opacity;
}

@keyframes easyel-preloader-pulse {
    0%   { transform: scale(0);   opacity: 1;   }
    100% { transform: scale(1.1); opacity: 0;   }
}

/* ----- Style 5: Custom Logo (Circle Spinner border + logo centered, upright) ----- */
.easyel-preloader-style-custom_logo .easyel-preloader-spinner {
    position: relative;
    width: var(--easyel-preloader-size, 60px);
    height: var(--easyel-preloader-size, 60px);
    display: inline-block;
}

.easyel-preloader-style-custom_logo .easyel-preloader-logo-ring {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 3px solid var(--easyel-preloader-secondary, #e0e0e0);
    border-top-color: var(--easyel-preloader-color, #5933ff);
    border-right-color: var(--easyel-preloader-color, #5933ff);
    border-radius: 50%;
    animation: easyel-preloader-rotate var(--easyel-preloader-speed, 1s) cubic-bezier(0.65, 0.05, 0.36, 1) infinite;
    box-sizing: border-box;
    will-change: transform;
}

.easyel-preloader-style-custom_logo .easyel-preloader-logo-img {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 36px;
    height: 36px;
    object-fit: contain;
    display: block;
}
