.cp-post-list {
    width: 100%;
    position: relative;
    display: block;
    clear: both;
}

/* Grid visual del shortcode, pero trabajado con FLEX */
.cp-post-list__grid {
    --cp-post-list-gap: 24px;
    --cp-post-list-columns: 4;

    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    justify-content: flex-start;
    gap: var(--cp-post-list-gap);
    width: 100%;
    position: relative;
    min-height: 0;
}

/* Cards del shortcode */
.cp-post-list__grid > .cp-post-card {
    flex: 1 1 calc(
        (100% - (var(--cp-post-list-gap) * (var(--cp-post-list-columns) - 1))) /
        var(--cp-post-list-columns)
    );

    width: auto;
    max-width: none;
    min-width: 0;
    margin: 0;
    margin-inline: 0;
    box-sizing: border-box;
    align-self: stretch;
}

.cp-post-list .cp-post-card--grid {
    position: relative;
    isolation: isolate;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    aspect-ratio: 1 / 1;
    height: auto;
    min-height: 0;
    overflow: hidden;
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    box-sizing: border-box;
}

/* El contenido queda dentro de la card */
.cp-post-list .cp-post-card--grid .cp-post-card__body {
    position: relative;
    z-index: 2;
    width: 100%;
    min-width: 0;
}

/* El enlace absoluto queda limitado a la card */
.cp-post-list .cp-post-card--grid .cp-post-card__overlay-link {
    position: absolute;
    inset: 0;
    z-index: 3;
}

/* Limpieza preventiva del flujo */
.cp-post-list::after,
.cp-post-list__grid::after {
    content: "";
    display: block;
    clear: both;
}

/* Desde 992px a menos: 2 columnas */
@media (max-width: 992px) {
    .cp-post-list__grid {
        --cp-post-list-columns: 2;
    }
}

/* Desde 480px a menos: 1 columna */
@media (max-width: 480px) {
    .cp-post-list__grid {
        --cp-post-list-columns: 1;
    }

    .cp-post-list__grid > .cp-post-card {
        flex: 1 1 100%;
        width: 100%;
        max-width: none;
    }
}

.cp-post-list__items {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.cp-post-list__items .cp-post-card {
    width: 100%;
    max-width: none;
    margin: 0;
}

.cp-post-list__items .cp-post-card--horizontal .cp-post-card__link {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    align-items: stretch;
    min-height: 190px;
}

.cp-post-list__items .cp-post-card--horizontal .cp-post-card__media {
    width: 220px;
    min-width: 220px;
    height: 190px;
    min-height: 190px;
    aspect-ratio: auto;
}

.cp-post-list__items .cp-post-card--horizontal .cp-post-card__body {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    padding: 18px 20px;
    min-width: 0;
}

.cp-post-list__items .cp-post-card--horizontal .cp-post-card__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 8px;
    color: #6b7280;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.4;
}

.cp-post-list__items .cp-post-card--horizontal .cp-post-card__meta-sep {
    color: #9ca3af;
}

.cp-post-list__items .cp-post-card--horizontal .cp-post-card__title {
    margin: 0 0 10px;
    font-family: 'Lato', sans-serif;
    font-size: 24px;
    line-height: 1.15;
    color: #111827;
}

.cp-post-list__items .cp-post-card--horizontal .cp-post-card__excerpt {
    margin: 0;
    color: #4b5563;
    font-size: 15px;
    line-height: 1.65;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

@media (max-width: 767px) {

    .cp-post-list__items .cp-post-card--horizontal .cp-post-card__link {
        grid-template-columns: 1fr;
        min-height: 0;
    }

    .cp-post-list__items .cp-post-card--horizontal .cp-post-card__media {
        width: 100%;
        min-width: 0;
        height: 220px;
        min-height: 220px;
    }

    .cp-post-list__items .cp-post-card--horizontal .cp-post-card__body {
        padding: 18px;
    }

    .cp-post-list__items .cp-post-card--horizontal .cp-post-card__title {
        font-size: 21px;
    }
}