/* =========================================================================
   KP Fase 7 - Lote 25 · Animaciones que no bloquean el procesador
   Se carga DESPUÉS del CSS de Personalizar (mismos selectores, por eso gana).
   Motivo: las animaciones infinitas de sombras/filtros/posición obligaban al
   navegador a recalcular estilos ~60 veces por segundo en el hilo principal
   (PageSpeed: «animaciones no compuestas»; afecta al bloqueo total y al INP).
   - Pulsos de sombra: se reproducen 3 veces al cargar y se detienen.
   - Punto «en vivo» y brillo de la cinta PREMIUM: siguen infinitos, pero solo
     con transform/opacity (los hace la tarjeta gráfica, coste ~0).
   Para volver al comportamiento anterior basta con no cargar este archivo.
   ========================================================================= */

/* 1) Pulsos de sombra: 3 repeticiones */
.register-btn a,
.element-pulso,
.whatsapp-floating-button,
.payment-button,
.ok.rad5,
.glowing-effect,
.upload-button,
.telegram-button-effect,
.boton-registro,
.wrapper-intd .btn-gato,
.btn-gato,
.kag-open24 span,
.custom-alert-emoji {
    animation-iteration-count: 3 !important;
}

/* 2) Cinta PREMIUM: el pulso de brillo, 3 veces */
.contentwrapper .bodybox .girl .premiumlabel,
.contentwrapper .bodybox .girl .thumb.girlpremium .premiumlabel,
.contentwrapper .bodybox .girl .girlpremium .premiumlabel,
.bodybox .girl .premiumlabel,
.bodybox .girl .thumb.girlpremium .premiumlabel,
.bodybox .girl .girlpremium .premiumlabel,
.girl .premiumlabel,
.girl .thumb.girlpremium .premiumlabel,
.girl .girlpremium .premiumlabel {
    animation: premiumRibbonPulse 2.6s ease-in-out 3 !important;
}

/* 3) Cinta PREMIUM: el destello que cruza, mismo recorrido con «translate»
      (antes animaba «left», que recalcula la maquetación en cada fotograma). */
.contentwrapper .bodybox .girl .premiumlabel::after,
.contentwrapper .bodybox .girl .thumb.girlpremium .premiumlabel::after,
.contentwrapper .bodybox .girl .girlpremium .premiumlabel::after,
.bodybox .girl .premiumlabel::after,
.bodybox .girl .thumb.girlpremium .premiumlabel::after,
.bodybox .girl .girlpremium .premiumlabel::after,
.girl .premiumlabel::after,
.girl .thumb.girlpremium .premiumlabel::after,
.girl .girlpremium .premiumlabel::after {
    left: -70% !important;
    animation: kpRibbonShineT 3.2s ease-in-out infinite !important;
}
@keyframes kpRibbonShineT {
    0%   { translate: 0 0; }
    42%  { translate: 444.444% 0; }
    100% { translate: 444.444% 0; }
}

/* 4) Punto «en vivo» del header: parpadeo infinito solo con opacidad/escala;
      el resplandor queda fijo (antes se animaba la sombra y el filtro). */
#site-header.kp-site-header .kp-live-dot {
    animation: kpLiveBlinkT .72s infinite ease-in-out !important;
    filter: brightness(1.2) !important;
    box-shadow: 0 0 8px rgba(15,255,80,.95), 0 0 18px rgba(15,255,80,.55) !important;
}
@keyframes kpLiveBlinkT {
    0%, 100% { opacity: 1; transform: scale(1); }
    48%      { opacity: .24; transform: scale(.66); }
}

/* 5) Barra de carga del buscador rápido (dolceescort.js): con transform. */
.loader span.kp-loader-anim {
    left: 0 !important;
    animation: kpLoaderSlide 2s linear infinite;
}
@keyframes kpLoaderSlide {
    from { transform: translateX(-100%); }
    to   { transform: translateX(100%); }
}

/* 6) No calcular el footer hasta que se acerca al scroll (está al final: no mueve nada visible).
      Lote 26: se quitó de las tarjetas de perfiles porque su altura real varía y PageSpeed
      lo marcaba como salto de diseño (CLS 0,077 móvil / 0,129 PC en «div.thumb.girlpremium»). */
.kp-footer-main {
    content-visibility: auto;
    contain-intrinsic-size: auto 1193px;
}
@media (min-width: 961px) {
    .kp-footer-main { contain-intrinsic-size: auto 666px; }
}
