/*
 * Abastible Design System - CSS Grid
 */

:root {
  /* Design Tokens */
  --abs-container-max-width: 1440px;

  /* Gutters (Gap between columns) */
  --abs-gutter-xs: 16px;
  --abs-gutter-md: 32px;
  --abs-gutter-lg: 32px;

  /* Container Lateral Margins (Implemented as Padding) */
  --abs-container-margin-xs: 16px;
  --abs-container-margin-md: 32px;
  --abs-container-margin-lg: 128px;
}

/* Reset Box Sizing inside grid */
.container,
.container-fluid,
.full-width,
.row,
[class^="col-"] {
  box-sizing: border-box;
}

/* 
 * Containers
 */
.container {
  width: 100%;
  max-width: var(--abs-container-max-width);
  margin-right: auto;
  margin-left: auto;
  padding-right: var(--abs-container-margin-xs);
  padding-left: var(--abs-container-margin-xs);
}

.container-fluid,
.full-width {
  width: 100%;
  margin-right: auto;
  margin-left: auto;
  padding-right: 0;
  padding-left: 0;
}

/* 
 * Row
 */
.row {
  display: flex;
  flex-wrap: wrap;
  margin-right: calc(var(--abs-gutter-xs) / -2);
  margin-left: calc(var(--abs-gutter-xs) / -2);
}

.row > * {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--abs-gutter-xs) / 2);
  padding-left: calc(var(--abs-gutter-xs) / 2);
}

/*
 * Breakpoints overrides for Containers and Rows
 */
@media (min-width: 1024px) {
  .container {
    padding-right: var(--abs-container-margin-md);
    padding-left: var(--abs-container-margin-md);
  }
  .row {
    margin-right: calc(var(--abs-gutter-md) / -2);
    margin-left: calc(var(--abs-gutter-md) / -2);
  }
  .row > * {
    padding-right: calc(var(--abs-gutter-md) / 2);
    padding-left: calc(var(--abs-gutter-md) / 2);
  }
}

@media (min-width: 1366px) {
  .container {
    padding-right: var(--abs-container-margin-lg);
    padding-left: var(--abs-container-margin-lg);
  }
  .row {
    margin-right: calc(var(--abs-gutter-lg) / -2);
    margin-left: calc(var(--abs-gutter-lg) / -2);
  }
  .row > * {
    padding-right: calc(var(--abs-gutter-lg) / 2);
    padding-left: calc(var(--abs-gutter-lg) / 2);
  }
}

/*
 * Column Definitions
 */

/* Mobile Base (0 - 1023px): 4 Columns */
.col-1,
.col-xs-1 {
  flex: 0 0 25%;
  max-width: 25%;
}
.col-2,
.col-xs-2 {
  flex: 0 0 50%;
  max-width: 50%;
}
.col-3,
.col-xs-3 {
  flex: 0 0 75%;
  max-width: 75%;
}
.col-4,
.col-xs-4 {
  flex: 0 0 100%;
  max-width: 100%;
}

/* Tablet (1024px - 1365px): 8 Columns */
@media (min-width: 1024px) {
  .col-md-1 {
    flex: 0 0 12.5%;
    max-width: 12.5%;
  }
  .col-md-2 {
    flex: 0 0 25%;
    max-width: 25%;
  }
  .col-md-3 {
    flex: 0 0 37.5%;
    max-width: 37.5%;
  }
  .col-md-4 {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .col-md-5 {
    flex: 0 0 62.5%;
    max-width: 62.5%;
  }
  .col-md-6 {
    flex: 0 0 75%;
    max-width: 75%;
  }
  .col-md-7 {
    flex: 0 0 87.5%;
    max-width: 87.5%;
  }
  .col-md-8 {
    flex: 0 0 100%;
    max-width: 100%;
  }
  .col-md {
    flex: 1 1 0%;
    max-width: 100%;
  }
}

/* Desktop (1366px and up): 12 Columns */
@media (min-width: 1366px) {
  .col-lg-1 {
    flex: 0 0 8.333333%;
    max-width: 8.333333%;
  }
  .col-lg-2 {
    flex: 0 0 16.666667%;
    max-width: 16.666667%;
  }
  .col-lg-3 {
    flex: 0 0 25%;
    max-width: 25%;
  }
  .col-lg-4 {
    flex: 0 0 33.333333%;
    max-width: 33.333333%;
  }
  .col-lg-5 {
    flex: 0 0 41.666667%;
    max-width: 41.666667%;
  }
  .col-lg-6 {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .col-lg-7 {
    flex: 0 0 58.333333%;
    max-width: 58.333333%;
  }
  .col-lg-8 {
    flex: 0 0 66.666667%;
    max-width: 66.666667%;
  }
  .col-lg-9 {
    flex: 0 0 75%;
    max-width: 75%;
  }
  .col-lg-10 {
    flex: 0 0 83.333333%;
    max-width: 83.333333%;
  }
  .col-lg-11 {
    flex: 0 0 91.666667%;
    max-width: 91.666667%;
  }
  .col-lg-12 {
    flex: 0 0 100%;
    max-width: 100%;
  }
  .col-lg {
    flex: 1 1 0%;
    max-width: 100%;
  }
}
