/* =========================================================
   Bootstrap-like Responsive Flex Grid
   With Column Gap
   ========================================================= */

:root {
    --grid-gap: 20px;
}


/* =========================================================
   Box Sizing
   ========================================================= */

*,
*::before,
*::after {
    box-sizing: border-box;
}


/* =========================================================
   Container
   ========================================================= */

.container {
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    padding-left: 15px;
    padding-right: 15px;
}

.container-fluid {
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    padding-left: 15px;
    padding-right: 15px;
}


/* =========================================================
   Container Widths
   ========================================================= */

@media (min-width: 576px) {
    .container {
        max-width: 540px;
    }
}

@media (min-width: 768px) {
    .container {
        max-width: 720px;
    }
}

@media (min-width: 992px) {
    .container {
        max-width: 960px;
    }
}

@media (min-width: 1200px) {
    .container {
        max-width: 1140px;
    }
}

@media (min-width: 1400px) {
    .container {
        max-width: 1320px;
    }
}


/* =========================================================
   Row
   ========================================================= */

.row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--grid-gap);
}


/* =========================================================
   Base Column
   ========================================================= */

.row > [class*="col-"] {
    position: relative;
    min-height: 1px;
    box-sizing: border-box;
}


/* =========================================================
   Default / XS
   ========================================================= */

/* 1 column */
.col-12 {
    flex: 0 0 100%;
    max-width: 100%;
}

/* 2 columns */
.col-6 {
    flex: 0 0 calc(50% - (var(--grid-gap) / 2));
    max-width: calc(50% - (var(--grid-gap) / 2));
}

/* 3 columns */
.col-4 {
    flex: 0 0 calc(33.333333% - (var(--grid-gap) * 2 / 3));
    max-width: calc(33.333333% - (var(--grid-gap) * 2 / 3));
}

/* 4 columns */
.col-3 {
    flex: 0 0 calc(25% - (var(--grid-gap) * 3 / 4));
    max-width: calc(25% - (var(--grid-gap) * 3 / 4));
}

/* 5 columns */
.col-5 {
    flex: 0 0 calc(41.666667% - (var(--grid-gap) * 5 / 6));
    max-width: calc(41.666667% - (var(--grid-gap) * 5 / 6));
}

/* 7 columns */
.col-7 {
    flex: 0 0 calc(58.333333% - (var(--grid-gap) / 2));
    max-width: calc(58.333333% - (var(--grid-gap) / 2));
}

/* 8 columns */
.col-8 {
    flex: 0 0 calc(66.666667% - (var(--grid-gap) / 2));
    max-width: calc(66.666667% - (var(--grid-gap) / 2));
}

/* 9 columns */
.col-9 {
    flex: 0 0 calc(75% - (var(--grid-gap) / 2));
    max-width: calc(75% - (var(--grid-gap) / 2));
}

/* 10 columns */
.col-10 {
    flex: 0 0 calc(83.333333% - (var(--grid-gap) / 2));
    max-width: calc(83.333333% - (var(--grid-gap) / 2));
}

/* 11 columns */
.col-11 {
    flex: 0 0 calc(91.666667% - (var(--grid-gap) / 2));
    max-width: calc(91.666667% - (var(--grid-gap) / 2));
}


/* =========================================================
   SM - 576px
   ========================================================= */

@media (min-width: 576px) {

    .col-sm-1 {
        flex: 0 0 calc(8.333333% - (var(--grid-gap) * 11 / 12));
        max-width: calc(8.333333% - (var(--grid-gap) * 11 / 12));
    }

    .col-sm-2 {
        flex: 0 0 calc(16.666667% - (var(--grid-gap) * 5 / 6));
        max-width: calc(16.666667% - (var(--grid-gap) * 5 / 6));
    }

    .col-sm-3 {
        flex: 0 0 calc(25% - (var(--grid-gap) * 3 / 4));
        max-width: calc(25% - (var(--grid-gap) * 3 / 4));
    }

    .col-sm-4 {
        flex: 0 0 calc(33.333333% - (var(--grid-gap) * 2 / 3));
        max-width: calc(33.333333% - (var(--grid-gap) * 2 / 3));
    }

    .col-sm-5 {
        flex: 0 0 calc(41.666667% - (var(--grid-gap) * 5 / 6));
        max-width: calc(41.666667% - (var(--grid-gap) * 5 / 6));
    }

    .col-sm-6 {
        flex: 0 0 calc(50% - (var(--grid-gap) / 2));
        max-width: calc(50% - (var(--grid-gap) / 2));
    }

    .col-sm-7 {
        flex: 0 0 calc(58.333333% - (var(--grid-gap) / 2));
        max-width: calc(58.333333% - (var(--grid-gap) / 2));
    }

    .col-sm-8 {
        flex: 0 0 calc(66.666667% - (var(--grid-gap) / 2));
        max-width: calc(66.666667% - (var(--grid-gap) / 2));
    }

    .col-sm-9 {
        flex: 0 0 calc(75% - (var(--grid-gap) / 2));
        max-width: calc(75% - (var(--grid-gap) / 2));
    }

    .col-sm-10 {
        flex: 0 0 calc(83.333333% - (var(--grid-gap) / 2));
        max-width: calc(83.333333% - (var(--grid-gap) / 2));
    }

    .col-sm-11 {
        flex: 0 0 calc(91.666667% - (var(--grid-gap) / 2));
        max-width: calc(91.666667% - (var(--grid-gap) / 2));
    }

    .col-sm-12 {
        flex: 0 0 100%;
        max-width: 100%;
    }
}


