.preloader {
  display: none !important;
}

.abp-busy-overlay {
  position: fixed;
  inset: 0;
  z-index: 5000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  transition: opacity 0.35s ease;
}

.abp-busy-overlay.is-hidden {
  opacity: 0;
  pointer-events: none;
}

.abp-busy {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.abp-busy__sail {
  overflow: visible;
  animation: abp-busy-rock 1.6s ease-in-out infinite;
}

.abp-busy__hull {
  fill: #0d2857;
}

.abp-busy__mast {
  fill: none;
  stroke: #0d2857;
  stroke-width: 2.2;
  stroke-linecap: round;
}

.abp-busy__canvas {
  fill: #3554d1;
  transform-origin: 33px 34px;
  animation: abp-busy-sail 1.6s ease-in-out infinite;
}

.abp-busy__wave {
  fill: none;
  stroke: #9aa7c7;
  stroke-width: 1.6;
  stroke-linecap: round;
}

.abp-busy__wave--a {
  animation: abp-busy-wave 1.4s linear infinite;
}

.abp-busy__wave--b {
  animation: abp-busy-wave 1.4s linear infinite reverse;
}

.abp-busy__label {
  font-size: 14px;
  font-weight: 500;
  color: #0d2857;
}

.abp-busy-host {
  position: relative;
}

.abp-busy-local {
  position: absolute;
  inset: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.72);
}

@keyframes abp-busy-rock {
  0%, 100% { transform: rotate(-6deg) translateY(0); }
  50% { transform: rotate(6deg) translateY(3px); }
}

@keyframes abp-busy-sail {
  0%, 100% { transform: skewX(0deg); }
  50% { transform: skewX(-8deg); }
}

@keyframes abp-busy-wave {
  from { transform: translateX(0); }
  to { transform: translateX(8px); }
}
