/**
 * AdbnPro Mobile Override Styles
 * Version: 1.7.1
 * 
 * Estilos críticos para corregir tamaño de banners flotantes en móvil
 */

/* ===== OVERRIDE CRÍTICO PARA MÓVILES ===== */
@media screen and (max-width: 768px) {
    
    /* Forzar tamaño apropiado para TODOS los banners flotantes en móvil */
    .adbnpro-floating-banner,
    .adbnpro-floating,
    .adbnpro-rotating-floating-container,
    [class*="adbnpro-position-"],
    [class*="adbnpro-mobile-"] {
        /* Tamaño base más grande */
        width: auto !important;
        min-width: 280px !important;
        max-width: min(95vw, 600px) !important;
        max-height: 60vh !important;
        
        /* Variables CSS para control dinámico */
        width: var(--mobile-width, auto) !important;
        max-width: var(--mobile-max-width, 95vw) !important;
        
        /* Márgenes reducidos en móvil */
        margin: 5px !important;
    }
    
    /* Asegurar que las imágenes dentro se escalen correctamente */
    .adbnpro-floating-banner img,
    .adbnpro-floating img,
    .adbnpro-rotating-floating-container img,
    [class*="adbnpro-position-"] img,
    [class*="adbnpro-mobile-"] img {
        width: 100% !important;
        height: auto !important;
        max-width: 100% !important;
        display: block !important;
        object-fit: contain !important;
    }
    
    /* Contenedor de contenido flotante */
    .adbnpro-floating-content,
    .adbnpro-content {
        width: 100% !important;
        height: auto !important;
    }
    
    /* ===== MODO SOLO MÓVIL - Tamaño maximizado ===== */
    .adbnpro-floating-banner[data-show-desktop="false"][data-show-tablet="false"][data-show-mobile="true"],
    .adbnpro-floating[data-show-desktop="false"][data-show-tablet="false"][data-show-mobile="true"],
    .adbnpro-rotating-floating-container[data-show-desktop="false"][data-show-tablet="false"][data-show-mobile="true"] {
        /* Usar casi todo el ancho disponible */
        width: calc(95vw - 20px) !important;
        min-width: calc(95vw - 20px) !important;
        max-width: calc(95vw - 20px) !important;
        
        /* Altura proporcional */
        height: auto !important;
        max-height: 70vh !important;
        
        /* Centrado mejorado */
        margin: 10px auto !important;
    }
    
    /* Banners procesados por JavaScript */
    .adbnpro-mobile-processed {
        transition: all 0.3s ease !important;
    }
    
    /* ===== POSICIONES MÓVILES MEJORADAS ===== */
    
    /* Centro - Asegurar visibilidad completa */
    .adbnpro-mobile-center,
    .adbnpro-position-center {
        position: fixed !important;
        top: 50% !important;
        left: 50% !important;
        transform: translate(-50%, -50%) !important;
        margin: 0 !important;
    }
    
    /* Posiciones superiores */
    .adbnpro-mobile-top-left {
        position: fixed !important;
        top: 10px !important;
        left: 10px !important;
        right: auto !important;
        bottom: auto !important;
        transform: none !important;
        margin: 0 !important;
    }
    
    .adbnpro-mobile-top-center,
    .adbnpro-mobile-top {
        position: fixed !important;
        top: 10px !important;
        left: 50% !important;
        right: auto !important;
        bottom: auto !important;
        transform: translateX(-50%) !important;
        margin: 0 !important;
    }
    
    .adbnpro-mobile-top-right {
        position: fixed !important;
        top: 10px !important;
        right: 10px !important;
        left: auto !important;
        bottom: auto !important;
        transform: none !important;
        margin: 0 !important;
    }
    
    /* Posiciones centrales laterales */
    .adbnpro-mobile-middle-left {
        position: fixed !important;
        top: 50% !important;
        left: 10px !important;
        right: auto !important;
        bottom: auto !important;
        transform: translateY(-50%) !important;
        margin: 0 !important;
    }
    
    .adbnpro-mobile-middle-right {
        position: fixed !important;
        top: 50% !important;
        right: 10px !important;
        left: auto !important;
        bottom: auto !important;
        transform: translateY(-50%) !important;
        margin: 0 !important;
    }
    
    /* Posiciones inferiores */
    .adbnpro-mobile-bottom-left {
        position: fixed !important;
        bottom: 10px !important;
        left: 10px !important;
        right: auto !important;
        top: auto !important;
        transform: none !important;
        margin: 0 !important;
    }
    
    .adbnpro-mobile-bottom-center,
    .adbnpro-mobile-bottom {
        position: fixed !important;
        bottom: 10px !important;
        left: 50% !important;
        right: auto !important;
        top: auto !important;
        transform: translateX(-50%) !important;
        margin: 0 !important;
    }
    
    .adbnpro-mobile-bottom-right {
        position: fixed !important;
        bottom: 10px !important;
        right: 10px !important;
        left: auto !important;
        top: auto !important;
        transform: none !important;
        margin: 0 !important;
    }
    
    /* ===== POSICIONES ESPECIALES ===== */
    
    /* Sticky Superior */
    .adbnpro-mobile-top-sticky {
        position: fixed !important;
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        bottom: auto !important;
        width: 100% !important;
        max-width: 100% !important;
        transform: none !important;
        margin: 0 !important;
        border-radius: 0 0 8px 8px !important;
        z-index: 99999 !important;
    }
    
    /* Sticky Inferior */
    .adbnpro-mobile-bottom-sticky {
        position: fixed !important;
        bottom: 0 !important;
        left: 0 !important;
        right: 0 !important;
        top: auto !important;
        width: 100% !important;
        max-width: 100% !important;
        transform: none !important;
        margin: 0 !important;
        border-radius: 8px 8px 0 0 !important;
        z-index: 99999 !important;
    }
    
    /* Ancho completo superior */
    .adbnpro-mobile-top-fullwidth {
        position: fixed !important;
        top: 10px !important;
        left: 10px !important;
        right: 10px !important;
        bottom: auto !important;
        width: calc(100% - 20px) !important;
        max-width: calc(100% - 20px) !important;
        transform: none !important;
        margin: 0 !important;
    }
    
    /* Ancho completo inferior */
    .adbnpro-mobile-bottom-fullwidth {
        position: fixed !important;
        bottom: 10px !important;
        left: 10px !important;
        right: 10px !important;
        top: auto !important;
        width: calc(100% - 20px) !important;
        max-width: calc(100% - 20px) !important;
        transform: none !important;
        margin: 0 !important;
    }
    
    /* ===== FIXES ESPECÍFICOS ===== */
    
    /* Fix para banners con dimensiones inline */
    .adbnpro-floating-banner[style*="width"],
    .adbnpro-floating[style*="width"] {
        width: auto !important;
        min-width: 280px !important;
        max-width: 95vw !important;
    }
    
    /* Fix para contenedores rotativos */
    .adbnpro-rotating-floating-container .adbnpro-rotating-item {
        width: 100% !important;
        height: auto !important;
    }
    
    /* Asegurar z-index alto en móvil */
    .adbnpro-floating-banner,
    .adbnpro-floating,
    [class*="adbnpro-mobile-"] {
        z-index: 99999 !important;
    }
    
    /* Botón de cierre más grande en móvil */
    .adbnpro-close {
        width: 44px !important;
        height: 44px !important;
        font-size: 24px !important;
        top: 5px !important;
        right: 5px !important;
    }
}

