/* ==========================================================================
   IMAGINALIA APP — SISTEMA DE ESPACIADO DINÁMICO
   Compatible con: iPhone 6s (320px) · S23 Ultra (393px+) · iPad
   Para cambiar todos los márgenes a la vez, edita solo las variables de :root
   ========================================================================== */
:root {
    /* --- ALTURA DEL HEADER FIJO ---
       Bajamos de 60 a 55px para que en el iPhone 6s no se vea tan gigante */
    --app-header-height: 55px;

    /* --- PADDING LATERAL GLOBAL ---
       Margin lateral dinámico para tarjetas y secciones */
    --app-side: clamp(12px, 3.5vw, 18px);

    /* --- PADDING INTERNO DE TARJETAS ---
       Este valor controla el espacio entre el borde de la tarjeta y su contenido */
    --app-card-pad: clamp(20px, calc(20px + (100vw - 320px) * 0.05), 28px);

    /* --- PADDING SUPERIOR DE SECCIONES ---
       Apretamos el rango: mín 8px, ideal 3% del alto, máx 35px extra superpuestos. */
    --app-section-top: calc(var(--app-header-height) + clamp(8px, 3vh, 35px));

    /* --- PADDING INFERIOR DE SECCIONES --- */
    --app-section-bottom: clamp(35px, 7vh, 70px);
}

/* Ocultar elementos estándar del theme de WordPress cuando estamos en la vista App */
body.is-app-view header,
body.is-app-view footer,
body.is-app-view .sidebar,
body.is-app-view #wpadminbar,
body.is-app-view .site-header,
body.is-app-view .site-footer,
body.is-app-view .elementor-location-header,
body.is-app-view .elementor-location-footer,
body.is-app-view #moove_gdpr_cookie_info_bar,
body.is-app-view #moove_gdpr_cookie_modal,
body.is-app-view .elementor-element-1c4fc42,
body.is-app-view .elementor-widget-search-form,
body.is-app-view .elementor-widget-breadcrumbs {
    display: none !important;
}

/* Excepción para permitir que carguen los scripts de horarios en el header oculto */
body.is-app-view .elementor-location-header {
    display: block !important;
    visibility: hidden !important;
    height: 0 !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    z-index: -100 !important;
}

/* Prevenir márgenes de la barra de administración */
body.is-app-view {
    margin: 0 !important;
    padding: 0 !important;
    background-color: #f5f5f7 !important;
    /* Fondo gris para toda la App */
}

body.modal-open {
    overflow: hidden !important;
    height: 100vh !important;
}

body.is-app-view .content-area {
    background-color: #f5f5f7 !important;
    min-height: calc(100vh - var(--app-header-height)) !important;
    /* Usamos las variables dinámicas calculadas arriba */
    padding: var(--app-section-top) var(--app-side) var(--app-section-bottom) var(--app-side) !important;
    box-sizing: border-box !important;
}

body.is-app-view.elementor-page-19 .content-area {
    padding: 35px var(--app-side) var(--app-section-bottom) var(--app-side) !important;
}

/* Envolver el contenido principal de la web en una tarjeta como la de la app */
/* Aplicamos SOLO a páginas de texto simple o entradas individuales */
/* EXCLUIMOS páginas complejas de Elementor y secciones específicas que no quedan bien */
body.is-app-view:not(.home):not(.elementor-page):not(.page-id-21):not(.page-id-3) .site-main,
body.is-app-view.single .site-main,
body.is-app-view.single article,
body.is-app-view.page:not(.elementor-page) .site-main,
body.is-app-view.single-post .site-main,
body.is-app-view.single-promocion .site-main,
body.is-app-view.page-id-48 .site-main {
    background: #fff !important;
    border-radius: 16px !important;
    padding: var(--app-card-pad) !important;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04) !important;
    border: 1px solid #f0f0f0 !important;
    margin: 30px auto !important;
    max-width: 600px !important;
    box-sizing: border-box !important;
}

.btn-logout,
.btn-claim-coupon {
    margin: 20px auto !important;
}

/* Fix específico para HORARIOS: Evitar DOBLE CARD */
body.is-app-view.page-id-31 .site-main {
    background: #fff !important;
    padding: var(--app-card-pad) !important;
    border-radius: 16px !important;
    margin-top: 20px !important;
}

body.is-app-view.page-id-31 .entry-content,
body.is-app-view.page-id-31 .elementor-section-wrap {
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
    padding: 0 !important;
}

/* Reset para páginas Elementor (Home, Servicios, etc.): fondo gris sin tarjeta blanca forzada */
body.is-app-view.elementor-page:not(.single) .content-area,
body.is-app-view.elementor-page:not(.single) .imaginalia-app-container {
    background-color: #f5f5f7 !important;
}

body.is-app-view.elementor-page:not(.single) .site-main {
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
    max-width: none !important;
    padding: 0 !important;
}

/* FIX: Desactivar el 'Estirar sección' de Elementor que causa left negativo por JS */
body.is-app-view .elementor-section.elementor-section-stretched {
    left: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
}

/* Estilo para los títulos de entrada (solo donde hay tarjeta) */
body.is-app-view:not(.home):not(.elementor-page) .entry-title,
body.is-app-view:not(.home):not(.elementor-page) .page-title {
    margin-top: 0 !important;
    margin-bottom: 20px !important;
    font-size: 24px !important;
    color: #111 !important;
    text-align: left !important;
}

/* Custom App Header */
#imaginalia-app-custom-header {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: var(--app-header-height);
    background-color: #ffffff;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
    z-index: 1000;
    align-items: center;
    justify-content: space-between;
    padding: 0 var(--app-side);
    box-sizing: border-box;
}

body.is-app-view #imaginalia-app-custom-header {
    display: flex !important;
}

#imaginalia-app-custom-header .app-header-btn {
    background: none;
    border: none;
    font-size: 24px;
    cursor: pointer;
    color: #333;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    text-decoration: none;
}

#imaginalia-app-custom-header .app-header-title {
    font-size: 18px;
    font-weight: 600;
    color: #333;
    flex-grow: 1;
    text-align: center;
    margin: 0;
}



body.is-app-view #app-login-form,
body.is-app-view #app-register-form,
body.is-app-view #app-recover-form {
    background: transparent !important;
    padding: 0 !important;
    box-shadow: none !important;
    border: none !important;
    width: 100% !important;
}

body.is-app-view .app-card h2 {
    margin-top: 0 !important;
    text-align: left !important;
    font-size: 24px !important;
}

body.is-app-view .imaginalia-app-container:not(.account-page) h2 {
    text-align: center !important;
    margin-top: 20px !important;
    margin-bottom: 25px !important;
    font-size: 28px !important;
    width: 100% !important;
}

body.is-app-view form p {
    margin-bottom: 15px !important;
}

body.is-app-view form label {
    font-weight: 600 !important;
    font-size: 14px !important;
    display: block !important;
    margin-bottom: 5px !important;
    color: #444 !important;
}

body.is-app-view form input[type="text"],
body.is-app-view form input[type="email"],
body.is-app-view form input[type="password"],
body.is-app-view form input[type="number"],
body.is-app-view form input[type="tel"],
body.is-app-view form textarea,
body.is-app-view form select {
    width: 100% !important;
    padding: 14px !important;
    border: 1px solid #ddd !important;
    border-radius: 12px !important;
    box-sizing: border-box !important;
    font-size: 16px !important;
    background: #f9f9f9 !important;
    transition: all 0.2s ease !important;
    color: #111 !important;
}

