* {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    padding: 0;
    width: 100%;
    background: #ffffff;
    font-family: Arial, Helvetica, sans-serif;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

body {
    overflow: hidden;
}

.news-scroller {
    --news-height: 72px;
    --slide-width: 80%;
    --side-padding: 20px;
    --content-gap: 10px;
    --desktop-message-space: 140px;
    --desktop-leading-space: 20px;
    --desktop-trailing-space: 120px;

    position: relative;
    width: 100%;
    height: var(--news-height);
    overflow: hidden;
    background: #ffffff;
    color: #111111;

    user-select: none;
    -webkit-user-select: none;
}

.news-viewport {
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;

    cursor: grab;

    /*
     * Horizontale gestures zijn voor de newsbar.
     * Verticaal swipen blijft beschikbaar voor de Sana pagina.
     */
    touch-action: pan-y;
    overscroll-behavior-x: contain;
}

.news-viewport.is-dragging {
    cursor: grabbing;
}

.news-track {
    display: flex;
    flex-wrap: nowrap;
    height: 100%;
    width: max-content;

    transform: translate3d(0, 0, 0);
    will-change: transform;
}

.news-slide {
    position: relative;

    /*
     * Desktop:
     * de breedte van ieder bericht wordt bepaald door de langste tekstregel.
     * Tussen het einde van die langste regel en het begin van het volgende
     * bericht blijft in totaal circa 140px vrije ruimte staan.
     */
    flex: 0 0 auto;
    width: max-content;
    min-width: 0;
    height: 100%;

    display: flex;
    align-items: center;

    padding-left: var(--desktop-leading-space);
    padding-right: var(--desktop-trailing-space);
}

.news-slide::after {
    content: "";

    position: absolute;
    top: 14px;

    /*
     * De scheidingslijn staat midden in de totale 140px tussenruimte.
     * 70px links en 70px rechts van de lijn tot aan de berichtinhoud.
     */
    right: 50px;

    width: 1px;
    height: calc(100% - 28px);

    background: #d2d2d2;
}

.news-content {
    width: max-content;
    min-width: 0;

    display: flex;
    align-items: center;

    gap: var(--content-gap);

    padding: 0;
}

.news-icon {
    flex: 0 0 auto;

    width: 24px;
    height: 24px;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    color: #111111;

    pointer-events: none;
}

.news-icon svg {
    display: block;
    width: 22px;
    height: 22px;
}

.news-icon-custom img {
    display: block;

    width: 24px;
    height: 24px;

    object-fit: contain;

    pointer-events: none;
    -webkit-user-drag: none;
}

.news-copy {
    min-width: 0;
    width: max-content;

    display: block;
    overflow: visible;

    white-space: nowrap;

    font-size: 15px;
    line-height: 1.3;
    font-weight: 700;
}

.news-text,
.news-link {
    color: #111111;
    font-weight: 700;
}

.news-link {
    margin-left: 5px;

    color: #008080;
    text-decoration: underline;
    text-underline-offset: 2px;

    cursor: pointer;

    -webkit-user-drag: none;
}

/* Handmatige regelafbreking uit de teaser: <br> werkt alleen op desktop. */
.mobile-break-space {
    display: none;
}

.news-slide.is-empty {
    flex-basis: 100vw;
    width: 100vw;
    padding: 0 var(--side-padding);
}

.news-slide.is-empty::after {
    display: none;
}

.news-slide.is-empty .news-content {
    width: 100%;
    justify-content: center;
}

@media (max-width: 767px) {
    br.desktop-break {
        display: none;
    }

    .mobile-break-space {
        display: inline;
    }

    .news-scroller {
        --news-height: 112px;
        --side-padding: 12px;
        --content-gap: 8px;
    }

    .news-slide {
        /*
         * Mobiel houdt de bestaande 80%-opzet zodat er altijd een deel
         * van het volgende bericht zichtbaar blijft.
         */
        flex: 0 0 80vw;
        width: 80vw;
        padding: 0;
    }

    .news-slide::after {
        top: 15px;
        right: 0;
        height: calc(100% - 30px);
    }

    .news-content {
        width: 100%;
        padding: 0 var(--side-padding);
    }

    .news-copy {
        width: 100%;

        display: -webkit-box;
        -webkit-box-orient: vertical;

        -webkit-line-clamp: 4;
        line-clamp: 4;

        overflow: hidden;
        white-space: normal;

        font-size: 12px;
        line-height: 1.28;
    }

    .news-icon {
        width: 19px;
        height: 19px;
    }

    .news-icon svg,
    .news-icon-custom img {
        width: 18px;
        height: 18px;
    }

    .news-slide.is-empty {
        flex-basis: 100vw;
        width: 100vw;
    }
}


/* ==========================================================
   DESKTOP SLEEPHANDJE
   ========================================================== */

@media (hover: hover) and (pointer: fine) {
    .news-viewport,
    .news-slide,
    .news-content,
    .news-copy,
    .news-text,
    .news-icon {
        cursor: grab;
    }

    /* De Lees meer link blijft duidelijk een gewone klikbare link */
    .news-link {
        cursor: pointer;
    }

    /* Zodra er echt gesleept wordt, overal het gesloten handje */
    .news-viewport.is-dragging,
    .news-viewport.is-dragging .news-slide,
    .news-viewport.is-dragging .news-content,
    .news-viewport.is-dragging .news-copy,
    .news-viewport.is-dragging .news-text,
    .news-viewport.is-dragging .news-icon,
    .news-viewport.is-dragging .news-link {
        cursor: grabbing !important;
    }
}


/* ===== DEFINITIEVE CURSOR EN DRAG ===== */

.news-viewport,
.news-slide,
.news-content,
.news-copy,
.news-text,
.news-icon {
    -webkit-user-select: none;
    user-select: none;
}

@media (hover: hover) and (pointer: fine) {
    .news-viewport,
    .news-slide,
    .news-content,
    .news-copy,
    .news-text,
    .news-icon {
        cursor: grab !important;
    }

    .news-link {
        cursor: pointer !important;
    }

    .news-viewport.is-dragging,
    .news-viewport.is-dragging .news-slide,
    .news-viewport.is-dragging .news-content,
    .news-viewport.is-dragging .news-copy,
    .news-viewport.is-dragging .news-text,
    .news-viewport.is-dragging .news-icon,
    .news-viewport.is-dragging .news-link {
        cursor: grabbing !important;
    }
}