/* ===== ORIENTACIÓN LANDSCAPE EN MÓVIL ===== */
@media screen and (max-width: 768px) and (orientation: landscape) {
    .adbnpro-floating-banner,
    .adbnpro-floating,
    [class*="adbnpro-mobile-"] {
        max-height: 80vh !important;
        max-width: 60vw !important;
    }
    
    /* Modo solo móvil en landscape */
    .adbnpro-floating-banner[data-show-desktop="false"][data-show-tablet="false"][data-show-mobile="true"] {
        max-width: 70vw !important;
        max-height: 85vh !important;
    }
}

/* ===== DISPOSITIVOS PEQUEÑOS (< 375px) ===== */
@media screen and (max-width: 374px) {
    .adbnpro-floating-banner,
    .adbnpro-floating,
    [class*="adbnpro-mobile-"] {
        min-width: calc(100vw - 20px) !important;
        max-width: calc(100vw - 20px) !important;
        margin: 10px !important;
    }
}

/* ===== DEBUG MODE ===== */
.adbnpro-debug-mode .adbnpro-floating-banner::after {
    content: attr(data-show-desktop) " | " attr(data-show-tablet) " | " attr(data-show-mobile);
    position: absolute;
    top: 0;
    left: 0;
    background: red;
    color: white;
    padding: 2px 5px;
    font-size: 10px;
    z-index: 999999;
}

/* v1.20.0: data-fit es autoritativo en móvil (gana al contain forzado para flotantes,
   por ir al final del archivo que se carga el último). data-fit-mobile permite override por dispositivo. */
@media (max-width: 768px) {
    img[data-fit="cover"], img[data-fit-mobile="cover"] {
        object-fit: cover !important;
        object-position: var(--focal, 50% 50%) !important;
    }
    img[data-fit="fill"], img[data-fit-mobile="fill"] {
        object-fit: fill !important;
    }
    img[data-fit="contain"], img[data-fit="contain-blur"], img[data-fit="auto-ar"],
    img[data-fit-mobile="contain"], img[data-fit-mobile="contain-blur"], img[data-fit-mobile="auto-ar"] {
        object-fit: contain !important;
    }
}