body.is-app-view form input:focus,
body.is-app-view form textarea:focus,
body.is-app-view form select:focus {
    border-color: #000 !important;
    background: #fff !important;
    outline: none !important;
    box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05) !important;
}

/* Pagination Styling (for News/Novedades list) */
body.is-app-view .nav-links,
body.is-app-view .pagination {
    display: flex !important;
    justify-content: center !important;
    gap: 10px !important;
    margin: 20px var(--app-side) !important;
    /* Margen lateral dinámico */
    padding-bottom: 30px !important;
    flex-wrap: wrap !important;
    /* Para que no se rompa en pantallas pequeñas */
}

body.is-app-view .nav-links a,
body.is-app-view .nav-links span,
body.is-app-view .pagination a,
body.is-app-view .pagination span {
    background: #fff !important;
    border: 1px solid #eee !important;
    padding: 8px 15px !important;
    border-radius: 8px !important;
    text-decoration: none !important;
    color: #333 !important;
    font-weight: 600 !important;
    font-size: 14px !important;
}

body.is-app-view .nav-links .current,
body.is-app-view .pagination .current {
    background: #000 !important;
    color: #fff !important;
    border-color: #000 !important;
}

body.is-app-view.page-id-21 .content-area,
body.is-app-view.page-id-21 .imaginalia-app-container,
body.is-app-view.page-id-23 .content-area,
body.is-app-view.page-id-23 .imaginalia-app-container,
body.is-app-view.page-id-48 .content-area,
body.is-app-view.page-id-48 .imaginalia-app-container,
body.is-app-view.page-id-35 .content-area,
body.is-app-view.page-id-35 .imaginalia-app-container {
    padding-top: var(--app-section-top) !important;
}

/* --- CLASES DE UTILIDAD PARA SECCIONES DE LA APP --- */
body.is-app-view .app-section-standard,
body.is-app-view.search-results .content-area,
body.is-app-view.search-results .imaginalia-app-container,
body.is-app-view.page-id-27976 .content-area,
body.is-app-view.page-id-27976 .imaginalia-app-container,
body.is-app-view.single-novedad .content-area,
body.is-app-view.single-novedad .imaginalia-app-container,
body.is-app-view.single-local .content-area,
body.is-app-view.single-local .imaginalia-app-container,
body.is-app-view.post-type-archive-local .content-area,
body.is-app-view.post-type-archive-local .imaginalia-app-container,
body.is-app-view.page-id-46 .content-area,
body.is-app-view.page-id-46 .imaginalia-app-container,
body.is-app-view.page-id-48 .content-area,
body.is-app-view.page-id-48 .imaginalia-app-container,
body.is-app-view.page-id-52 .content-area,
body.is-app-view.page-id-52 .imaginalia-app-container,
body.is-app-view.page-id-2845 .content-area,
body.is-app-view.page-id-2845 .imaginalia-app-container,
body.is-app-view.page-id-2847 .content-area,
body.is-app-view.page-id-2847 .imaginalia-app-container,
body.is-app-view.page-id-28729 .content-area,
body.is-app-view.page-id-28729 .imaginalia-app-container {
    background-color: #f5f5f7 !important;
    padding: var(--app-section-top) var(--app-side) var(--app-section-bottom) var(--app-side) !important;
    box-sizing: border-box !important;
}

/* Opcional: Si hubiera alguna página que REALMENTE necesite padding 0, se añadiría aquí, 
   pero Login/Registro NO lo necesitan porque deben respetar el Header. */

/* Estetica de Buscador en el Menu */
#imaginalia-app-menu input[type="text"] {
    border: 2px solid transparent !important;
    transition: border-color 0.2s !important;
}

#imaginalia-app-menu input[type="text"]:focus {
    border-color: #000 !important;
    outline: none !important;
    background: #fff !important;
}

/* Estilos para el horario clonado en la cabecera del menú */
#app-menu-schedule,
#imaginalia-app-menu .elementor-element-d5df179,
#imaginalia-app-menu .mb-bhi-display {
    padding: 0 !important;
    margin: 0 !important;
    font-size: 13px !important;
    line-height: 1.4 !important;
    white-space: normal !important;
    flex-grow: 1;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
}

/* --- COMPONENTES ESPECÍFICOS DE LA APP --- */

/* Cupones Grid & Cards */
.cupon-grid {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 20px !important;
    margin-top: 20px !important;
}

.cupon-card {
    background: #fff !important;
    border-radius: 20px !important;
    padding: 30px 20px !important;
    border: 1px solid #eee !important;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.06) !important;
    cursor: pointer !important;
    transition: transform 0.2s, box-shadow 0.2s !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    text-align: center !important;
    position: relative !important;
}

.cupon-card:hover {
    transform: translateY(-3px) !important;
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1) !important;
}

.cupon-logo {
    width: 80px !important;
    height: 80px !important;
    object-fit: contain !important;
    border-radius: 12px !important;
    background: #fff !important;
    border: 1px solid #f0f0f0 !important;
    padding: 8px !important;
    margin-bottom: 20px !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04) !important;
}

.cupon-card-body {
    width: 100% !important;
}

.cupon-title {
    font-size: 20px !important;
    font-weight: 800 !important;
    color: #000 !important;
    margin: 0 0 8px !important;
    line-height: 1.2 !important;
}

.cupon-store-name {
    font-size: 14px !important;
    color: #666 !important;
    margin: 0 0 15px !important;
    font-weight: 500 !important;
}

.cupon-badge {
    background: #e7f4e8 !important;
    color: #1e8e3e !important;
    font-size: 12px !important;
    padding: 5px 15px !important;
    border-radius: 25px !important;
    font-weight: 700 !important;
    display: inline-block !important;
}

.cupon-arrow {
    position: absolute !important;
    top: 50% !important;
    right: 20px !important;
    transform: translateY(-50%) !important;
    color: #eee !important;
    font-size: 24px !important;
    pointer-events: none !important;
}

/* Modal de Cupones */
.cupon-modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.7);
    z-index: 5000;
    justify-content: center;
    align-items: center;
    padding: 20px;
    backdrop-filter: blur(5px);
}

/* Forzar que SweetAlert esté por encima de todo (incluyendo el modal de cupones) */
.swal2-container {
    z-index: 999999 !important;
}



.cupon-modal.active {
    display: flex !important;
    animation: fadeIn 0.2s !important;
}

.cupon-modal-content {
    background: #fff !important;
    border-radius: 16px !important;
    width: 100% !important;
    max-width: 400px !important;
    max-height: 90vh !important;
    overflow-y: auto !important;
    position: relative !important;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2) !important;
    animation: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.cupon-modal-close {
    position: absolute !important;
    top: 10px !important;
    right: 10px !important;
    background: rgba(0, 0, 0, 0.55) !important;
    color: #fff !important;
    border: none !important;
    width: 30px !important;
    height: 30px !important;
    min-width: 30px !important;
    min-height: 30px !important;
    border-radius: 50% !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    cursor: pointer !important;
    z-index: 10 !important;
    font-size: 16px !important;
    line-height: 30px !important;
    padding: 0 !important;
    box-shadow: none !important;
}

