/* Aura FX — shared wow-factor animation layer */
/* page fade is driven by aura-fx.js (inline styles) so content is never hidden without JS */
.fx-hidden { opacity: 0; transform: translateY(36px) scale(0.98); }
.fx-in { opacity: 1 !important; transform: none !important; transition: opacity 0.9s cubic-bezier(0.2, 0.8, 0.2, 1), transform 0.9s cubic-bezier(0.2, 0.8, 0.2, 1); }
.fx-tilt { transform-style: preserve-3d; will-change: transform; transition: transform 0.35s ease, box-shadow 0.35s ease; }
#fx-glow { position: fixed; width: 480px; height: 480px; border-radius: 50%; pointer-events: none; z-index: 4; mix-blend-mode: multiply; opacity: 0; filter: blur(60px); background: radial-gradient(circle, rgba(48,213,200,0.28), rgba(255,0,127,0.12) 60%, transparent 70%); transform: translate(-50%, -50%); transition: opacity 0.4s; }
@keyframes fxFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }
.fx-float { animation: fxFloat 7s ease-in-out infinite; }
@keyframes fxBlob { 0%, 100% { transform: translate(0, 0) scale(1); } 33% { transform: translate(30px, -24px) scale(1.08); } 66% { transform: translate(-24px, 18px) scale(0.94); } }
.fx-blob { animation: fxBlob 14s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) {
  body, .fx-float, .fx-blob { animation: none; }
  .fx-hidden { opacity: 1; transform: none; }
  #fx-glow { display: none; }
}
