/* Page Transition */
.page-transition {
    position: fixed; top: 0; left: 0; width: 100%; height: 100%;
    background: black; z-index: 9999; pointer-events: none;
    opacity: 0; transition: opacity 0.4s ease;
}
.page-transition.active { opacity: 1; pointer-events: all; }

/* Hero Orbs */
.bg-orbs { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; overflow: hidden; pointer-events: none; }
.orb { position: absolute; border-radius: 50%; filter: blur(80px); opacity: 0.4; animation: float 10s infinite ease-in-out; }
.orb-1 { width: 400px; height: 400px; background: var(--primary); top: -100px; left: -100px; }
.orb-2 { width: 300px; height: 300px; background: var(--secondary); bottom: -50px; right: -50px; animation-delay: -3s; }
.orb-3 { width: 350px; height: 350px; background: var(--accent); top: 50%; left: 50%; transform: translate(-50%, -50%); animation-delay: -6s; }

@keyframes float {
    0%, 100% { transform: translate(0, 0); }
    33% { transform: translate(30px, -50px); }
    66% { transform: translate(-20px, 20px); }
}

/* Shimmer Download Button */
.btn-shimmer::before {
    content: ''; position: absolute; top: 0; left: -100%; width: 50%; height: 100%;
    background: linear-gradient(to right, transparent, rgba(255,255,255,0.3), transparent);
    transform: skewX(-20deg); transition: 0s;
}
.btn-shimmer:hover::before { animation: shimmer 0.8s; }
@keyframes shimmer { 100% { left: 200%; } }

/* Badge Pulse */
.badge-pulse { animation: pulsePulse 2s infinite; }
@keyframes pulsePulse {
    0% { box-shadow: 0 0 0 0 rgba(0, 122, 255, 0.4); }
    70% { box-shadow: 0 0 0 10px rgba(0, 122, 255, 0); }
    100% { box-shadow: 0 0 0 0 rgba(0, 122, 255, 0); }
}
.badge-apk.badge-pulse { animation: pulsePulseApk 2s infinite; }
@keyframes pulsePulseApk {
    0% { box-shadow: 0 0 0 0 rgba(61, 220, 132, 0.4); }
    70% { box-shadow: 0 0 0 10px rgba(61, 220, 132, 0); }
    100% { box-shadow: 0 0 0 0 rgba(61, 220, 132, 0); }
}

/* Checkmark Bounce */
.checkmark { font-size: 1.2rem; display: none; margin-left:10px;}
@keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-10px); } 60% { transform: translateY(-5px); } }

/* Scroll reveal class logic handled by JS */
.reveal { opacity: 0; transform: translateY(40px); transition: all 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); }
.reveal.active { opacity: 1; transform: translateY(0); }
