html, body { margin:0; padding:0; background:#06131f; }
a { color:#4fd8ff; }
a:hover { color:#ffd23f; }
@keyframes ob-bob { 0%,100% { transform: translateY(0) rotate(-1deg);} 50% { transform: translateY(-14px) rotate(1deg);} }
@keyframes ob-drift { 0%,100% { transform: translate(0,0) scale(1);} 50% { transform: translate(-16px,12px) scale(1.03);} }
@keyframes ob-bubble { 0% { transform: translateY(0) scale(.6); opacity:0;} 15% { opacity:.65;} 100% { transform: translateY(-560px) scale(1.1); opacity:0;} }
@keyframes ob-shaft { 0%,100% { opacity:.20; transform: skewX(-14deg) scaleY(1);} 50% { opacity:.42; transform: skewX(-10deg) scaleY(1.05);} }
@keyframes ob-wave { 0% { transform: translateX(-120%) skewX(-12deg); opacity:0; } 12% { opacity:1; } 70% { opacity:1; } 100% { transform: translateX(130%) skewX(-12deg); opacity:0; } }
@keyframes ob-shake { 0%,100% { transform: translate(0,0);} 20% { transform: translate(-14px,6px) rotate(-3deg);} 40% { transform: translate(12px,-8px) rotate(3deg);} 60% { transform: translate(-9px,-4px) rotate(-2deg);} 80% { transform: translate(7px,5px) rotate(1deg);} }
@keyframes ob-pop { 0% { transform: scale(.7); opacity:0;} 60% { transform: scale(1.06); opacity:1;} 100% { transform: scale(1); opacity:1;} }
@keyframes ob-rise { 0% { transform: translateY(20px); opacity:0;} 100% { transform: translateY(-70px); opacity:0;} 30% { opacity:1; } }
@keyframes ob-glow { 0%,100% { box-shadow: 0 0 40px 6px rgba(160,92,247,.45);} 50% { box-shadow: 0 0 80px 18px rgba(160,92,247,.75);} }
@keyframes ob-spin { to { transform: rotate(360deg);} }
@keyframes ob-wave-r { 0% { transform: translateX(130%) skewX(12deg); opacity:0; } 12% { opacity:1; } 70% { opacity:1; } 100% { transform: translateX(-130%) skewX(12deg); opacity:0; } }
@keyframes ob-hit { 0%,100% { transform: translate(0,0);} 15% { transform: translate(16px,-8px) rotate(3deg);} 35% { transform: translate(-12px,9px) rotate(-3deg);} 55% { transform: translate(10px,4px) rotate(2deg);} 75% { transform: translate(-7px,-5px) rotate(-1deg);} }
@keyframes ob-alarm { 0%,100% { opacity:.15;} 50% { opacity:.45;} }