/* =========================================================
   MD - 768px
   ========================================================= */

@media (min-width: 768px) {

    .col-md-1 {
        flex: 0 0 calc(8.333333% - (var(--grid-gap) * 11 / 12));
        max-width: calc(8.333333% - (var(--grid-gap) * 11 / 12));
    }

    .col-md-2 {
        flex: 0 0 calc(16.666667% - (var(--grid-gap) * 5 / 6));
        max-width: calc(16.666667% - (var(--grid-gap) * 5 / 6));
    }

    .col-md-3 {
        flex: 0 0 calc(25% - (var(--grid-gap) * 3 / 4));
        max-width: calc(25% - (var(--grid-gap) * 3 / 4));
    }

    .col-md-4 {
        flex: 0 0 calc(33.333333% - (var(--grid-gap) * 2 / 3));
        max-width: calc(33.333333% - (var(--grid-gap) * 2 / 3));
    }

    .col-md-5 {
        flex: 0 0 calc(41.666667% - (var(--grid-gap) * 5 / 6));
        max-width: calc(41.666667% - (var(--grid-gap) * 5 / 6));
    }

    .col-md-6 {
        flex: 0 0 calc(50% - (var(--grid-gap) / 2));
        max-width: calc(50% - (var(--grid-gap) / 2));
    }

    .col-md-7 {
        flex: 0 0 calc(58.333333% - (var(--grid-gap) / 2));
        max-width: calc(58.333333% - (var(--grid-gap) / 2));
    }

    .col-md-8 {
        flex: 0 0 calc(66.666667% - (var(--grid-gap) / 2));
        max-width: calc(66.666667% - (var(--grid-gap) / 2));
    }

    .col-md-9 {
        flex: 0 0 calc(75% - (var(--grid-gap) / 2));
        max-width: calc(75% - (var(--grid-gap) / 2));
    }

    .col-md-10 {
        flex: 0 0 calc(83.333333% - (var(--grid-gap) / 2));
        max-width: calc(83.333333% - (var(--grid-gap) / 2));
    }

    .col-md-11 {
        flex: 0 0 calc(91.666667% - (var(--grid-gap) / 2));
        max-width: calc(91.666667% - (var(--grid-gap) / 2));
    }

    .col-md-12 {
        flex: 0 0 100%;
        max-width: 100%;
    }
}


/* =========================================================
   LG - 992px
   ========================================================= */

@media (min-width: 992px) {

    .col-lg-1 {
        flex: 0 0 calc(8.333333% - (var(--grid-gap) * 11 / 12));
        max-width: calc(8.333333% - (var(--grid-gap) * 11 / 12));
    }

    .col-lg-2 {
        flex: 0 0 calc(16.666667% - (var(--grid-gap) * 5 / 6));
        max-width: calc(16.666667% - (var(--grid-gap) * 5 / 6));
    }

    .col-lg-3 {
        flex: 0 0 calc(25% - (var(--grid-gap) * 3 / 4));
        max-width: calc(25% - (var(--grid-gap) * 3 / 4));
    }

    .col-lg-4 {
        flex: 0 0 calc(33.333333% - (var(--grid-gap) * 2 / 3));
        max-width: calc(33.333333% - (var(--grid-gap) * 2 / 3));
    }

    .col-lg-5 {
        flex: 0 0 calc(41.666667% - (var(--grid-gap) * 5 / 6));
        max-width: calc(41.666667% - (var(--grid-gap) * 5 / 6));
    }

    .col-lg-6 {
        flex: 0 0 calc(50% - (var(--grid-gap) / 2));
        max-width: calc(50% - (var(--grid-gap) / 2));
    }

    .col-lg-7 {
        flex: 0 0 calc(58.333333% - (var(--grid-gap) / 2));
        max-width: calc(58.333333% - (var(--grid-gap) / 2));
    }

    .col-lg-8 {
        flex: 0 0 calc(66.666667% - (var(--grid-gap) / 2));
        max-width: calc(66.666667% - (var(--grid-gap) / 2));
    }

    .col-lg-9 {
        flex: 0 0 calc(75% - (var(--grid-gap) / 2));
        max-width: calc(75% - (var(--grid-gap) / 2));
    }

    .col-lg-10 {
        flex: 0 0 calc(83.333333% - (var(--grid-gap) / 2));
        max-width: calc(83.333333% - (var(--grid-gap) / 2));
    }

    .col-lg-11 {
        flex: 0 0 calc(91.666667% - (var(--grid-gap) / 2));
        max-width: calc(91.666667% - (var(--grid-gap) / 2));
    }

    .col-lg-12 {
        flex: 0 0 100%;
        max-width: 100%;
    }
}


