/**
 * Partners Animations - Nordersun v6.2
 * Scroll-reveal, counters, phone mockup, floating CTA
 */

/* ==========================================
   SCROLL REVEAL ANIMATIONS
   ========================================== */

.reveal-up {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.7s ease, transform 0.7s ease;
    transition-delay: var(--delay, 0s);
}
.reveal-up.visible {
    opacity: 1;
    transform: translateY(0);
}

.reveal-left {
    opacity: 0;
    transform: translateX(-40px);
    transition: opacity 0.7s ease, transform 0.7s ease;
    transition-delay: var(--delay, 0s);
}
.reveal-left.visible {
    opacity: 1;
    transform: translateX(0);
}

.reveal-right {
    opacity: 0;
    transform: translateX(40px);
    transition: opacity 0.7s ease, transform 0.7s ease;
    transition-delay: var(--delay, 0s);
}
.reveal-right.visible {
    opacity: 1;
    transform: translateX(0);
}

.reveal-scale {
    opacity: 0;
    transform: scale(0.9);
    transition: opacity 0.7s ease, transform 0.7s ease;
    transition-delay: var(--delay, 0s);
}
.reveal-scale.visible {
    opacity: 1;
    transform: scale(1);
}

/* ==========================================
   PHONE MOCKUP ANIMATIONS
   ========================================== */

@keyframes phoneFloat {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-12px); }
}

@keyframes chipPulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(255, 194, 32, 0.4); }
    50% { box-shadow: 0 0 20px 8px rgba(255, 194, 32, 0); }
}

@keyframes planSlideIn {
    from { opacity: 0; transform: translateX(-20px); }
    to { opacity: 1; transform: translateX(0); }
}

@keyframes statusBlink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

/* ==========================================
   FLOATING CTA
   ========================================== */

@keyframes floatPulse {
    0%, 100% { box-shadow: 0 4px 20px rgba(255, 194, 32, 0.3); }
    50% { box-shadow: 0 4px 30px rgba(255, 194, 32, 0.5); }
}

.floating-cta {
    animation: floatPulse 3s ease infinite;
}

/* ==========================================
   STEP CONNECTOR
   ========================================== */

@keyframes lineGrow {
    from { transform: scaleY(0); }
    to { transform: scaleY(1); }
}

.step-connector.visible {
    animation: lineGrow 0.6s ease forwards;
}

/* ==========================================
   DASHBOARD MOCKUP BARS
   ========================================== */

@keyframes barGrow {
    from { height: 0; }
    to { height: var(--bar-h); }
}

.mockup-bar.visible {
    animation: barGrow 0.8s ease forwards;
    animation-delay: var(--delay, 0s);
}

/* ==========================================
   HERO GRADIENT BACKGROUND
   ========================================== */

@keyframes gradientShift {
    0% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}

/* ==========================================
   ESIM CHIP CIRCUIT LINES
   ========================================== */

@keyframes circuitDraw {
    from { stroke-dashoffset: 100; }
    to { stroke-dashoffset: 0; }
}

/* ==========================================
   STAT COUNTER ENTRANCE
   ========================================== */

@keyframes statEntrance {
    from { opacity: 0; transform: translateY(20px) scale(0.9); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

.stat-item.counting .stat-number {
    animation: statEntrance 0.5s ease;
}

/* ==========================================
   GOLD SHIMMER (for CTA buttons)
   ========================================== */

@keyframes goldShimmer {
    0% { background-position: -200% center; }
    100% { background-position: 200% center; }
}
