/* Floating glowing shapes */
.floating-shapes { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 0; }
.floating-shapes .shape { position: absolute; border-radius: 50%; filter: blur(18px); opacity: 0.25; animation: floatY 12s ease-in-out infinite; }
.floating-shapes .shape.purple { background: #800080; box-shadow: 0 0 40px rgba(128,0,128,0.6); }
.floating-shapes .shape.yellow { background: #FFB14E; box-shadow: 0 0 40px rgba(255,177,78,0.6); }
@keyframes floatY { 0%,100% { transform: translateY(0);} 50% { transform: translateY(-24px);} }

/* Ripple effect */
.btn-ripple { position: relative; overflow: hidden; }
.btn-ripple::after { content: ""; position: absolute; left: 50%; top: 50%; width: 0; height: 0; background: rgba(255,255,255,0.35); transform: translate(-50%,-50%); border-radius: 50%; opacity: 0; }
.btn-ripple:active::after { transition: width 0.5s ease, height 0.5s ease, opacity 0.6s ease; width: 240px; height: 240px; opacity: 1; } 