.cupon-modal-image {
    width: 100% !important;
    height: 160px !important;
    object-fit: cover !important;
    border-radius: 16px 16px 0 0 !important;
    background: #f0f0f0 !important;
}

.cupon-modal-image.no-image {
    height: 80px !important;
}

.cupon-modal-header {
    padding: 20px !important;
    position: relative !important;
    text-align: center !important;
}

.cupon-modal-logo {
    width: 70px !important;
    height: 70px !important;
    object-fit: contain !important;
    background: #fff !important;
    border-radius: 50% !important;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1) !important;
    position: absolute !important;
    top: -35px !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
    padding: 5px !important;
}

.cupon-modal-logo.no-hero {
    top: -15px !important;
}

.cupon-modal-title {
    margin: 40px 0 10px !important;
    font-size: 20px !important;
    color: #333 !important;
    line-height: 1.2 !important;
}

.cupon-modal-desc {
    font-size: 14px !important;
    color: #666 !important;
    margin-bottom: 20px !important;
}

.cupon-modal-codes {
    padding: 0 20px 20px !important;
}

.code-item {
    background: #f9f9f9 !important;
    border: 1px dashed #ccc !important;
    border-radius: 8px !important;
    padding: 15px !important;
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
    margin-bottom: 10px !important;
}

.code-text {
    font-family: monospace !important;
    font-size: 16px !important;
    font-weight: bold !important;
    color: #000 !important;
    letter-spacing: 1px !important;
}

.code-copy {
    background: #000 !important;
    color: #fff !important;
    border: none !important;
    padding: 6px 12px !important;
    border-radius: 6px !important;
    font-size: 11px !important;
    font-weight: bold !important;
    cursor: pointer !important;
    text-transform: uppercase !important;
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes slideUp {
    from {
        transform: translateY(20px);
        opacity: 0;
    }

    to {
        transform: translateY(0);
        opacity: 1;
    }
}

/* Promociones List Responsivo */
.promo-list {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 25px !important;
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
}

.promo-item-card {
    background: #fff !important;
    border-radius: 20px !important;
    padding: 30px 20px !important;
    border: 1px solid #eee !important;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.06) !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    text-align: center !important;
    position: relative !important;
    text-decoration: none !important;
    transition: transform 0.2s, box-shadow 0.2s !important;
    cursor: pointer !important;
}

.promo-item-card:hover {
    transform: translateY(-3px) !important;
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1) !important;
}

.promo-item-image {
    width: 120px !important;
    height: 80px !important;
    object-fit: cover !important;
    border-radius: 12px !important;
    background: #fff !important;
    border: 1px solid #f0f0f0 !important;
    padding: 4px !important;
    margin-bottom: 20px !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04) !important;
}

.promo-item-title {
    font-size: 20px !important;
    font-weight: 800 !important;
    color: #000 !important;
    margin: 0 0 8px !important;
    line-height: 1.2 !important;
}

.promo-item-date {
    background: #fdf2f2 !important;
    color: #d93025 !important;
    font-size: 12px !important;
    padding: 5px 15px !important;
    border-radius: 25px !important;
    font-weight: 700 !important;
    display: inline-block !important;
}

.promo-item-arrow {
    position: absolute !important;
    top: 50% !important;
    right: 20px !important;
    transform: translateY(-50%) !important;
    color: #eee !important;
    font-size: 24px !important;
}

#imaginalia-app-menu .elementor-element-d5df179 *,
#imaginalia-app-menu .mb-bhi-display * {
    margin: 0 !important;
    padding: 0 !important;
    font-size: inherit !important;
    color: #555 !important;
}

/* Ajuste específico para el punto de estado de Mabel */
#imaginalia-app-menu .mb-bhi-status {
    width: 8px !important;
    height: 8px !important;
    display: inline-block !important;
    border-radius: 50% !important;
    margin-right: 4px !important;
}

#imaginalia-app-menu .elementor-widget-container {
    padding: 0 !important;
}

/* Botón cerrar alineado y con aire */
#imaginalia-app-menu button:first-of-type {
    margin-left: 15px !important;
    opacity: 0.6;
}

/* Account Page Layout: .imaginalia-app-container gestiona TODO el espaciado
   igual que .content-area */
.account-page {
    padding: 35px var(--app-side) var(--app-section-bottom) var(--app-side) !important;
    background: #f5f5f7 !important;
    min-height: 100vh !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    box-sizing: border-box !important;
}

/* Cards y Secciones */
.account-card,
.app-card {
    background: #fff !important;
    border-radius: 16px !important;
    padding: var(--app-card-pad) !important;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04) !important;
    margin-bottom: 25px !important;
    border: 1px solid #f0f0f0 !important;
    width: 100% !important;
    max-width: 600px !important;
    /* Límite para que no se estire demasiado */
    margin-left: auto !important;
    margin-right: auto !important;
    box-sizing: border-box !important;
}

.account-card h3,
.app-card h2,
.app-card h3 {
    margin-top: 0 !important;
    margin-bottom: 20px !important;
    font-size: 20px !important;
    font-weight: 700 !important;
    color: #111 !important;
}

.account-card:first-child {
    border-radius: 16px !important;
}

/* Logout Button Styling */
.account-actions {
    margin-top: 30px !important;
    border-top: 1px solid #eee !important;
    padding-top: 25px !important;
    text-align: center !important;
}

.btn-logout {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 10px !important;
    background-color: #fff !important;
    color: #d93025 !important;
    border: 2px solid #d93025 !important;
    padding: 12px 30px !important;
    border-radius: 12px !important;
    font-weight: 700 !important;
    text-decoration: none !important;
    transition: all 0.2s ease !important;
    width: 100% !important;
    max-width: 250px !important;
    font-size: 16px !important;
}

.btn-logout:hover,
.btn-logout:active {
    background-color: #d93025 !important;
    color: #fff !important;
    box-shadow: 0 4px 12px rgba(217, 48, 37, 0.2) !important;
}

.btn-logout::before {
    content: "\f153";
    /* dashicons-exit */
    font-family: Dashicons;
    font-size: 20px;
}

/* Secondary Actions (Login/Register links) */
.btn-secondary-action {
    display: block !important;
    width: 100% !important;
    text-align: center !important;
    background: #f4f4f4 !important;
    color: #444 !important;
    padding: 14px !important;
    border-radius: 12px !important;
    text-decoration: none !important;
    font-weight: 600 !important;
    font-size: 14px !important;
    margin-top: 12px !important;
    transition: background 0.2s !important;
}

.btn-secondary-action:active {
    background: #e0e0e0 !important;
}

.auth-links-divider {
    text-align: center !important;
    margin: 15px 0 !important;
    color: #888 !important;
    font-size: 13px !important;
    position: relative !important;
}

.auth-links-divider::before,
.auth-links-divider::after {
    content: "" !important;
    position: absolute !important;
    top: 50% !important;
    width: 30% !important;
    height: 1px !important;
    background: #eee !important;
}

.auth-links-divider::before {
    left: 0;
}

.auth-links-divider::after {
    right: 0;
}

.btn-link-simple {
    display: block !important;
    text-align: center !important;
    color: #666 !important;
    font-size: 14px !important;
    text-decoration: underline !important;
    margin-top: 15px !important;
}

