.page-loader {
  position: fixed; inset: 0; z-index: 9999;
  background: var(--white, #ffffff);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
  transition: opacity 0.5s ease, visibility 0.5s ease;
}
.page-loader.is-hidden { opacity: 0; visibility: hidden; pointer-events: none; }

.loader-mark {
  width: 52px; height: 52px; position: relative; z-index: 2;
  animation: loader-pulse 1.6s ease-in-out infinite;
}
.loader-mark svg { width: 100%; height: 100%; display: block; }

@keyframes loader-pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.1); opacity: 0.82; }
}

.loader-waves {
  position: absolute; left: 0; right: 0; bottom: 0; height: 34%;
  min-height: 120px; overflow: hidden; z-index: 1;
}
.loader-wave {
  position: absolute; bottom: 0; left: 0;
  width: 200%; height: 100%;
}
.loader-wave-back {
  fill: #bae6fd; opacity: 0.65;
  animation: loader-wave-move 7s linear infinite;
}
.loader-wave-front {
  fill: #7dd3fc; opacity: 0.9;
  animation: loader-wave-move 4.5s linear infinite reverse;
}
@keyframes loader-wave-move {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

@media (prefers-reduced-motion: reduce) {
  .page-loader { transition: none; }
  .loader-mark, .loader-wave-back, .loader-wave-front { animation: none; }
}
