/* BLACK X ERP — Motion, loader, ripple and tactile feedback */
.blackx-page-loader {
  position: fixed;
  inset: 0;
  z-index: 6000;
  display: grid;
  place-items: center;
  background: rgba(7,16,15,.78);
  backdrop-filter: blur(13px) saturate(145%);
  -webkit-backdrop-filter: blur(13px) saturate(145%);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 180ms ease, visibility 180ms ease;
}
.blackx-page-loader.is-visible { opacity: 1; visibility: visible; pointer-events: auto; }
.blackx-page-loader__panel { position: relative; display: grid; justify-items: center; gap: .45rem; min-width: 230px; padding: 1.4rem 1.6rem; border-radius: 24px; background: rgba(11,36,31,.88); color: var(--bx-text-inverse); border: 1px solid rgba(var(--bx-neon-rgb), .20); box-shadow: var(--bx-shadow-shell), 0 0 18px rgba(var(--bx-neon-rgb), .08); }
.blackx-page-loader__mark { display: grid; place-items: center; width: 60px; height: 60px; border-radius: 20px; background: var(--bx-teal-950); color: var(--bx-text-inverse); border: 1px solid rgba(var(--bx-neon-rgb), .28); font-weight: 900; letter-spacing: .05em; text-shadow: 0 0 6px rgba(var(--bx-neon-rgb), .14); box-shadow: 0 0 12px rgba(var(--bx-neon-rgb), .08); }
.blackx-page-loader__orbit { position: absolute; inset-block-start: 1.15rem; width: 70px; height: 70px; border-radius: 999px; border: 2px solid transparent; border-top-color: var(--bx-highlight-shell); border-right-color: rgba(var(--bx-highlight-shell-rgb), .28); filter: drop-shadow(0 0 4px rgba(var(--bx-neon-rgb), .14)); animation: bx-spin .9s linear infinite; }
.blackx-page-loader strong { color: var(--bx-text-inverse); margin-top: .35rem; }
.blackx-page-loader small { color: var(--bx-text-inverse-muted) !important; }
@keyframes bx-spin { to { transform: rotate(360deg); } }

.blackx-ripple { position: absolute; width: 10px; height: 10px; border-radius: 50%; background: rgba(255,255,255,.30); transform: translate(-50%,-50%) scale(0); animation: bx-ripple 550ms ease-out forwards; pointer-events: none; }
@keyframes bx-ripple { to { transform: translate(-50%,-50%) scale(18); opacity: 0; } }
.blackx-submit-spinner { width: 15px; height: 15px; border-radius: 50%; border: 2px solid currentColor; border-inline-end-color: transparent; animation: bx-spin .65s linear infinite; }
.blackx-motion-ready [data-blackx-animate] { will-change: transform, opacity; }

@media (prefers-reduced-motion: reduce) {
  .blackx-page-loader__orbit, .blackx-submit-spinner, .blackx-ripple { animation: none !important; }
}