/* Info Grid */
.info-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: 18px !important;
}

.info-item {
    display: flex !important;
    flex-direction: column !important;
}

.info-label {
    font-size: 11px !important;
    text-transform: uppercase !important;
    letter-spacing: 0.8px !important;
    color: #999 !important;
    font-weight: 700 !important;
    margin-bottom: 4px !important;
}

.info-value {
    font-size: 16px !important;
    color: #111 !important;
    font-weight: 600 !important;
}

/* Encuestas Styling */
.encuesta-item {
    background: #fff !important;
    border: 1px solid #eee !important;
    border-radius: 16px !important;
    padding: 25px !important;
    margin-bottom: 25px !important;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03) !important;
}

.encuesta-opciones-grid {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px !important;
    margin-bottom: 20px !important;
}

.encuesta-opcion-label {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    background: #f9f9f9 !important;
    padding: 14px !important;
    border-radius: 12px !important;
    border: 1px solid #eee !important;
    cursor: pointer !important;
    transition: background 0.2s, border-color 0.2s !important;
}

.encuesta-opcion-label:active {
    background: #f0f0f0 !important;
}

.encuesta-opcion-label input[type="radio"] {
    width: 20px !important;
    height: 20px !important;
    margin: 0 !important;
}

/* Children Grid & Cards */
.children-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
    margin-bottom: 25px !important;
}

.child-card {
    border: 1px solid #eee !important;
    border-radius: 12px !important;
    padding: 16px !important;
    background: #fff !important;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.02) !important;
}

.child-card-header {
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
    margin-bottom: 15px !important;
    border-bottom: 1px dashed #eee !important;
    padding-bottom: 10px !important;
}

.child-name {
    font-weight: 800 !important;
    font-size: 17px !important;
    color: #000 !important;
}

.child-age {
    background: #f0f0f0 !important;
    color: #333 !important;
    font-size: 11px !important;
    padding: 3px 10px !important;
    border-radius: 6px !important;
    font-weight: 700 !important;
}

.child-info-row {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 15px !important;
    margin-bottom: 12px !important;
}

.child-field {
    display: flex !important;
    flex-direction: column !important;
}

.child-field.full-width {
    grid-column: span 2 !important;
    margin-top: 5px !important;
}

.field-label {
    font-size: 10px !important;
    text-transform: uppercase !important;
    color: #aaa !important;
    font-weight: 700 !important;
    margin-bottom: 3px !important;
}

.field-value {
    font-size: 14px !important;
    color: #333 !important;
    font-weight: 600 !important;
}

.status-badge {
    display: inline-block !important;
    font-size: 12px !important;
}

.status-in {
    color: #1e8e3e !important;
}

.status-out {
    color: #d93025 !important;
}

.child-card-footer {
    display: flex !important;
    flex-direction: column !important;
    /* Uno debajo del otro */
    gap: 10px !important;
    margin-top: 20px !important;
    border-top: 1px solid #eee !important;
    padding-top: 15px !important;
}

.edit-child-btn,
.delete-child-btn {
    width: 100% !important;
    padding: 12px !important;
    border-radius: 8px !important;
    font-weight: 700 !important;
    font-size: 14px !important;
    cursor: pointer !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    border: none !important;
    transition: opacity 0.2s !important;
}

.edit-child-btn {
    background-color: #007bff !important;
    /* Azul para editar */
    color: #fff !important;
}

.delete-child-btn {
    background-color: #f8d7da !important;
    /* Rojo suave para borrar */
    color: #d93025 !important;
}

.edit-child-btn:active,
.delete-child-btn:active {
    opacity: 0.7 !important;
}

/* Modal Simple para Edicion, Password y Historial */
#edit-child-modal,
#password-modal,
#history-modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    background: rgba(0, 0, 0, 0.6);
    z-index: 3000;
    /* Mayor que el header pero menor que SweetAlert */
    align-items: center;
    justify-content: center;
    padding: 20px;
    box-sizing: border-box;
}

/* Ludoteca Monitor Specifics */
.monitor-instruction {
    text-align: center !important;
    color: #666 !important;
    margin-bottom: 25px !important;
}

.scanner-form-group {
    display: flex !important;
    gap: 10px !important;
}

#ludoteca-result-container {
    margin-top: 30px !important;
    border: 1px solid #eee !important;
    border-radius: 16px !important;
    padding: 24px !important;
    background: #fdfdfd !important;
    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.02) !important;
}

.result-header {
    border-bottom: 1px dashed #ccc !important;
    padding-bottom: 10px !important;
    margin-bottom: 20px !important;
}

.result-header h3 {
    margin: 0 !important;
    font-size: 20px !important;
    color: #000 !important;
    text-align: left !important;
}

#ludoteca-result-container .info-value {
    font-size: 15px !important;
    color: #000 !important;
}

.result-actions {
    margin-top: 25px !important;
    display: flex !important;
    gap: 12px !important;
}

.monitor-kiosko .ludoteca-action-btn {
    flex: 1 !important;
    font-size: 15px !important;
    height: 52px !important;
    border-radius: 12px !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    margin-top: 0 !important;
    /* Reset automatic margin from btn-submit */
}

.monitor-kiosko #btn-check-in {
    background: #1e8e3e !important;
}

.monitor-kiosko #btn-check-out {
    background: #d93025 !important;
}

.monitor-kiosko #ludoteca-manual-btn {
    width: auto !important;
    padding: 0 25px !important;
    margin-top: 0 !important;
}

/* --- SISTEMA DE MODALES UNIFICADO --- */
/* Estilo base para todos los modales (Reutilizando la lógica de cupones para Mi Cuenta) */
.app-modal,
.cupon-modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.7) !important;
    z-index: 99999 !important;
    justify-content: center !important;
    align-items: center !important;
    padding: 20px !important;
    backdrop-filter: blur(5px) !important;
    box-sizing: border-box !important;
}

.app-modal.active,
.cupon-modal.active {
    display: flex !important;
    animation: fadeIn 0.2s !important;
}

/* El cuerpo de los modales (la tarjeta blanca) */
.modal-content {
    background: #fff !important;
    border-radius: 24px !important;
    width: 100% !important;
    max-width: 450px !important;
    max-height: 90vh !important;
    overflow-y: auto !important;
    position: relative !important;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25) !important;
    animation: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
    padding: 30px !important;
    /* Padding para formularios de Mi Cuenta */
    box-sizing: border-box !important;
}

.cupon-modal-content {
    background: #fff !important;
    border-radius: 24px !important;
    width: 100% !important;
    max-width: 450px !important;
    max-height: 90vh !important;
    overflow-y: auto !important;
    position: relative !important;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25) !important;
    animation: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
    padding: 0 !important;
    /* Sin padding para que la imagen sea ancho completo */
    box-sizing: border-box !important;
}

#history-modal .modal-content {
    max-width: 550px !important;
    /* Más ancho para tabla */
}

