/**
 * WebLab PWA Suite - Pull to Refresh Styles
 *
 * @package WebLabPWASuite
 */

/* ============================================
   INDICATOR PRINCIPAL
   ============================================ */
#afpwa-ptr-indicator {
    position: fixed;
    top: -80px;
    left: 0;
    right: 0;
    height: 80px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    z-index: 99998;
    pointer-events: none;
    opacity: 0;
    transform: translateY(0);
    transition: opacity 0.2s ease, transform 0.15s ease-out;
    color: #2271b1;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    will-change: transform, opacity;
}

#afpwa-ptr-indicator.afpwa-ptr-visible {
    opacity: 1;
}

#afpwa-ptr-indicator.afpwa-ptr-refreshing {
    transition: transform 0.3s ease-out, opacity 0.2s ease;
}

/* ============================================
   SPINNER
   ============================================ */
.afpwa-ptr-spinner {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #2271b1;
    transition: transform 0.15s linear;
}

.afpwa-ptr-spinner svg {
    width: 100%;
    height: 100%;
}

/* Când pragul este atins, spinner-ul se rotește continuu */
#afpwa-ptr-indicator.afpwa-ptr-ready .afpwa-ptr-spinner {
    transform: rotate(180deg);
}

/* În timpul refresh-ului, animație de rotire continuă */
#afpwa-ptr-indicator.afpwa-ptr-refreshing .afpwa-ptr-spinner {
    animation: afpwa-ptr-spin 0.8s linear infinite;
}

@keyframes afpwa-ptr-spin {
    to { transform: rotate(360deg); }
}

/* ============================================
   LABEL
   ============================================ */
.afpwa-ptr-label {
    font-size: 12px;
    font-weight: 500;
    color: #2271b1;
    text-align: center;
    padding: 0 16px;
    line-height: 1.3;
    user-select: none;
    -webkit-user-select: none;
}

#afpwa-ptr-indicator.afpwa-ptr-ready .afpwa-ptr-label {
    color: #00a32a;
    font-weight: 600;
}

#afpwa-ptr-indicator.afpwa-ptr-refreshing .afpwa-ptr-label {
    color: #2271b1;
}

/* ============================================
   DARK MODE
   ============================================ */
@media (prefers-color-scheme: dark) {
    #afpwa-ptr-indicator {
        color: #72aee6;
    }

    .afpwa-ptr-spinner {
        color: #72aee6;
    }

    .afpwa-ptr-label {
        color: #72aee6;
    }

    #afpwa-ptr-indicator.afpwa-ptr-ready .afpwa-ptr-label {
        color: #4ab866;
    }
}

/* ============================================
   REDUCED MOTION
   ============================================ */
@media (prefers-reduced-motion: reduce) {
    #afpwa-ptr-indicator,
    .afpwa-ptr-spinner {
        transition: none;
    }

    #afpwa-ptr-indicator.afpwa-ptr-refreshing .afpwa-ptr-spinner {
        animation-duration: 1.5s;
    }
}

/* ============================================
   ASCUNDE PE DISPOZITIVE FĂRĂ TOUCH
   ============================================ */
@media (hover: hover) and (pointer: fine) {
    #afpwa-ptr-indicator {
        display: none;
    }
}
