/* Zapfactor Preloader */
html.zfpl-lock,html.zfpl-lock body{overflow:hidden}
html.zfpl-skip #zfpl{display:none!important}

.zfpl-preloader{position:fixed;top:0;left:0;right:0;bottom:0;width:100%;height:100%;z-index:999999;display:flex;align-items:center;justify-content:center;background:var(--zfpl-bg,#fff);color:var(--zfpl-text,#222);opacity:1;visibility:visible;
transition:opacity var(--zfpl-fade,500ms) ease,transform var(--zfpl-fade,500ms) ease,visibility 0s linear var(--zfpl-fade,500ms)}
.zfpl-preloader.zfpl-hide{opacity:0;visibility:hidden;pointer-events:none}
.zfpl-preloader.zfpl-exit-slide.zfpl-hide{opacity:1;transform:translateY(-100%)}
.zfpl-preloader.zfpl-exit-zoom.zfpl-hide{transform:scale(1.12)}

.zfpl-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px;max-width:90%;text-align:center;box-sizing:border-box}
.zfpl-preloader .zfpl-logo{position:relative;left:var(--zfpl-logo-x,0);top:var(--zfpl-logo-y,0);display:block;width:var(--zfpl-logo-w,150px);max-width:100%;height:auto;margin:0}
.zfpl-preloader .zfpl-text{font-size:1.25rem;font-weight:600;line-height:1.3;letter-spacing:.03em;color:var(--zfpl-text,#222)}

.zfpl-anim-pulse{animation:zfpl-pulse 1.6s ease-in-out infinite}
.zfpl-anim-fade{animation:zfpl-fadein .8s ease both}
@keyframes zfpl-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes zfpl-fadein{from{opacity:0}to{opacity:1}}

/* Progress bar */
.zfpl-preloader .zfpl-bar{position:relative;width:min(260px,70vw);height:6px;border-radius:3px;overflow:hidden}
.zfpl-preloader .zfpl-bar::before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:var(--zfpl-accent,#2271b1);opacity:.2}
.zfpl-preloader .zfpl-bar-fill{position:absolute;top:0;left:0;bottom:0;width:100%;background-color:var(--zfpl-accent,#2271b1);
background-image:linear-gradient(45deg,rgba(255,255,255,.3) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.3) 50%,rgba(255,255,255,.3) 75%,transparent 75%,transparent);
background-size:16px 16px;transform:scaleX(0);transform-origin:left center;transition:transform .3s ease-out;animation:zfpl-stripes .8s linear infinite}
@keyframes zfpl-stripes{from{background-position:16px 0}to{background-position:0 0}}

/* Spinner ring */
.zfpl-preloader .zfpl-ring{width:42px;height:42px;border-radius:50%;border:4px solid var(--zfpl-accent,#2271b1);border-color:var(--zfpl-accent,#2271b1) transparent var(--zfpl-accent,#2271b1) transparent;animation:zfpl-spin 1s linear infinite}
@keyframes zfpl-spin{to{transform:rotate(360deg)}}

/* Bouncing dots */
.zfpl-preloader .zfpl-dots{display:flex;gap:8px}
.zfpl-preloader .zfpl-dots i{display:block;width:12px;height:12px;border-radius:50%;background:var(--zfpl-accent,#2271b1);animation:zfpl-bounce 1s ease-in-out infinite}
.zfpl-preloader .zfpl-dots i:nth-child(2){animation-delay:.15s}
.zfpl-preloader .zfpl-dots i:nth-child(3){animation-delay:.3s}
@keyframes zfpl-bounce{0%,80%,100%{transform:translateY(0);opacity:.5}40%{transform:translateY(-10px);opacity:1}}

/* Admin preview */
.zfpl-preview-wrap{position:relative}
.zfpl-preloader.zfpl-demo{position:absolute;top:0;left:0;right:auto;bottom:auto;width:1280px;height:720px;z-index:auto;transition:none;transform-origin:0 0}
.zfpl-demo .zfpl-bar-fill{transform:scaleX(.6)}

@media (prefers-reduced-motion:reduce){
.zfpl-preloader .zfpl-bar-fill,.zfpl-anim-pulse,.zfpl-anim-fade,.zfpl-preloader .zfpl-dots i{animation:none}
.zfpl-preloader .zfpl-ring{animation-duration:2.5s}
}