/* Botones de cierre unificados */
.close-modal,
.close-modal-pwd,
.close-modal-history,
.cupon-modal-close {
    position: absolute !important;
    top: 15px !important;
    right: 15px !important;
    background: rgba(0, 0, 0, 0.08) !important;
    color: #888 !important;
    border: none !important;
    width: 32px !important;
    height: 32px !important;
    min-width: 32px !important;
    /* Fix oval */
    min-height: 32px !important;
    /* Fix oval */
    border-radius: 50% !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    cursor: pointer !important;
    z-index: 20 !important;
    font-size: 20px !important;
    padding: 0 !important;
    /* Fix oval */
    line-height: 1 !important;
    transition: background 0.2s !important;
}

/* El boton de cupones sobre la imagen requiere mas contraste */
.cupon-modal-close {
    background: rgba(0, 0, 0, 0.4) !important;
    color: #fff !important;
}

.close-modal:active,
.cupon-modal-close:active {
    background: rgba(0, 0, 0, 0.2) !important;
}

/* Títulos de Modales */
.modal-content h4,
.cupon-modal-title {
    margin-top: 0 !important;
    margin-bottom: 25px !important;
    font-size: 22px !important;
    font-weight: 800 !important;
    color: #111 !important;
    text-align: left !important;
    padding-bottom: 0 !important;
    border-bottom: none !important;
}

/* Espaciado para contenido de cupones (ya que el contenedor no tiene padding) */
.cupon-modal-header,
.cupon-modal-codes {
    padding: 25px 30px !important;
}

.cupon-modal-header {
    padding-top: 40px !important;
    /* Espacio para el logo que flota arriba */
}

/* Si hay imagen (hero), el header no necesita tanto espacio arriba */
.cupon-modal-image+.cupon-modal-header {
    padding-top: 30px !important;
}

.cupon-modal-image {
    width: 100% !important;
    height: 180px !important;
    object-fit: cover !important;
    border-radius: 24px 24px 0 0 !important;
    /* Match modal radius */
    display: block !important;
}

#history-list-container {
    border: 1px solid #eee !important;
    border-radius: 12px !important;
    overflow: hidden !important;
    margin-top: 15px !important;
    max-height: 400px !important;
    overflow-y: auto !important;
}

/* History Table Aesthetics */
.history-table {
    width: 100% !important;
    border-collapse: collapse !important;
    margin-top: 0 !important;
}

.history-table th {
    background: #f8f9fa !important;
    color: #666 !important;
    font-size: 12px !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    padding: 12px 10px !important;
    border-bottom: 2px solid #eee !important;
}

.history-table td {
    padding: 14px 10px !important;
    font-size: 14px !important;
    color: #444 !important;
    border-bottom: 1px solid #f0f0f0 !important;
}

.history-table tr:last-child td {
    border-bottom: none !important;
}

.history-status-in {
    color: #1e8e3e !important;
    font-weight: 700 !important;
    background: #e6f4ea !important;
    padding: 4px 8px !important;
    border-radius: 6px !important;
    font-size: 11px !important;
}

.history-status-out {
    color: #d93025 !important;
    font-weight: 700 !important;
    background: #fce8e6 !important;
    padding: 4px 8px !important;
    border-radius: 6px !important;
    font-size: 11px !important;
}

.btn-secondary {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 10px !important;
    background-color: #f4f4f7 !important;
    color: #444 !important;
    border: 1px solid #ddd !important;
    padding: 12px 30px !important;
    border-radius: 12px !important;
    font-weight: 700 !important;
    cursor: pointer !important;
    text-decoration: none !important;
    transition: all 0.2s ease !important;
    width: 100% !important;
    max-width: 250px !important;
    font-size: 16px !important;
    margin-bottom: 12px !important;
}

.btn-secondary:hover,
.btn-secondary:active {
    background-color: #e8e8eb !important;
    border-color: #ccc !important;
}

.btn-secondary::before {
    content: "\f160";
    /* dashicons-lock */
    font-family: Dashicons;
    font-size: 20px;
}

/* Add Child Form */
.add-child-section {
    background: #f9f9f9 !important;
    padding: 20px !important;
    border-radius: 12px !important;
    border: 1px dashed #ccc !important;
}

.add-child-section h4 {
    margin-top: 0 !important;
    margin-bottom: 15px !important;
}

.form-group {
    margin-bottom: 15px !important;
}

.btn-submit {
    width: 100% !important;
    background: #000 !important;
    color: #fff !important;
    border: none !important;
    padding: 14px !important;
    border-radius: 10px !important;
    font-weight: 700 !important;
    cursor: pointer !important;
    margin-top: 10px !important;
}

.no-children-msg,
.loading-msg {
    text-align: center !important;
    color: #888 !important;
    padding: 20px !important;
    font-style: italic !important;
}

/* Form Validation Styles */
.form-group.has-error label {
    color: #d93025 !important;
}

.form-group.has-error input[type="text"],
.form-group.has-error input[type="number"],
.form-group.has-error input[type="email"],
.form-group.has-error input[type="password"],
.form-group.has-error textarea,
.form-group.has-error select {
    border: 2px solid #d93025 !important;
    background-color: #fff8f7 !important;
    color: #d93025 !important;
}

/* Asegurar que el focus no quite el rojo */
.form-group.has-error input:focus,
.form-group.has-error textarea:focus {
    outline: none !important;
    border-color: #d93025 !important;
    box-shadow: 0 0 0 2px rgba(217, 48, 37, 0.2) !important;
}

.error-message {
    color: #d93025 !important;
    font-size: 13px !important;
    /* Un poco más grande como en la imagen 2 */
    font-weight: 700 !important;
    margin-top: 6px !important;
    display: block !important;
    animation: fadeInError 0.2s ease-out !important;
}

