.op3-element[data-op3-element-type="row"] {
    display: flex;
    flex-direction: column;
    width: 1140px;
    max-width: 100%;
    margin: 0 auto;
    padding: 15px 0;
    border-width: 0;

    --op3-flex-column-gap:20px;
    --op3-flex-basis-steps:1;

    > [data-op3-element-container] > [data-op3-children] {
        display: flex;
        flex-wrap: wrap;
        gap: 0 var(--op3-flex-column-gap);
    }

    @media (max-width: $breakpoint-tablet) {
        padding: 15px 30px;

        .op3-element[data-op3-element-type="row"] {
            padding-left: 0;
            padding-right: 0;
        }
    }
}

// Set flex shrink/grow for stacked and wrapped columns.
@mixin columnsWrapAndStack($device) {
    .op3-element[data-op3-element-type="row"] > [data-op3-element-container] > [data-op3-children] {
        &[data-op3-wrap-columns-#{$device}="0"] > .op3-element {
            flex-basis: auto !important;
            flex-grow: 0;
            flex-shrink: 1;
        }
        &[data-op3-wrap-columns-#{$device}="1"] > .op3-element {
            flex-grow: 1;
            flex-shrink: 1;
        }

        &[data-op3-stack-columns-#{$device}="1"] {
            &[data-op3-stack-columns-#{$device}-reverse="1"] {
                flex-wrap: wrap-reverse;
            }

            > .op3-element {
                flex-basis: 100% !important;
            }
        }
    }
}

// Wrap and stack columns.
@media (min-width: ($breakpoint-tablet + 1)) {
    @include columnsWrapAndStack(desktop);
}

@media (max-width: $breakpoint-tablet) and (min-width: ($breakpoint-mobile + 1)) {
    @include columnsWrapAndStack(tablet);
}

@media (max-width: $breakpoint-mobile) {
    @include columnsWrapAndStack(mobile);
}
