/* === Preloader Fail-Safe (sem SVG filter) === */
.preloader.glass{
  position:fixed; inset:0; display:flex; align-items:center; justify-content:center;
  background: radial-gradient(circle at 50% 10%, rgba(255,255,255,.7), rgba(235,240,255,.9) 60%, rgba(230,235,255,1) 85%);
  backdrop-filter: blur(10px) saturate(125%);
  -webkit-backdrop-filter: blur(10px) saturate(125%);
  z-index: 2147483647; /* topo absoluto */
}
.preloader .dots{ position:relative; width: 180px; height: 64px; display:flex; align-items:center; justify-content:center; gap:18px; }
.preloader .dot{
  position:relative; width:18px; height:18px; border-radius:50%;
  transform: translateY(0) scale(1);
  animation: hop .85s ease-in-out infinite;
  box-shadow: 0 6px 16px rgba(0,0,0,.16), inset 0 1px 1px rgba(255,255,255,.18), inset 0 -3px 8px rgba(0,0,0,.14);
  opacity: .98;
}
/* cores exatas */
.preloader .dot1{ background:#4cb5cf; animation-delay: 0s; }
.preloader .dot2{ background:#3967eb; animation-delay: .14s; }
.preloader .dot3{ background:#7426ef; animation-delay: .28s; }

@keyframes hop{
  0%, 24%, 100% { transform: translateY(0) scale(1); }
  12% { transform: translateY(-12px) scale(1.1); }
}

/* transição pro logo */
.preloader.show-logo .dots{ opacity:0; transform: scale(.92); transition: opacity .28s, transform .28s; }
#logopre{
  position:absolute;
  top:50%;
  left:50%;
  opacity:0;
  transform: translate(-50%, -50%) translateY(8px);
  transition: opacity .32s, transform .32s;
}
.preloader.show-logo #logopre{
  display:block !important;
  opacity:1;
  transform: translate(-50%, -50%);
}
.preloader.fade-out{ opacity:0; transition: opacity .32s; pointer-events:none; }
