/* ============================================================
   EntranceEffect — one-time premium entrance overlay
   Isolated: only affects #entrance-fx and its children.
   Sits ABOVE the site, pointer-events:none, self-removes.
   ============================================================ */
#entrance-fx{
  position:fixed;inset:0;z-index:2147483000;pointer-events:none;overflow:hidden;
  contain:strict;opacity:1;transition:opacity .6s ease;
}
#entrance-fx.efx-out{opacity:0}

/* soft ambient lighting — subtle, keeps the site readable */
#entrance-fx .efx-glow{
  position:absolute;inset:0;opacity:0;
  background:
    radial-gradient(58% 46% at 50% 42%,rgba(232,40,66,.16),transparent 72%),
    radial-gradient(40% 30% at 78% 20%,rgba(180,20,44,.10),transparent 70%);
  animation:efx-ambient 3.1s ease-in-out forwards;
}
@keyframes efx-ambient{0%{opacity:0}20%{opacity:1}70%{opacity:1}100%{opacity:0}}

/* a particle = outer (drift+rotate+fade) wrapping inner (scale pulse) */
#entrance-fx .efx-p{
  position:absolute;left:0;top:0;will-change:transform,opacity;
  transform:translate3d(var(--x0),var(--y0),0) rotate(var(--r0));
  opacity:0;animation:efx-drift var(--dur) cubic-bezier(.28,.55,.32,1) var(--delay) forwards;
}
@keyframes efx-drift{
  0%  {transform:translate3d(var(--x0),var(--y0),0) rotate(var(--r0));opacity:0}
  14% {opacity:var(--op)}
  85% {opacity:var(--op)}
  100%{transform:translate3d(var(--x1),var(--y1),0) rotate(var(--r1));opacity:0}
}
#entrance-fx .efx-inner{
  display:block;transform:scale(var(--s));
  animation:efx-pulse var(--dur) ease-in-out var(--delay) forwards;
}
@keyframes efx-pulse{
  0%{transform:scale(var(--s))}50%{transform:scale(calc(var(--s) * 1.14))}100%{transform:scale(var(--s))}
}

/* coins */
#entrance-fx .efx-coin{filter:drop-shadow(0 0 7px rgba(232,40,66,.4))}
#entrance-fx .efx-coin svg{display:block}
#entrance-fx .efx-blur{filter:drop-shadow(0 0 7px rgba(232,40,66,.4)) blur(1.1px)}

/* the main focal coin — larger, faster diagonal sweep w/ motion blur */
#entrance-fx .efx-main{
  position:absolute;left:0;top:0;will-change:transform,opacity;
  transform:translate3d(var(--x0),var(--y0),0) rotate(var(--r0)) scale(var(--s));
  opacity:0;
  filter:drop-shadow(0 0 22px rgba(232,40,66,.55)) blur(1.6px);
  animation:efx-main-move var(--dur) cubic-bezier(.22,.6,.24,1) var(--delay) forwards;
}
@keyframes efx-main-move{
  0%  {transform:translate3d(var(--x0),var(--y0),0) rotate(var(--r0)) scale(calc(var(--s) * .7));opacity:0}
  18% {opacity:1}
  50% {filter:drop-shadow(0 0 26px rgba(244,60,84,.6)) blur(2.4px)}
  80% {opacity:1;filter:drop-shadow(0 0 22px rgba(232,40,66,.5)) blur(.6px)}
  100%{transform:translate3d(var(--x1),var(--y1),0) rotate(var(--r1)) scale(var(--s));opacity:0}
}

/* sparkles */
#entrance-fx .efx-spark{filter:drop-shadow(0 0 5px rgba(255,120,140,.7))}
/* glowing dust */
#entrance-fx .efx-dust{
  border-radius:50%;
  background:radial-gradient(circle at 50% 50%,rgba(255,190,200,.55),rgba(232,40,66,.12) 45%,transparent 70%);
  filter:blur(1.5px);
}
/* text particles: RAP / serial / price */
#entrance-fx .efx-text{
  font-family:ui-monospace,"Cascadia Code",Consolas,monospace;font-weight:700;
  letter-spacing:.04em;white-space:nowrap;color:rgba(250,232,234,.85);
  text-shadow:0 0 10px rgba(232,40,66,.5);
}
#entrance-fx .efx-tag{
  font-family:ui-monospace,"Cascadia Code",Consolas,monospace;font-weight:700;font-size:12px;
  padding:3px 9px;border-radius:7px;white-space:nowrap;color:#ffeaec;
  background:rgba(40,14,18,.55);border:1px solid rgba(232,60,84,.4);
  box-shadow:0 0 14px rgba(232,40,66,.4);backdrop-filter:blur(3px);
}
/* limited-accessory silhouettes */
#entrance-fx .efx-sil{filter:drop-shadow(0 0 8px rgba(232,40,66,.45))}
#entrance-fx .efx-sil svg{display:block}

/* reduced motion — a single soft, short fade of ambient light only */
#entrance-fx.efx-reduced .efx-glow{animation:efx-reduced-fade .7s ease forwards}
@keyframes efx-reduced-fade{0%{opacity:0}40%{opacity:1}100%{opacity:0}}
