/* ============================================
   ANIMATIONS.CSS v18
   ============================================ */

@keyframes progressFill { 0% { width: 0%; } 100% { width: 100%; } }
@keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.05); opacity: 0.8; } }
@keyframes pulseIcon { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.15); } }

@keyframes float {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    25% { transform: translateY(-15px) rotate(1deg); }
    50% { transform: translateY(-25px) rotate(0deg); }
    75% { transform: translateY(-15px) rotate(-1deg); }
}

@keyframes barFloat {
    0%, 100% { transform: skewX(-20deg) translateY(0); }
    50% { transform: skewX(-20deg) translateY(-24px); }
}

@keyframes goldGlow { 0%, 100% { box-shadow: 0 0 20px rgba(201, 169, 98, 0.4); } 50% { box-shadow: 0 0 40px rgba(201, 169, 98, 0.6); } }
@keyframes slideUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }

@keyframes orbFloat {
    0%, 100% { transform: translate(0, 0) scale(1); }
    33% { transform: translate(30px, -50px) scale(1.1); }
    66% { transform: translate(-20px, 20px) scale(0.9); }
}

@keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
@keyframes gradientPulse { 0%, 100% { opacity: 0.5; } 50% { opacity: 1; } }

@keyframes particleFloat {
    0%, 100% { transform: translateY(0) translateX(0); opacity: 0; }
    10% { opacity: 1; }
    90% { opacity: 1; }
    100% { transform: translateY(-100vh) translateX(50px); opacity: 0; }
}

@keyframes heroZoom { 0% { transform: scale(1.2); } 100% { transform: scale(1.3); } }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes spinAngle { to { --angle: 360deg; } }

/* v18: entrance link drawer (stagger via nth-child) */
@keyframes menuLinkIn {
    from { opacity: 0; transform: translateX(36px); }
    to { opacity: 1; transform: translateX(0); }
}

@keyframes menuFooterIn {
    from { opacity: 0; transform: translateY(22px); }
    to { opacity: 1; transform: translateY(0); }
}

.fade-in-up { animation: slideUp 0.8s ease-out forwards; }

/* Loader */
.loader-container { position: fixed; inset: 0; background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 100%); display: flex; align-items: center; justify-content: center; z-index: 9999; transition: opacity 0.5s ease, visibility 0.5s ease; }
.loader-container.loaded { opacity: 0; visibility: hidden; }
.loader-content { text-align: center; }
.loader-logo { width: 120px; height: 120px; margin: 0 auto 2rem; animation: pulse 2s ease-in-out infinite; }
.loader-logo img { width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 4px 20px rgba(201, 169, 98, 0.3)); }
.loader-progress { width: 300px; max-width: 80%; }
.progress-bar { width: 100%; height: 4px; background: rgba(255, 255, 255, 0.1); border-radius: 2px; overflow: hidden; margin-bottom: 1rem; }
.progress-fill { height: 100%; background: linear-gradient(90deg, #c9a962, #e5d5a5, #c9a962); background-size: 200% 100%; animation: progressFill 2s ease-out, gradientShift 2s ease infinite; border-radius: 2px; }
.loading-text { color: #b8b8b8; font-size: 0.875rem; font-weight: 500; letter-spacing: 0.05em; animation: pulse 2s ease-in-out infinite; }