@keyframes fadeInError {
    from {
        opacity: 0;
        transform: translateY(-5px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Authentication Alert Box */
.app-auth-error {
    background: #fff8f7 !important;
    border-left: 4px solid #d93025 !important;
    padding: 15px !important;
    margin-bottom: 20px !important;
    border-radius: 8px !important;
    color: #111 !important;
    font-size: 14px !important;
    line-height: 1.5 !important;
    box-shadow: 0 2px 8px rgba(217, 48, 37, 0.05) !important;
}

.app-auth-error strong {
    color: #d93025 !important;
}

.app-auth-error a {
    color: #007bff !important;
    text-decoration: underline !important;
}

.app-auth-success {
    background: #e6ffec !important;
    border-left: 4px solid #1e8e3e !important;
    padding: 15px !important;
    margin-bottom: 20px !important;
    border-radius: 8px !important;
    color: #111 !important;
    font-size: 14px !important;
    line-height: 1.5 !important;
    box-shadow: 0 2px 8px rgba(30, 142, 62, 0.05) !important;
}

.app-auth-success strong {
    color: #1e8e3e !important;
}

/* Utility to ensure errors/success Swals look good */
/* --- PAGINA DE BUSQUEDA (Match con Mi Cuenta) --- */
/* (El padding se gestiona ahora mediante la clase de utilidad .app-section-standard arriba) */

/* Forzar el contenedor principal de Elementor como una tarjeta blanca (como en Mi Cuenta) */
body.is-app-view.search-results .elementor-2688 .elementor-element.elementor-element-c71b70e,
body.is-app-view.search-results .elementor-2688 .elementor-element.elementor-element-c71b70e>.elementor-widget-wrap,
body.is-app-view.search-results .elementor-2688 .elementor-element.elementor-element-c71b70e>.elementor-column-wrap,
/* Novedades Listado: Quitamos de aquí para evitar el estilo tarjeta forzado con padding blanco */
/* Novedades Detalle */
body.is-app-view.single-novedad .elementor-element-a2abf73,
body.is-app-view.single-novedad .elementor-element-a2abf73>.elementor-widget-wrap,
body.is-app-view.page-id-2673 .elementor-element-a2abf73 {
    background: #fff !important;
    border-radius: 20px !important;
    padding: var(--app-card-pad) !important;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04) !important;
}

body.is-app-view.elementor-page-2673 .elementor-element-a2abf73,
body.is-app-view.elementor-page-28327 .elementor-element.elementor-element-f6fda49 {
    padding-top: 90px !important;
}

/* Establecimientos Listado */
body.is-app-view.post-type-archive-local .elementor-element-2a76ab9,
body.is-app-view.post-type-archive-local .elementor-element-2a76ab9>.elementor-widget-wrap,
/* Establecimientos Detalle */
body.is-app-view.single-local .elementor-location-single,
body.is-app-view.single-local .elementor-location-single>.elementor-section-wrap>.elementor-section,
/* Páginas Generales con estilo tarjeta */
body.is-app-view.page-id-46 .elementor-46,
body.is-app-view.page-id-48 .elementor-48,
body.is-app-view.page-id-52 .elementor-52,
body.is-app-view.page-id-2845 .elementor-2845,
body.is-app-view.page-id-2847 .elementor-2847,
body.is-app-view.page-id-28729 .elementor-28729 {
    background: #fff !important;
    border-radius: 20px !important;
    padding: var(--app-card-pad) !important;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04) !important;
    border: 1px solid #f0f0f0 !important;
    margin-bottom: 25px !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
    padding-top: 0px !important;
}

body.is-app-view.single-local .elementor-location-single {
    /* Usamos la variable para que no varíe entre dispositivos */
    padding-top: var(--app-section-top) !important;
}

/* Ocultar contador NaN en Establecimientos */
body.is-app-view.post-type-archive-local .elementor-widget-counter {
    display: none !important;
}

/* Ocultar secciones de elementor redundantes en busqueda */
body.is-app-view.search-results .elementor-section-wrap article,
body.is-app-view.search-results .elementor-widget-container header {
    display: none !important;
}

h1.elementor-heading-title {
    font-size: 28px !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
    margin-bottom: 30px !important;
    padding: 0 !important;
    text-align: center !important;
}

/* Titulo h1 de la pagina de busqueda */
body.is-app-view.search-results h1.elementor-heading-title {
    font-size: 26px !important;
    font-weight: 800 !important;
    color: #111 !important;
    margin: 0 0 30px 0 !important;
    line-height: 1.2 !important;
    text-align: left !important;
}

h1.elementor-heading-title {
    font-size: 28px !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
    margin-bottom: 30px !important;
    padding: 0 !important;
}

/* Las tarjetas internas de los resultados (Combinando con el diseño de sub-tarjetas) */
body.is-app-view.search-results .ue_post_blocks_content {
    background: #f5f5f7 !important;
    /* Un pelín más oscuro para contraste */
    border-radius: 12px !important;
    padding: 16px !important;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05) !important;
    border: 1px solid #e8e8e8 !important;
    margin-bottom: 15px !important;
    display: flex !important;
    flex-direction: column !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
}

/* Titulo dentro de la tarjeta interna */
body.is-app-view.search-results .ue_post_blocks_title {
    font-size: 17px !important;
    font-weight: 700 !important;
    color: #000 !important;
    margin-bottom: 5px !important;
    line-height: 1.3 !important;
    order: 1 !important;
}

body.is-app-view.search-results .ue_post_blocks_title a {
    text-decoration: none !important;
    color: #000 !important;
}

/* "Etiqueta" (Blog, Novedades, etc) */
body.is-app-view.search-results .ue_post_blocks_category,
body.is-app-view.search-results .ue_post_blocks_content span {
    font-size: 10px !important;
    text-transform: uppercase !important;
    letter-spacing: 0.8px !important;
    color: #aaa !important;
    font-weight: 700 !important;
    margin-top: 5px !important;
    line-height: 1 !important;
    order: 2 !important;
}

/* Limpiar paddings extras de elementor */
body.is-app-view.search-results .elementor-column-wrap,
body.is-app-view.search-results .elementor-widget-wrap,
body.is-app-view.search-results .elementor-widget-ucaddon_post_blocks .content {
    padding: 0 !important;
    background: transparent !important;
}

.swal2-container {
    z-index: 10000 !important;
    /* Asegurar que SweetAlert siempre esté arriba */
}

.swal2-popup {
    border-radius: 16px !important;
}

/* Fix Paginación Novedades (Evitar que se salga de la tarjeta) */
body.is-app-view.page-id-27976 .elementor-widget-ucaddon_archive_pagination {
    width: 100% !important;
    max-width: 100% !important;
    overflow: visible !important;
    margin-top: 30px !important;
}

body.is-app-view.page-id-27976 .elementor-widget-ucaddon_archive_pagination ul,
body.is-app-view.page-id-27976 .elementor-widget-ucaddon_archive_pagination .uc-pagination,
body.is-app-view.page-id-27976 .elementor-widget-ucaddon_archive_pagination .archive_pagination,
body.is-app-view.page-id-27976 .elementor-widget-ucaddon_archive_pagination .uc-archive-pagination {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 10px !important;
    padding: 0 !important;
    margin: 0 !important;
    list-style: none !important;
    width: 100% !important;
    overflow: visible !important;
}

body.is-app-view.page-id-27976 .elementor-widget-ucaddon_archive_pagination li {
    margin: 0 !important;
}

body.is-app-view.page-id-27976 .elementor-widget-ucaddon_archive_pagination a,
body.is-app-view.page-id-27976 .elementor-widget-ucaddon_archive_pagination span {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 35px !important;
    height: 35px !important;
    padding: 5px !important;
    border-radius: 50% !important;
    text-decoration: none !important;
    font-size: 14px !important;
    font-weight: 600 !important;
}

/* --- TARJETAS INTERNAS NOVEDADES Y ESTABLECIMIENTOS --- */
/* Novedades Listado */
body.is-app-view.page-id-27976 .uc_post_grid_style_one_item,
body.is-app-view.page-id-27976 .ue_post_grid_item {
    background: #f5f5f7 !important;
    border-radius: 16px !important;
    border: 1px solid #eee !important;
    padding: 12px !important;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04) !important;
    transition: transform 0.2s ease !important;
    margin-bottom: 15px !important;
}

/* Establecimientos Listado (Corregido selector para tarjetas individuales) */
body.is-app-view.post-type-archive-local .ue_post_blocks .column .content {
    background: #f5f5f7 !important;
    border-radius: 16px !important;
    border: 1px solid #eee !important;
    padding: 15px !important;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04) !important;
    height: 100% !important;
    display: flex !important;
    flex-direction: column !important;
    box-sizing: border-box !important;
}

/* Forzar que las imágenes y contenido dentro de la tarjeta se vean bien */
body.is-app-view.post-type-archive-local #uc_post_blocks_elementor_eb7797e .ue_post_blocks_image img {
    border-radius: 12px !important;
    margin-bottom: 10px !important;
    object-fit: contain !important;
    background: #fff !important;
    /* Fondo blanco para que no se vea vacío si el logo es pequeño */
    height: 120px !important;
    /* Ajuste sugerido para que el contain tenga efecto uniforme */
}

