@charset "UTF-8";

.half-content-masonry {
    position: relative;
    display: block;
    padding: var( --secPadding );
}

.half-content-masonry.first::before,
.half-content-masonry.first::after {
    content: '';
    position: absolute;
}

.half-content-masonry.first::before {
    width: min( 29.69vw, 570px );
    height: min( 38.59vw, 741px );
    top: 0;
    right: 0;
    /* News-Accent-Top-Right.png.webp not present on this site — decoration disabled to avoid a 404. */
    background-size: min( 29.69vw, 570px );
}

.half-content-masonry.first::after {
    width: min( 40.26vw, 773px );
    height: min( 47.92vw, 920px );
    bottom: 0;
    left: 0;
    /* News-Accent-Bottom-Left.png.webp not present on this site — decoration disabled to avoid a 404. */
    background-size: min( 47.92vw, 920px );
    z-index: -1;
}

.half-content-masonry .container {
    column-gap: 14px;
    overflow: visible;
}

/* Dental Beauty News Blocks (Figma 5202:1997) — staggered two-column parity. */
.news-masonry .container {
    column-gap: 16px;
}

.half-content-masonry a {
    text-decoration: underline;
}

.col {
    display: flex;
    flex: 1;
    flex-direction: column;
    padding: 0;
    justify-content: space-between;
    gap: clamp( 56px, 5.2vw, 100px );
}

.colReverse {
    flex-direction: column-reverse;
}

.half-content-masonry h2 {
    font-size: var( --h2-font-size );
    line-height: var( --h2-line-height );
    font-weight: var( --heading-font-weight );
}

/* Figma: Zalando Sans Expanded SemiBold 48px, lh 1.15, uppercase, navy #12233F. */
.news-masonry h2 {
    font-size: clamp( 32px, 2.5vw, 48px );
    line-height: 1.15;
    font-weight: 600;
    text-transform: uppercase;
    color: #12233F;
    margin-bottom: 32px;
}

/* Figma body: Zalando Sans 18px, lh 1.5; copy column 536px wide. */
.news-masonry .text .col-lg-8 {
    max-width: 536px;
}

.news-masonry .text p {
    font-size: 18px;
    line-height: 1.5;
}

.nTxtTop {
    padding: var( --secPadding);
}

.text {
    display: flex;
    min-height: clamp( 300px, 38.02vw, 730px );
    align-items: center;
}

.image {
    width: 100%;
    margin: 0;
}

.nTxtBtm {
    padding: var( --secPadding );
}

.half-content-masonry .image img,
.half-content-masonry .video .cVidWrap {
    border-radius: 60px;
    box-shadow: var( --shadyMid );
    overflow: hidden;
}

.align-left img {
    float: right;
}

/* News Blocks: image fills the column width, so the float is a no-op visually;
   neutralize it to keep the picture flush within its column. Tighten the text
   column height toward the Figma copy block (~560px) so the two staggered
   columns aren't excessively tall, and vertically center the copy. */
.news-masonry .image img {
    float: none;
    width: 100%;
}

.news-masonry .text {
    min-height: clamp( 320px, 29vw, 560px );
    align-items: center;
    padding: 0;
    height: fit-content;
    min-height: unset;
}

.news-masonry .text.txt-rt {
    /* justify-content: end; */
}

@media ( max-width: 1024px ) {
    .half-content-masonry {
        padding-bottom: 0;
    }

    .half-content-masonry.first::before,
    .half-content-masonry.first::after {
        display: none;
    }

    .half-content-masonry .image img {
        border-radius: clamp( 30px, 5.21vw, 100px );
    }

    .half-content-masonry h2 {
        /* font-size: 44px; */
    }
    
    .half-content-masonry .container.flex {
        flex-wrap: wrap;
        padding: 0px 32px;
        margin-top: 10px;
    }

    .half-content-masonry .container.flex .col {
        flex-direction: column;
        width: 100%;
    }

    /*
     * Mobile order fix (Figma-correct, no image-source swapping):
     * On desktop one column uses .colReverse (column-reverse) to put its image
     * at the bottom for the diagonal stagger. At <=1024 the base rule above
     * forces flex-direction:column on every .col, which silently neutralizes
     * .colReverse — leaving the order dependent on markup order alone. Make it
     * explicit instead: each column keeps its OWN image (blk_img + blk_img_mob
     * are the same block's desktop/mobile art) and stacks image-then-text, in
     * the same intended pairing for both columns. Using flex `order` (rather
     * than swapping image sources between columns) guarantees each image sits
     * directly above its own heading + copy.
     */
    .news-masonry .container.flex .col {
        flex-direction: column;
    }
    .news-masonry .col > .image,
    .news-masonry .col > div:not(.text) {
        order: 1;
    }
    .news-masonry .col > .text {
        order: 2;
        min-height: 0;
    }

    .nTxtTop,
    .nTxtBtm {
        padding: 48px 0 100px;
    }
}

@media (max-width: 567px) {
        .half-content-masonry .container.flex {
            flex-direction: column;
        }
}