.grid {
    display: flex;
    flex-wrap: wrap;

    > * {
        flex-basis: calc(100% - 20px);
        margin: 10px;

        @media all and (min-width: 480px) {
            flex-basis: calc(50% - 20px);
        }

        @media all and (min-width: 1024px) {
            flex-basis: calc(30% - 20px);
        }
    }

    &--narrow {
        text-align: center;

        @include media-query(tablet-portrait) {
            text-align: left;
        }
    }
}

@supports (display: grid) {
    .grid {
        display: grid;
        margin: 30px 0;
        grid-gap: 10px;
        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));

        > * {
            flex-basis: initial;
            margin: 0;
        }

        &--narrow {
            justify-content: center;
            text-align: center;
            grid-template-columns: repeat(auto-fit, minmax(200px, 200px));

            @include media-query(tablet-portrait) {
                justify-content: flex-start;
                text-align: left;
            }
        }

        &--two {
            grid-template-columns: 100%;
            grid-gap: 0;

            @include media-query(tablet-portrait) {
                grid-template-columns: 50% 50%;
            }
        }

        &--max-three {
            grid-template-columns: 1fr;
            grid-gap: 30px;

            @include media-query(mob-landscape) {
                grid-template-columns: repeat(2, 1fr);
            }

            @include media-query(tablet-portrait) {
                grid-template-columns: repeat(3, 1fr);
            }
        }
	}
}