/* ============================================================================
   v1.22.0: ANTI-RECORTE POR DEFECTO (modo LEGACY) EN MÓVIL Y TABLET
   ----------------------------------------------------------------------------
   Problema: en modo legacy (sin sistema inteligente / sin data-fit) los banners
   FIXED y CAROUSEL con alto fijo reciben object-fit:cover INLINE desde PHP
   (class-adbnpro-shortcodes.php), que recorta la imagen. Los flotantes/rotativos
   ya se fuerzan a contain en móvil (regla de arriba, L31-42), PERO en TABLET
   (769-1024px) NINGUNA regla móvil aplica (todas viven en <=768), así que TODOS
   los tipos heredaban el cover de desktop y se recortaban.

   Solución (solo CSS, cero cambios en el HTML emitido por render_banner_image):
   forzar "ajustar sin recortar" en pantallas pequeñas para imágenes SIN data-fit.
   - :not([data-fit]):not([data-fit-mobile]) => cuando el sistema inteligente está
     ON o hay un ajuste explícito (cover/fill/contain-blur...), esas reglas data-fit
     siguen mandando; aquí NO las pisamos.
   - object-fit:contain !important de hoja VENCE al object-fit:cover INLINE (que no
     lleva !important) por la regla de cascada CSS.
   - height:auto neutraliza el alto fijo que motivaba el recorte.
   - Solo toca object-fit/height/max-width: NO altera display/visibility, así que
     no interfiere con el sistema de visibilidad por dispositivo (data-show-*).
   Desktop (>1024px) queda INTACTO.
   ============================================================================ */

/* CARRUSEL — TODOS los viewports (incl. desktop): nunca recortar la imagen.
   El CSS base del carrusel YA es object-fit:contain; height:auto (frontend.css L530-535).
   El recorte venía EXCLUSIVAMENTE del object-fit:cover + height fijos INLINE que inyecta
   build_carousel_html (class-adbnpro-shortcodes.php ~785-789), y de .adbnpro-carousel img
   (frontend.css ~1284). Además el carrusel NO emite data-fit (no pasa fit_banner), así que el
   "Modo de ajuste" configurado se ignoraba; aquí garantizamos el comportamiento "Adaptar la caja
   a la imagen" en los 3 dispositivos. :not([data-fit]) deja la puerta abierta por si en el futuro
   el carrusel emite data-fit explícito. */
.adbnpro-carousel-image:not([data-fit]):not([data-fit-mobile]),
.adbnpro-carousel-item img:not([data-fit]):not([data-fit-mobile]) {
    object-fit: contain !important;
    height: auto !important;
    max-width: 100% !important;
}

/* FIXED en móvil (<=768px): el object-fit:cover inline recortaba; los flotantes ya son contain
   en móvil (regla L31-42). En desktop el fixed conserva su cover (comportamiento de ad-slot) y,
   si se desea sin recorte, honra el ajuste explícito / smart_fit (build_banner_html SÍ pasa
   fit_banner). */
@media screen and (max-width: 768px) {
    .adbnpro-image:not([data-fit]):not([data-fit-mobile]) {
        object-fit: contain !important;
        height: auto !important;
        max-width: 100% !important;
    }
}

/* TABLET (769-1024px): punto ciego histórico — heredaba el cover de desktop para fixed y
   flotantes/rotativos (las reglas móviles solo viven en <=768). Lo alineamos al "sin recorte". */
@media screen and (min-width: 769px) and (max-width: 1024px) {
    .adbnpro-image:not([data-fit]):not([data-fit-mobile]),
    .adbnpro-floating-image:not([data-fit]):not([data-fit-mobile]),
    .adbnpro-floating-banner img:not([data-fit]):not([data-fit-mobile]),
    .adbnpro-floating img:not([data-fit]):not([data-fit-mobile]),
    .adbnpro-rotating-floating-container img:not([data-fit]):not([data-fit-mobile]) {
        object-fit: contain !important;
        height: auto !important;
        max-width: 100% !important;
    }
}

/* ============================================================================
   v1.23.1: RECORTE POR EL CONTENEDOR EN MÓVIL (causa raíz real del recorte del carrusel)
   ----------------------------------------------------------------------------
   En <=768px, frontend.css aplica `.adbnpro-banner[style*="width"] { width:100% !important }`
   (hace el banner responsive en ANCHO). Pero NO relaja el ALTO: un banner con alto fijo (p.ej.
   300px) queda con caja APAISADA (ancho 100% + alto 300) y, como el contenedor tiene
   `overflow:hidden`, RECORTA la imagen "contain" (que es más alta). El fix v1.22.0 corrigió el
   object-fit de la <img>, pero el recorte venía del CONTENEDOR. Aquí adaptamos el ALTO del
   contenedor a la imagen en móvil -> la caja crece con la imagen y no recorta.
   ============================================================================ */
@media screen and (max-width: 768px) {
    /* Carrusel: siempre adaptable (su <img> nunca lleva data-fit). */
    .adbnpro-carousel-container,
    .adbnpro-carousel-inner,
    .adbnpro-carousel-item {
        height: auto !important;
    }
}
/* FIXED legacy (sin ajuste explícito): adaptar el alto del contenedor solo si la <img> NO lleva
   data-fit (con cover/contain-blur explícito el usuario SÍ quiere caja fija). Aislado en @supports
   para que, si el navegador no soporta :has(), esta regla se ignore sin afectar a la del carrusel. */
@supports selector(:has(*)) {
    @media screen and (max-width: 768px) {
        .adbnpro-banner.adbnpro-fixed:not(:has(img[data-fit])):not(:has(img[data-fit-mobile])) {
            height: auto !important;
        }
    }
}