/* =========================================
   Custom Preloader
   ========================================= */

#js-preloader-overlay,
.preloader-overlay {
  background:
    radial-gradient(circle at center, rgba(47,103,178,0.20) 0%, rgba(15,31,56,0.96) 55%, rgba(10,18,34,1) 100%) !important;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* innerer Wrapper */
#js-preloader-overlay::before,
.preloader-overlay::before {
  content: "";
  position: absolute;
  width: 220px;
  height: 220px;
  border-radius: 50%;
  border: 2px solid rgba(87,200,255,0.18);
  border-top-color: rgba(87,200,255,0.75);
  border-right-color: rgba(240,194,50,0.55);
  animation: fsv-preloader-spin 1.6s linear infinite;
  box-shadow:
    0 0 25px rgba(87,200,255,0.10),
    0 0 60px rgba(87,200,255,0.05);
}

/* Logo */
#js-preloader-overlay img,
.preloader-overlay img,
#js-preloader-overlay .preloader-logo,
.preloader-overlay .preloader-logo {
  position: relative;
  z-index: 2;
  width: 120px !important;
  max-width: 120px !important;
  height: auto !important;
  animation: fsv-preloader-pulse 1.8s ease-in-out infinite;
  filter: drop-shadow(0 0 14px rgba(87,200,255,0.18));
}

/* Ladebalken unter dem Logo */
#js-preloader-overlay::after,
.preloader-overlay::after {
  content: "";
  position: absolute;
  top: calc(50% + 95px);
  left: 50%;
  transform: translateX(-50%);
  width: 160px;
  height: 4px;
  border-radius: 999px;
  background: rgba(255,255,255,0.08);
  overflow: hidden;
  box-shadow: 0 0 12px rgba(87,200,255,0.08);
}

#js-preloader-overlay .fsv-loader-bar,
.preloader-overlay .fsv-loader-bar {
  display: none;
}

/* animierter Balken */
#js-preloader-overlay::after {
  background:
    linear-gradient(90deg, rgba(255,255,255,0.10) 0%, rgba(255,255,255,0.10) 100%);
}

#js-preloader-overlay span,
.preloader-overlay span {
  position: relative;
}

#js-preloader-overlay::after,
.preloader-overlay::after {
  background:
    linear-gradient(90deg, rgba(255,255,255,0.08) 0%, rgba(255,255,255,0.08) 100%);
}

#js-preloader-overlay .preloader-bar-fill,
.preloader-overlay .preloader-bar-fill {
  display: none;
}

/* animierter Füllbalken per extra pseudo-layer */
#js-preloader-overlay .site-wrapper,
.preloader-overlay .site-wrapper {
  position: relative;
}

#js-preloader-overlay::marker,
.preloader-overlay::marker {
  content: "";
}

#js-preloader-overlay {
  overflow: hidden;
}

#js-preloader-overlay .dummy,
.preloader-overlay .dummy {
  display: none;
}

#js-preloader-overlay .preloader-progress,
.preloader-overlay .preloader-progress {
  display: none;
}

#js-preloader-overlay:after,
.preloader-overlay:after {
  background-color: rgba(255,255,255,0.10);
}

#js-preloader-overlay:after {
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.04);
}

#js-preloader-overlay:after,
.preloader-overlay:after {
  overflow: hidden;
}

#js-preloader-overlay:after {
  background-image:
    linear-gradient(90deg,
      rgba(87,200,255,0.0) 0%,
      rgba(87,200,255,0.95) 35%,
      rgba(240,194,50,0.95) 70%,
      rgba(240,194,50,0.0) 100%);
  background-size: 80px 100%;
  background-repeat: no-repeat;
  animation: fsv-preloader-bar 1.4s ease-in-out infinite;
}

/* kleine Zusatzstruktur */
#js-preloader-overlay,
.preloader-overlay {
  background-image:
    radial-gradient(circle at center, rgba(47,103,178,0.16) 0%, rgba(15,31,56,0.96) 58%, rgba(10,18,34,1) 100%),
    repeating-linear-gradient(
      -45deg,
      rgba(255,255,255,0.02) 0px,
      rgba(255,255,255,0.02) 10px,
      transparent 10px,
      transparent 26px
    ) !important;
}

/* Animationen */
@keyframes fsv-preloader-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

@keyframes fsv-preloader-pulse {
  0%, 100% {
    transform: scale(1);
    opacity: 0.96;
  }
  50% {
    transform: scale(1.045);
    opacity: 1;
  }
}

@keyframes fsv-preloader-bar {
  0%   { background-position: -90px 0; }
  100% { background-position: calc(100% + 90px) 0; }
}

/* Mobil etwas kompakter */
@media (max-width: 767px) {
  #js-preloader-overlay::before,
  .preloader-overlay::before {
    width: 180px;
    height: 180px;
  }

  #js-preloader-overlay img,
  .preloader-overlay img,
  #js-preloader-overlay .preloader-logo,
  .preloader-overlay .preloader-logo {
    width: 96px !important;
    max-width: 96px !important;
  }

  #js-preloader-overlay::after,
  .preloader-overlay::after {
    width: 130px;
    top: calc(50% + 78px);
  }
}

.fsv-preloader-text {
  position: absolute;
  top: calc(50% + 110px);
  left: 50%;
  transform: translateX(-50%);
  color: rgba(255,255,255,0.78);
  font-size: 13px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  z-index: 3;
  white-space: nowrap;
}

@media (max-width: 767px) {
  .fsv-preloader-text {
    top: calc(50% + 92px);
    font-size: 11px;
  }
}