:root {
  --glass-bg: rgba(15, 23, 42, 0.72);
  --glass-border: rgba(56, 189, 248, 0.18);
  --neon: #22d3ee;
  --neon-soft: rgba(34, 211, 238, 0.35);
}

body {
  background: radial-gradient(1200px 600px at 10% -10%, rgba(56, 189, 248, 0.12), transparent),
    radial-gradient(900px 500px at 90% 0%, rgba(168, 85, 247, 0.12), transparent),
    #020617;
}

.glass {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
  backdrop-filter: blur(14px);
}

.neon-ring {
  box-shadow: 0 0 0 1px var(--neon-soft), 0 0 40px rgba(34, 211, 238, 0.15);
}

@keyframes pulse-soft {
  0% {
    opacity: 0.55;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0.55;
  }
}

.live-dot {
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 999px;
  background: #22c55e;
  animation: pulse-soft 1.8s infinite;
}

/* Receipt import mismatch — full-screen red “siren” backdrop behind modal */
@keyframes ops-siren-backdrop {
  0%,
  100% {
    background-color: rgba(24, 4, 4, 0.94);
    box-shadow: inset 0 0 100px rgba(220, 38, 38, 0.22);
  }
  50% {
    background-color: rgba(69, 10, 10, 0.97);
    box-shadow: inset 0 0 140px rgba(248, 113, 113, 0.38);
  }
}

.ops-receipt-alert-root--siren {
  animation: ops-siren-backdrop 1.05s ease-in-out infinite;
}

/* Live approved TXN toasts — bottom-right stack rising upward */
#txn-toast-stack {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 190;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 0.5rem;
  max-width: min(22rem, calc(100vw - 2rem));
  pointer-events: none;
}

.txn-toast {
  pointer-events: auto;
  border-radius: 0.85rem;
  border: 1px solid rgba(52, 211, 153, 0.45);
  background: linear-gradient(135deg, rgba(6, 78, 59, 0.95), rgba(15, 23, 42, 0.96));
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.45), 0 0 28px rgba(16, 185, 129, 0.2);
  padding: 0.65rem 0.85rem;
  animation: txn-toast-in 0.38s cubic-bezier(0.22, 1, 0.36, 1) forwards;
  transform-origin: bottom center;
}

.txn-toast--exit {
  animation: txn-toast-out 0.32s ease-in forwards;
}

@keyframes txn-toast-in {
  from {
    opacity: 0;
    transform: translateY(1.25rem) scale(0.96);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes txn-toast-out {
  from {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  to {
    opacity: 0;
    transform: translateY(-0.75rem) scale(0.98);
  }
}

/* Background live refresh — no on-screen indicator (Socket.IO + silent main swap) */
body.live-refresh-on main.lux-main-scroll {
  transition: opacity 0.15s ease;
}
