.f12 .f12-scroll-fade {
    position: relative;
    isolation: isolate;
}

.f12 .f12-scroll-fade::after {
    content: "";
    position: absolute;
    z-index: 2;
    inset: auto 0 -1px 0;
    height: var(--f12-scroll-fade-height, 52px);
    background: var(--f12-scroll-fade-color, var(--f12-color-surface-subtle));
    -webkit-mask-image: linear-gradient(
        180deg,
        transparent 0%,
        rgba(0, 0, 0, 0.08) 28%,
        rgba(0, 0, 0, 0.4) 58%,
        rgba(0, 0, 0, 0.78) 80%,
        #000 100%
    );
    mask-image: linear-gradient(
        180deg,
        transparent 0%,
        rgba(0, 0, 0, 0.08) 28%,
        rgba(0, 0, 0, 0.4) 58%,
        rgba(0, 0, 0, 0.78) 80%,
        #000 100%
    );
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--f12-duration-fast) var(--f12-ease-standard);
}

.f12 .f12-scroll-fade.is-scrollable:not(.is-at-end)::after {
    opacity: 1;
}

.f12 .f12-scroll-fade[data-f12-scroll-fade-top]::before {
    content: "";
    position: absolute;
    z-index: 2;
    inset: -1px 0 auto;
    height: var(--f12-scroll-fade-top-height, var(--f12-scroll-fade-height, 52px));
    background: var(--f12-scroll-fade-color, var(--f12-color-surface-subtle));
    -webkit-mask-image: linear-gradient(180deg, #000, transparent);
    mask-image: linear-gradient(180deg, #000, transparent);
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--f12-duration-fast) var(--f12-ease-standard);
}

.f12 .f12-scroll-fade[data-f12-scroll-fade-top].is-scrollable:not(.is-at-start)::before {
    opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
    .f12 .f12-scroll-fade[data-f12-scroll-fade-top]::before,
    .f12 .f12-scroll-fade::after {
        transition: none;
    }
}
