:root{
  --ovu-loader-coral:#fa7c82;
  --ovu-loader-coral-light:#ffb1b6;
  --ovu-loader-plum:#4b2636;
  --ovu-loader-muted:#74636a;
  --ovu-loader-line:#f0dfe3;
}

.ovu-loader-overlay{
  position:fixed;
  inset:0;
  z-index:2147483000;

  display:flex;
  align-items:center;
  justify-content:center;

  background:rgba(255,247,248,.80);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);

  pointer-events:auto;

  opacity:0;
  visibility:hidden;
  transition:opacity .16s ease,visibility .16s ease;
}

.ovu-loader-overlay.is-visible{
  opacity:1;
  visibility:visible;
}

.ovu-loader-box{
  width:min(300px,calc(100vw - 48px));
  padding:28px 28px 26px;
  border:1px solid rgba(240,223,227,.94);
  border-radius:24px;
  background:rgba(255,255,255,.97);
  box-shadow:0 24px 70px rgba(75,38,54,.15);

  display:flex;
  flex-direction:column;
  align-items:center;
  gap:22px;
}

.ovu-loader-heart{
  position:relative;
  width:46px;
  height:41px;
  animation:ovu-loader-heartbeat 1.35s ease-in-out infinite;
  filter:drop-shadow(0 7px 12px rgba(250,124,130,.18));
}

.ovu-loader-heart::before,
.ovu-loader-heart::after{
  content:"";
  position:absolute;
  width:27px;
  height:39px;
  border-radius:27px 27px 0 0;
  background:linear-gradient(
    145deg,
    var(--ovu-loader-coral-light),
    var(--ovu-loader-coral)
  );
  transform-origin:0 100%;
}

.ovu-loader-heart::before{
  left:23px;
  transform:rotate(-45deg);
}

.ovu-loader-heart::after{
  left:-3px;
  transform:rotate(45deg);
  transform-origin:100% 100%;
}

.ovu-loader-progress{
  position:relative;
  width:100%;
  height:8px;
  overflow:hidden;
  border-radius:999px;
  background:#f7e6e9;
  box-shadow:inset 0 1px 2px rgba(75,38,54,.04);
}

.ovu-loader-progress-bar{
  position:absolute;
  inset:0 auto 0 0;
  width:0%;
  border-radius:inherit;
  background:linear-gradient(
    90deg,
    var(--ovu-loader-coral-light),
    var(--ovu-loader-coral)
  );
  box-shadow:0 0 14px rgba(250,124,130,.28);
  animation:ovu-loader-progress-fill 2.4s cubic-bezier(.35,.05,.25,1) infinite;
}

.ovu-loader-progress-shine{
  position:absolute;
  top:0;
  bottom:0;
  width:44px;
  left:-50px;
  background:linear-gradient(
    90deg,
    rgba(255,255,255,0),
    rgba(255,255,255,.68),
    rgba(255,255,255,0)
  );
  transform:skewX(-18deg);
  animation:ovu-loader-shine 2.4s linear infinite;
  pointer-events:none;
}

.ovu-loader-text{
  margin:-4px 0 0;
  max-width:240px;
  color:var(--ovu-loader-muted);
  font:600 14px/1.5 Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  text-align:center;
}

.ovu-loader-text:empty{
  display:none;
}

.ovu-loader-sr-only{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}

@keyframes ovu-loader-heartbeat{
  0%,100%{transform:scale(.95)}
  45%{transform:scale(1.07)}
}

@keyframes ovu-loader-progress-fill{
  0%{width:0%}
  78%{width:100%}
  92%{width:100%;opacity:1}
  100%{width:0%;opacity:.35}
}

@keyframes ovu-loader-shine{
  0%{left:-50px;opacity:0}
  12%{opacity:.75}
  75%{left:calc(100% + 12px);opacity:.6}
  100%{left:calc(100% + 12px);opacity:0}
}

@media(prefers-reduced-motion:reduce){
  .ovu-loader-heart{
    animation:none;
  }

  .ovu-loader-progress-bar{
    width:70%;
    animation:none;
  }

  .ovu-loader-progress-shine{
    display:none;
  }
}
