/* FAB Animator (addon) */
.sfe-fab{position:fixed;bottom:22px;z-index:99997;display:inline-flex;align-items:center;gap:10px;padding:14px 18px;border-radius:999px;color:#fff;text-decoration:none;font-weight:800;background:linear-gradient(270deg,#9c0b43,#b81e5f,#9c0b43);background-size:600% 600%;animation:sfeGradient 6s ease infinite, fabPulse 2.2s ease-in-out infinite;box-shadow:0 12px 34px rgba(156,11,67,.38);will-change:transform, box-shadow;overflow:hidden;isolation:isolate}
.sfe-fab--right{right:20px}.sfe-fab--left{left:20px}
.sfe-fab::after{content:"";position:absolute;inset:-6px;border-radius:inherit;pointer-events:none;box-shadow:0 0 0 0 rgba(184,30,95,.28);animation:fabricGlow 2.4s ease-in-out infinite}
.sfe-fab .sfe-fab__ripple{position:absolute;inset:auto;border-radius:999px;pointer-events:none;background:#fff;opacity:.25;transform:translate(-50%,-50%) scale(0);width:20px;height:20px}
@media (max-width: 768px){
  .sfe-fab{animation:sfeGradient 6s ease infinite, fabPulse 1.7s ease-in-out infinite, fabBob 3.2s ease-in-out infinite;box-shadow:0 14px 40px rgba(156,11,67,.42)}
}
@media (prefers-reduced-motion: reduce){
  .sfe-fab{animation:sfeGradient 12s linear infinite}
  .sfe-fab::after{animation:none}
}
@keyframes fabPulse{0%{transform:translateZ(0) scale(1)}50%{transform:translateZ(0) scale(1.06)}100%{transform:translateZ(0) scale(1)}}
@keyframes fabBob{0%{transform:translateY(0)}50%{transform:translateY(-3px)}100%{transform:translateY(0)}}
@keyframes fabricGlow{0%{box-shadow:0 0 0 0 rgba(184,30,95,.26)}70%{box-shadow:0 0 0 14px rgba(184,30,95,0)}100%{box-shadow:0 0 0 0 rgba(184,30,95,0)}}
@keyframes sfeGradient{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}