/* Preloader de 2.5 s: logo sobre fondo negro con el resplandor azul del footer */
.qm-preloader{position:fixed;inset:0;z-index:99999;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000;overflow:hidden;isolation:isolate;animation:qm-pre-out .45s 2.05s ease-in forwards}
.qm-preloader::before{content:"";position:absolute;left:50%;top:46%;width:min(1300px,170vw);aspect-ratio:1;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(0,113,227,.55) 0,rgba(0,113,227,.18) 34%,transparent 64%);z-index:-1;animation:qm-pre-glow 2.5s ease-in-out both}
.qm-preloader img{display:block;width:min(78vw,520px);height:auto;filter:drop-shadow(0 0 60px rgba(41,151,255,.5));animation:qm-pre-logo 1.1s cubic-bezier(.2,.7,.2,1) both,qm-pre-float 3s 1.1s ease-in-out infinite}
.qm-preloader-bar{position:relative;width:min(46vw,240px);height:3px;margin-top:clamp(18px,4vh,34px);border-radius:3px;background:rgba(255,255,255,.14);overflow:hidden}
.qm-preloader-bar::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(90deg,#2997ff,#9fd0ff);transform:scaleX(0);transform-origin:left;animation:qm-pre-bar 2.05s .1s cubic-bezier(.45,.05,.25,1) forwards}
body.qm-loading{overflow:hidden}
body.qm-loading .hero *{animation-play-state:paused!important}
@keyframes qm-pre-logo{from{opacity:0;transform:scale(.88);filter:blur(14px) drop-shadow(0 0 60px rgba(41,151,255,.5))}to{opacity:1;transform:none;filter:blur(0) drop-shadow(0 0 60px rgba(41,151,255,.5))}}
@keyframes qm-pre-float{0%,100%{translate:0 0}50%{translate:0 -8px}}
@keyframes qm-pre-glow{0%{opacity:0;scale:.8}35%{opacity:1}100%{opacity:1;scale:1.08}}
@keyframes qm-pre-bar{to{transform:scaleX(1)}}
@keyframes qm-pre-out{from{opacity:1;visibility:visible}to{opacity:0;visibility:hidden}}
@media(prefers-reduced-motion:reduce){.qm-preloader img,.qm-preloader::before,.qm-preloader-bar::after{animation:none}.qm-preloader-bar::after{transform:scaleX(1)}}
