/* OBS Pharma page loader — uses design tokens */
.obs-loader{
  position:fixed;
  inset:0;
  z-index:10000;
  display:grid;
  place-items:center;
  background:var(--navy, #0E2F4D);
  color:var(--white, #fff);
  transition:opacity .38s ease, visibility .38s ease;
}
.obs-loader.is-hiding{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}
.obs-loader[hidden]{display:none!important}

.obs-loader-inner{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:22px;
  text-align:center;
  padding:24px;
}

.obs-loader-orb{
  position:relative;
  width:96px;
  height:96px;
  display:grid;
  place-items:center;
}

.obs-loader-ring{
  position:absolute;
  inset:0;
  border-radius:50%;
  border:3px solid transparent;
  border-top-color:var(--cyan, #29A9E0);
  border-left-color:rgba(41,169,224,.35);
  animation:obs-spin 1s linear infinite;
}

.obs-loader-ring-2{
  inset:10px;
  border-top-color:rgba(255,255,255,.55);
  border-left-color:transparent;
  animation-duration:1.6s;
  animation-direction:reverse;
}

.obs-loader-core{
  width:58px;
  height:58px;
  border-radius:14px;
  background:var(--white, #fff);
  display:grid;
  place-items:center;
  box-shadow:0 8px 28px rgba(14,47,77,.28);
  animation:obs-pulse 1.4s ease-in-out infinite;
}

.obs-loader-core img{
  width:44px;
  height:auto;
  object-fit:contain;
  display:block;
}

.obs-loader-word{
  font-family:"Segoe UI",system-ui,-apple-system,sans-serif;
  font-size:18px;
  font-weight:700;
  letter-spacing:.04em;
  color:var(--white, #fff);
}

.obs-loader-sub{
  margin:0;
  font-size:12px;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#8FB6D6;
}

.obs-loader-bar{
  width:120px;
  height:3px;
  border-radius:999px;
  background:rgba(255,255,255,.14);
  overflow:hidden;
}
.obs-loader-bar > i{
  display:block;
  height:100%;
  width:40%;
  border-radius:999px;
  background:var(--cyan, #29A9E0);
  animation:obs-slide 1.1s ease-in-out infinite;
}

@keyframes obs-spin{
  to{transform:rotate(360deg)}
}
@keyframes obs-pulse{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.04)}
}
@keyframes obs-slide{
  0%{transform:translateX(-120%)}
  100%{transform:translateX(320%)}
}

@media (prefers-reduced-motion:reduce){
  .obs-loader-ring,
  .obs-loader-ring-2,
  .obs-loader-core,
  .obs-loader-bar > i{
    animation:none!important;
  }
  .obs-loader-ring{
    border-top-color:var(--cyan, #29A9E0);
    border-right-color:var(--cyan, #29A9E0);
  }
}