/* Ajuste de margen para las columnas de establecimientos para que no esten pegadas */
body.is-app-view.post-type-archive-local .ue_post_blocks .column {
    padding: 8px !important;
}

/* --- ADAPTACIÓN PARA TABLET Y SUPERIOR (iPad Pro, Desktop, etc.) --- */
@media (min-width: 768px) {

    /* Específicamente para el registro, Nombre y Apellidos en la misma fila */
    body.is-app-view #app-register-form {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        column-gap: 20px !important;
    }

    /* Ajuste de los campos en el grid de registro */
    body.is-app-view #app-register-form .form-group:nth-child(1),
    /* Email */
    body.is-app-view #app-register-form .form-group:nth-child(2),
    /* Pass */
    body.is-app-view #app-register-form .form-group:nth-child(5),
    /* GDPR */
    body.is-app-view #app-register-form .form-group:nth-child(6),
    /* Marketing */
    body.is-app-view #app-register-form .form-group:nth-child(7),
    /* Button */
    body.is-app-view #app-register-form .auth-links-divider,
    body.is-app-view #app-register-form .btn-secondary-action {
        grid-column: span 2 !important;
    }

    /* Centrar títulos en tablet */
    body.is-app-view .app-card h2,
    body.is-app-view .account-card h3 {
        text-align: center !important;
        margin-bottom: 30px !important;
    }

    /* Estilos para el Kiosko de Monitor en Tablet */
    body.is-app-view .monitor-kiosko .scanner-container {
        width: 100% !important;
        max-width: 500px !important;
        margin: 0 auto !important;
    }

    body.is-app-view .monitor-kiosko #ludoteca-scanner-input {
        font-size: 24px !important;
        padding: 15px 20px !important;
        border-radius: 12px !important;
    }

    body.is-app-view .monitor-kiosko #ludoteca-manual-btn {
        padding: 0 35px !important;
        font-size: 16px !important;
        border-radius: 10px !important;
        background-color: #000 !important;
        color: #fff !important;
        border: none !important;
        height: 52px !important;
        /* Match height with input */
        margin-top: 0 !important;
    }

    body.is-app-view .monitor-kiosko #ludoteca-scanner-input {
        flex: 1 !important;
    }

    /* Grid de 2 columnas para Cupones en Tablet */
    .cupon-grid {
        grid-template-columns: 1fr 1fr !important;
        gap: 25px !important;
    }

    /* Grid de 2 columnas para Promociones en Tablet */
    .promo-list {
        grid-template-columns: 1fr 1fr !important;
        gap: 25px !important;
    }

    /* Grid de 2 columnas para Información de Usuario en Tablet */
    .info-grid {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 25px 30px !important;
    }

    /* Grid de 2 columnas para Opciones de Encuesta en Tablet */
    .encuesta-opciones-grid {
        grid-template-columns: 1fr 1fr !important;
    }

    /* Ajustar perfil de niño en tablet: 2 columnas */
    .child-info-row {
        grid-template-columns: 1fr 1fr 1fr !important;
    }

    .child-field.full-width {
        grid-column: span 3 !important;
    }

    /* Adaptación de grids de escritorio (Novedades, Establecimientos, Busqueda) en Tablet */
    body.is-app-view.page-id-27976 .elementor-widget-ucaddon_post_grid .uc_post_grid,
    body.is-app-view.search-results .elementor-widget-ucaddon_post_blocks .ue_post_blocks,
    body.is-app-view.post-type-archive-local .elementor-widget-ucaddon_post_blocks .ue_post_blocks {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 20px !important;
    }

    body.is-app-view.page-id-27976 .elementor-widget-ucaddon_post_grid .column,
    body.is-app-view.search-results .elementor-widget-ucaddon_post_blocks .column,
    body.is-app-view.post-type-archive-local .elementor-widget-ucaddon_post_blocks .column {
        width: 100% !important;
        max-width: none !important;
        padding: 0 !important;
    }

    /* Ajuste de ancho máximo de tarjetas en tablet para que no se vean infinitas */
    body.is-app-view .app-card,
    body.is-app-view .account-card,
    body.is-app-view:not(.home):not(.elementor-page):not(.page-id-21):not(.page-id-3) .site-main {
        max-width: 700px !important;
        margin-left: auto !important;
        margin-right: auto !important;
    }

    /* Excepto para listados de grid donde permitimos más ancho */
    body.is-app-view.app-page-promociones .app-card,
    body.is-app-view.app-page-cupones .app-card,
    body.is-app-view.page-id-27976 .elementor-element-ed4c7ac,
    body.is-app-view.post-type-archive-local .elementor-element-2a76ab9 {
        max-width: 900px !important;
    }
}

/* --- ADAPTACIÓN UNIVERSAL DE FORMULARIOS (Elementor, CF7, etc.) --- */
/* Forzar 1 columna siempre en la App para evitar saltos de Elementor JS */
body.is-app-view .elementor-form .elementor-field-group,
body.is-app-view .elementor-form .elementor-column {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
    padding: 0 !important;
    margin-bottom: 20px !important;
    position: static !important;
    /* Neutralizar posiciones absolutas inyectadas */
    transform: none !important;
    /* Neutralizar desplazamientos */
}

body.is-app-view .elementor-form .elementor-row {
    display: block !important;
}

body.is-app-view .elementor-form-fields-wrapper.elementor-labels-above,
body.is-app-view .elementor-form .elementor-button-wrapper,
body.is-app-view .elementor-form .elementor-message {
    /* 100% porque el padding lateral ya lo gestiona el contenedor padre con --app-side o --app-card-pad */
    max-width: 100% !important;
    margin: 0 auto !important;
}


/* Fix etiquetas cortadas y desplazadas */
body.is-app-view .elementor-form .elementor-field-group>label,
body.is-app-view .wpcf7-form label,
body.is-app-view .elementor-field-label {
    display: block !important;
    width: 100% !important;
    margin: 0 0 8px 0 !important;
    padding: 0 !important;
    text-align: left !important;
    font-weight: 700 !important;
    color: #111 !important;
    font-size: 14px !important;
    position: static !important;
    transform: none !important;
    visibility: visible !important;
    opacity: 1 !important;
}

/* Inputs de Elementor y otros */
body.is-app-view .elementor-field-textual,
body.is-app-view .elementor-field,
body.is-app-view .wpcf7-form-control:not([type="submit"]),
body.is-app-view .elementor-form input:not([type="submit"]):not([type="radio"]):not([type="checkbox"]) {
    width: 100% !important;
    min-width: 100% !important;
    max-width: 100% !important;
    padding: 14px !important;
    border: 1px solid #ddd !important;
    border-radius: 12px !important;
    font-size: 16px !important;
    background: #f9f9f9 !important;
    transition: all 0.2s !important;
    box-sizing: border-box !important;
    color: #111 !important;
    height: auto !important;
    margin: 0 !important;
}

body.is-app-view .elementor-field-textual:focus,
body.is-app-view .wpcf7-form-control:focus {
    border-color: #000 !important;
    background: #fff !important;
    outline: none !important;
    box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05) !important;
}

