/* ============================================================
   CMS POPUP (custom-popup)
   Estilos del contenido interno. El overlay, centrado y
   animacion de apertura/cierre los gestiona Magnific Popup
   (mainClass: 'cms-popup-mfp').
   ============================================================ */

/* Oculto hasta que Magnific Popup lo clona dentro de su wrapper */
#cms-popup-content.cms-popup-hide {
    display: none;
}

/* Magnific Popup (type: 'inline') mueve el nodo original dentro de
   .mfp-content sin quitarle la clase .cms-popup-hide. Sin esta regla
   el popup quedaria oculto para siempre tras la apertura. Especificidad
   (0,1,2,0) > (0,1,1,0) de la regla anterior, gana independientemente
   del orden en la hoja. */
.mfp-content #cms-popup-content.cms-popup-hide {
    display: block;
}

/* #cms-popup-content es el nodo que Magnific Popup clona dentro de
   .mfp-content y donde inyecta .mfp-close (closeBtnInside:true). Debe
   compartir exactamente el mismo box model (max-width/margin) que
   .cms-popup__content para que el boton de cierre, posicionado
   absolute top:0/right:0 respecto a este ancestro, caiga en la esquina
   del bloque blanco y no en el borde del contenedor de Magnific Popup
   (que ocupa el 100% del viewport). Ver task-5-report.md. */
.cms-popup-mfp #cms-popup-content {
    position: relative;
    display: block;
    width: 100%;
    max-width: 960px;
    margin-inline: auto;
}

/* Sin imagen: el bloque no necesita el ancho pensado para el layout 50/50,
   se estrecha para dejar solo el espacio justo que necesita el texto. */
.cms-popup-mfp #cms-popup-content:has(.cms-popup__text:only-child) {
    max-width: 560px;
}

.cms-popup-mfp .cms-popup__content {
    display: flex;
    align-items: stretch;
    width: 100%;
    max-height: 540px;
    background: #ffffff;
    position: relative;
}

/* Con imagen: 50% / 50%. Sin imagen (el div .cms-popup__image no se genera
   en el XSLT), .cms-popup__text ocupa el 100% de forma natural por flex:1 */
.cms-popup-mfp .cms-popup__image {
    flex: 0 0 50%;
    overflow: hidden;
}

.cms-popup-mfp .cms-popup__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.cms-popup-mfp .cms-popup__text {
    flex: 1 1 auto;
    padding-inline: 34px;
    padding-block: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
    background: #ffffff;
    overflow-y: auto;
}

.cms-popup-mfp .cms-popup__title {
    display: block;
    font-size: 30px;
    line-height: 1.25;
    color: #333333;
}

.cms-popup-mfp .cms-popup__description p {
    margin-block: 0 8px;
    text-wrap: balance;
}

.cms-popup-mfp .cms-popup__description p:last-child {
    margin-bottom: 0;
}

/* Solo alineacion: el color/fondo del boton los aporta .btn.btn-semi-to-full-red
   (mismas clases que el boton de reserva de la mascara y del formulario de
   contacto), para que se vea identico a los demas botones de reserva de la web. */
.cms-popup-mfp .cms-popup__text .btn {
    align-self: flex-start;
    margin-top: unset;
}

/* Sin imagen: el XSLT (Task 3) no genera .cms-popup__image, asi que
   .cms-popup__text es hijo unico de .cms-popup__content. En ese caso se
   centra el texto y el bloque completo (titulo, descripcion, CTA);
   con imagen el layout 50/50 con texto a la izquierda no se ve afectado
   porque el selector :only-child no aplica. */
.cms-popup-mfp .cms-popup__text:only-child {
    align-items: center;
    text-align: center;
}

.cms-popup-mfp .cms-popup__text:only-child .cms-popup__title,
.cms-popup-mfp .cms-popup__text:only-child .btn {
    align-self: center;
}

.cms-popup-mfp.mfp-bg {
    background: #000000;
    opacity: 0.75;
}

/* Cierre de Magnific Popup (closeBtnInside:true): con la regla de arriba
   #cms-popup-content pasa a ser position:relative y comparte el box model
   de .cms-popup__content, asi que este es el ancestro posicionado mas
   cercano de .mfp-close (aunque el DOM real sea #cms-popup-content >
   .mfp-close, ver DOM real inspeccionado con Chrome DevTools en
   task-5-report.md) y el boton cae en la esquina del bloque BLANCO, no
   sobre el overlay oscuro. Color oscuro para contraste sobre fondo
   blanco (#333333 sobre #ffffff = ratio ~12.6:1, cumple 1.4.3). */
.cms-popup-mfp button.mfp-close {
    top: 10px;
    right: 10px;
    color: #333333;
    opacity: 1;
    font-size: 32px;
    width: 44px;
    height: 44px;
}

/* ============================================================
   RESPONSIVE — 3 breakpoints obligatorios
   ============================================================ */

/* Desktop grande: >1920px */
@media (min-width: 1920px) {
    .cms-popup-mfp #cms-popup-content {
        max-width: 1100px;
    }

    .cms-popup-mfp #cms-popup-content:has(.cms-popup__text:only-child) {
        max-width: 720px;
    }

    .cms-popup-mfp .cms-popup__content {
        max-height: 600px;
    }

    .cms-popup-mfp .cms-popup__title {
        font-size: 34px;
    }
}

/* Desktop pequeno / Tablet: 992px - 1920px */
@media (min-width: 992px) and (max-width: 1920px) {
    .cms-popup-mfp #cms-popup-content {
        max-width: 960px;
    }

    .cms-popup-mfp #cms-popup-content:has(.cms-popup__text:only-child) {
        max-width: 650px;
    }

    .cms-popup-mfp .cms-popup__content {
        max-height: 540px;
    }
}

/* Tablet / Mobile: <992px */
@media (max-width: 992px) {
    .cms-popup-mfp #cms-popup-content {
        width: 88%;
        max-width: none;
    }

    .cms-popup-mfp #cms-popup-content:has(.cms-popup__text:only-child) {
        width: 90%;
        max-width: 380px;
    }

    .cms-popup-mfp .cms-popup__content {
        flex-direction: column;
        max-height: 85vh;
        overflow-y: auto;
    }

    .cms-popup-mfp .cms-popup__image {
        flex: 0 0 auto;
        max-height: 220px;
    }

    .cms-popup-mfp .cms-popup__text {
        padding: 28px 24px;
    }

    .cms-popup-mfp .cms-popup__title {
        font-size: 22px;
    }
}
