@import base

$grid-gap-wide: 5rem
$grid-gap-narrow: 2rem
$flex-gap: 2rem

@mixin flex-fallback($cols, $gap: 0)
    & > *
        @if $gap == 0
            flex: 0 0 100% / $cols
        @else
            flex: 0 0 calc(#{100% / $cols} - #{$gap * ($cols - 1)})

.root
    display: flex
    flex-direction: row
    flex-wrap: wrap
    justify-content: space-between
    grid-column-gap: $grid-gap-wide

    & > *
        min-width: 0

@supports(display: grid)
    .root
        display: grid

@include breakpoint(min, lg)
    .root
        grid-template-columns: 1fr

    @each $name, $cols in (half: 2, third: 3, quarter: 4)
        .#{$name}
            @include flex-fallback($cols, $flex-gap)
            grid-template-columns: repeat($cols, 1fr)

.narrow
    grid-column-gap: $grid-gap-narrow

.spacing:not(:empty)
    margin-bottom: var(--spacing-md)