/* Botones de Envío */
body.is-app-view .elementor-button[type="submit"],
body.is-app-view .wpcf7-submit,
body.is-app-view .elementor-button.elementor-size-sm {
    width: 100% !important;
    background-color: #000 !important;
    color: #fff !important;
    border: none !important;
    padding: 16px !important;
    border-radius: 12px !important;
    font-weight: 700 !important;
    font-size: 16px !important;
    cursor: pointer !important;
    margin-top: 10px !important;
    transition: transform 0.2s !important;
}

body.is-app-view .elementor-button:active {
    transform: scale(0.98) !important;
}

/* Ajustes de Título en Contacto */
body.is-app-view.page-id-52 h1.elementor-heading-title {
    font-size: 28px !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
    margin-bottom: 30px !important;
    /* El padding lateral lo gestiona el contenedor (.elementor-52) con --app-card-pad */
    padding: 0 !important;
}

/* --- ESTILOS ESPECÍFICOS POR PÁGINA (SOLICITADOS) --- */

/* Contacto (ID 52) */
body.is-app-view.page-id-52 .elementor-form .elementor-field-group:nth-last-of-type(2) {
    display: none !important;
}

/* Imaginalia (19), El Centro (2847), Horarios (46) y Establecimientos (archive/single-local) */
body.is-app-view.page-id-19 .elementor-heading-title.elementor-size-default,
body.is-app-view.page-id-46 .elementor-heading-title.elementor-size-default,
body.is-app-view.page-id-2847 .elementor-heading-title.elementor-size-default,
body.is-app-view.post-type-archive-local .elementor-heading-title,
body.is-app-view.single-local .elementor-heading-title {
    padding: 0px !important;
    font-size: 28px !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
}

body.is-app-view.page-id-19 .elementor-form .elementor-field-group:nth-last-of-type(2),
body.is-app-view.page-id-2847 .elementor-form .elementor-field-group:nth-last-of-type(2) {
    display: none !important;
}

body.is-app-view.page-id-19 .elementor-section.elementor-top-section.elementor-element.elementor-element-f901f55.elementor-section-stretched.elementor-section-boxed.elementor-section-height-default.elementor-section-height-default,
body.is-app-view.page-id-2847 .elementor-section.elementor-top-section.elementor-element.elementor-element-f901f55.elementor-section-stretched.elementor-section-boxed.elementor-section-height-default.elementor-section-height-default {
    padding: var(--app-card-pad) !important;
    padding-top: 0 !important;
}

/* Impulsa tu marca / Un espacio para tu marca (ID 2845) */
body.is-app-view.page-id-2845 .elementor-element-001e0ff,
body.is-app-view.page-id-2845 .elementor-element-bbb0b01,
body.is-app-view.page-id-2845 .uc_creative_buttons_elementor_ab412c5,
body.is-app-view.page-id-2845 #uc_creative_buttons_elementor_ab412c5,
body.is-app-view.page-id-2845 .elementor-element-bf7feb0 {
    padding: var(--app-card-pad) !important;
}

body.is-app-view.page-id-2845 .elementor-element-001e0ff .elementor-heading-title {
    padding: 0px !important;
    font-size: 28px !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
}

body.is-app-view.page-id-2845 .elementor-element-001e0ff {
    padding: 0 var(--app-card-pad) !important;
}

body.is-app-view.page-id-2845 .elementor-form .elementor-field-group:nth-last-of-type(2) {
    display: none !important;
}

body.is-app-view.page-id-2845 #form-field-field_243e189 {
    display: none !important;
}

/* Servicios (ID 48) - Tarjeta blanca con gris de fondo */
body.is-app-view.page-id-48 .site-main {
    background: #fff !important;
    border-radius: 16px !important;
    padding: var(--app-card-pad) !important;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04) !important;
    border: 1px solid #f0f0f0 !important;
    overflow: hidden !important;
}

body.is-app-view.single-local .elementor-element.elementor-element-8eb5745 {
    padding: 0 !important;
    margin: 0 !important;
}

body.is-app-view.single-local .elementor-element-8eb5745 img {
    border-radius: 16px 16px 0 0 !important;
    width: 100% !important;
    display: block !important;
}

/* Añadir padding al resto del contenido para que no toque los bordes */
body.is-app-view.single-local .site-main .elementor-section:not(.elementor-element-8eb5745) {
    padding-left: var(--app-side) !important;
    padding-right: var(--app-side) !important;
}

body.is-app-view.single-local .elementor-widget-wrap.elementor-element-populated {
    margin-top: 20px !important;
}

body.is-app-view.single-local .elementor-container.elementor-column-gap-default {
    margin: -35px 20px !important;
}

body.is-app-view.single-local .elementor-element-ddb6a65 .elementor-widget-wrap.elementor-element-populated {
    margin: 0 !important;
    padding: 0 !important;
    padding-top: 20px !important;
}

/* Novedades (ID 27976) - Limpieza de doble tarjeta */
/* Novedades (ID 27976) - Estilo Tarjeta Blanca */
body.is-app-view.page-id-27976 .elementor-27976,
body.is-app-view.page-id-27976 .elementor-element-ed4c7ac {
    background: #fff !important;
    border-radius: 20px !important;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04) !important;
    margin-bottom: 25px !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
}

body.is-app-view.page-id-27976 .elementor-heading-title.elementor-size-default {
    padding: 0 !important;
    margin-top: 0 !important;
    margin-bottom: 30px !important;
    font-size: 32px !important;
    /* Un poco más grande para el título principal */
    font-weight: 800 !important;
    color: #111 !important;
    text-align: center !important;
}

/* --- DISEÑO PERSONALIZADO PARA ALERTAS (SWEETALERT2) --- */
.swal2-container {
    z-index: 999999 !important;
}

.swal2-popup {
    border-radius: 20px !important;
    padding: 30px !important;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15) !important;
    font-family: inherit !important;
    max-width: 90% !important;
    width: 380px !important;
}

.swal2-title {
    font-size: 22px !important;
    font-weight: 800 !important;
    color: #000 !important;
    margin-bottom: 12px !important;
    line-height: 1.2 !important;
}

.swal2-html-container {
    font-size: 15px !important;
    color: #666 !important;
    line-height: 1.5 !important;
}

.swal2-actions {
    margin-top: 25px !important;
    display: flex !important;
    flex-direction: row !important;
    justify-content: center !important;
    gap: 12px !important;
    width: 100% !important;
}

.swal2-styled {
    flex: 1 !important;
    margin: 0 !important;
    width: auto !important;
    box-sizing: border-box !important;
}

.swal2-styled.swal2-confirm {
    background-color: #000 !important;
    color: #fff !important;
    border-radius: 12px !important;
    padding: 14px 20px !important;
    font-weight: 700 !important;
    font-size: 15px !important;
    border: none !important;
    box-shadow: none !important;
}

.swal2-styled.swal2-cancel {
    background-color: #f1f1f3 !important;
    color: #333 !important;
    border-radius: 12px !important;
    padding: 14px 20px !important;
    font-weight: 600 !important;
    font-size: 15px !important;
    border: none !important;
    box-shadow: none !important;
}


.swal2-backdrop {
    background: rgba(255, 255, 255, 0.7) !important;
    backdrop-filter: blur(4px) !important;
}