/* =========================================================
   XL - 1200px
   ========================================================= */

@media (min-width: 1200px) {

    .col-xl-1 {
        flex: 0 0 calc(8.333333% - (var(--grid-gap) * 11 / 12));
        max-width: calc(8.333333% - (var(--grid-gap) * 11 / 12));
    }

    .col-xl-2 {
        flex: 0 0 calc(16.666667% - (var(--grid-gap) * 5 / 6));
        max-width: calc(16.666667% - (var(--grid-gap) * 5 / 6));
    }

    .col-xl-3 {
        flex: 0 0 calc(25% - (var(--grid-gap) * 3 / 4));
        max-width: calc(25% - (var(--grid-gap) * 3 / 4));
    }

    .col-xl-4 {
        flex: 0 0 calc(33.333333% - (var(--grid-gap) * 2 / 3));
        max-width: calc(33.333333% - (var(--grid-gap) * 2 / 3));
    }

    .col-xl-5 {
        flex: 0 0 calc(41.666667% - (var(--grid-gap) * 5 / 6));
        max-width: calc(41.666667% - (var(--grid-gap) * 5 / 6));
    }

    .col-xl-6 {
        flex: 0 0 calc(50% - (var(--grid-gap) / 2));
        max-width: calc(50% - (var(--grid-gap) / 2));
    }

    .col-xl-7 {
        flex: 0 0 calc(58.333333% - (var(--grid-gap) / 2));
        max-width: calc(58.333333% - (var(--grid-gap) / 2));
    }

    .col-xl-8 {
        flex: 0 0 calc(66.666667% - (var(--grid-gap) / 2));
        max-width: calc(66.666667% - (var(--grid-gap) / 2));
    }

    .col-xl-9 {
        flex: 0 0 calc(75% - (var(--grid-gap) / 2));
        max-width: calc(75% - (var(--grid-gap) / 2));
    }

    .col-xl-10 {
        flex: 0 0 calc(83.333333% - (var(--grid-gap) / 2));
        max-width: calc(83.333333% - (var(--grid-gap) / 2));
    }

    .col-xl-11 {
        flex: 0 0 calc(91.666667% - (var(--grid-gap) / 2));
        max-width: calc(91.666667% - (var(--grid-gap) / 2));
    }

    .col-xl-12 {
        flex: 0 0 100%;
        max-width: 100%;
    }
}


/* =========================================================
   XXL - 1400px
   ========================================================= */

@media (min-width: 1400px) {

    .col-xxl-1 {
        flex: 0 0 calc(8.333333% - (var(--grid-gap) * 11 / 12));
        max-width: calc(8.333333% - (var(--grid-gap) * 11 / 12));
    }

    .col-xxl-2 {
        flex: 0 0 calc(16.666667% - (var(--grid-gap) * 5 / 6));
        max-width: calc(16.666667% - (var(--grid-gap) * 5 / 6));
    }

    .col-xxl-3 {
        flex: 0 0 calc(25% - (var(--grid-gap) * 3 / 4));
        max-width: calc(25% - (var(--grid-gap) * 3 / 4));
    }

    .col-xxl-4 {
        flex: 0 0 calc(33.333333% - (var(--grid-gap) * 2 / 3));
        max-width: calc(33.333333% - (var(--grid-gap) * 2 / 3));
    }

    .col-xxl-5 {
        flex: 0 0 calc(41.666667% - (var(--grid-gap) * 5 / 6));
        max-width: calc(41.666667% - (var(--grid-gap) * 5 / 6));
    }

    .col-xxl-6 {
        flex: 0 0 calc(50% - (var(--grid-gap) / 2));
        max-width: calc(50% - (var(--grid-gap) / 2));
    }

    .col-xxl-7 {
        flex: 0 0 calc(58.333333% - (var(--grid-gap) / 2));
        max-width: calc(58.333333% - (var(--grid-gap) / 2));
    }

    .col-xxl-8 {
        flex: 0 0 calc(66.666667% - (var(--grid-gap) / 2));
        max-width: calc(66.666667% - (var(--grid-gap) / 2));
    }

    .col-xxl-9 {
        flex: 0 0 calc(75% - (var(--grid-gap) / 2));
        max-width: calc(75% - (var(--grid-gap) / 2));
    }

    .col-xxl-10 {
        flex: 0 0 calc(83.333333% - (var(--grid-gap) / 2));
        max-width: calc(83.333333% - (var(--grid-gap) / 2));
    }

    .col-xxl-11 {
        flex: 0 0 calc(91.666667% - (var(--grid-gap) / 2));
        max-width: calc(91.666667% - (var(--grid-gap) / 2));
    }

    .col-xxl-12 {
        flex: 0 0 100%;
        max-width: 100%;
    }
}