/* Carga fluida de imágenes en toda la app (chat, red social, hoteles, etc.) */
@keyframes nz-media-shimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

.nz-media-img {
    opacity: 0;
    transition: opacity 0.32s ease;
}

.nz-media-img.is-loaded {
    opacity: 1;
}

.nz-media-img.is-loading {
    background-color: #eef2f7;
    background-image: linear-gradient(90deg, #eef2f7 0%, #f8fafc 45%, #eef2f7 90%);
    background-size: 200% 100%;
    animation: nz-media-shimmer 1.15s ease-in-out infinite;
}

.nz-media-img.is-error {
    opacity: 1;
    background: #f1f5f9;
}

.mensaje-imagen-container {
    background: #eef2f7;
    display: inline-block;
    max-width: 100%;
    line-height: 0;
}

.mensaje-imagen,
body.chat-page--messenger .mensaje-imagen,
.chat-container-portal .mensaje-imagen,
.sa-page-chat .mensaje-imagen {
    max-width: min(280px, 100%);
    width: auto;
    height: auto;
    max-height: 320px;
    object-fit: contain;
    vertical-align: top;
}

/* Tarjetas de alojamiento (portada fija h-48) */
.aloj-card-media,
.relative.h-48 {
    background-color: #eef2f7;
}

.aloj-card-media .nz-media-img,
.relative.h-48 > .nz-media-cover {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.aloj-card-media .nz-media-img.is-loading,
.relative.h-48 > .nz-media-cover.is-loading {
    min-height: 12rem;
}

/* Galería / detalle hotel */
.dh-gallery-grid .nz-media-img,
.room-photo-carousel .nz-media-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
