@use 'sass:math';
@import '../abstract/_all';

//   -CONTAINERS

.container-full {
  padding-right: $padding-global;
  padding-left: $padding-global;
  margin-right: auto;
  margin-left: auto;
  position: relative;
  max-width: $container-full;

  @media (min-width: $break-sm) {
    padding-right: $padding-global;
    padding-left: $padding-global;
    width: 90%;
    max-width: nth(map-values($breakpoints), 2);
  }

  @media (min-width: $break-md) {
    width: 80%;
    max-width: nth(map-values($breakpoints), 3);
  }

  @media (min-width: $break-lg) {
    width: 80%;
    max-width: nth(map-values($breakpoints), 4);
  }
}

.container-bleed {
  padding-right: 0;
  padding-left: 0;
  margin-right: auto;
  margin-left: auto;
  position: relative;
}

.container-fluid {
  padding-right: $padding-global;
  padding-left: $padding-global;
  margin-right: auto;
  margin-left: auto;
  position: relative;
}

.container-body {
  padding-left: 16px;
  padding-right: 16px;
  @media (min-width: $break-md) {
    padding-left: 40px;
    padding-right: 40px;
  }
}

.container-1 {
  padding-right: $padding-global;
  padding-left: $padding-global;
  margin-right: auto;
  margin-left: auto;
  position: relative;
  width: 100%;
  max-width: $container;

  @media (min-width: $break-sm) {
    padding-right: $padding-global;
    padding-left: $padding-global;
    width: 90%;
    max-width: nth(map-values($breakpoints), 2);
  }

  @media (min-width: $break-md) {
    width: 80%;
    max-width: nth(map-values($breakpoints), 3);
  }

  @media (min-width: $break-lg) {
    width: 80%;
    max-width: nth(map-values($breakpoints), 4);
  }

  @media (min-width: $break-xl) {
    width: 100%;
    max-width: nth(map-values($breakpointscols), 5);
  }
}

.container-2 {
  padding-right: $padding-global;
  padding-left: $padding-global;
  margin-right: auto;
  margin-left: auto;
  position: relative;
  width: 90%;
  max-width: $container-2;
}

.container-3 {
  padding-right: 20px;
  padding-left: 20px;
  margin-right: auto;
  margin-left: auto;
  position: relative;
  width: 100%;
  max-width: $container-3;

  @media (min-width: $break-sm) {
    padding-right: 20px;
    padding-left: 20px;
  }
}

.container-4 {
  padding-right: $padding-global * 2;
  padding-left: $padding-global * 2;
  margin-right: auto;
  margin-left: auto;
  position: relative;
  width: 100%;
  max-width: $container-6;

  @media (min-width: $break-sm) {
    max-width: $container-4;
  }
}

// join life style
.container-5 {
  position: relative;
  padding: 0 $padding-global;
  margin: 0 auto;
  width: 100%;
  max-width: $container-5;

  @media (min-width: $break-lg) {
    max-width: 1000px;
    padding: 0;
  }
}

.container-6 {
  margin: 0 auto;
  padding: 0 $padding-global;
  width: 100%;
  max-width: $container-6;
}

.container-7 {
  margin: 0 auto;
  padding: 0 $padding-global * 2;
  width: 100%;
  max-width: 295px;

  @media (min-width: $break-sm) {
    max-width: 460px;
    padding-right: $padding-global;
    padding-left: $padding-global;
  }

  @media (min-width: $break-md) {
    max-width: 460px;
  }

  @media (min-width: $break-lg) {
    max-width: 595px;
  }
}

.row {
  display: flex;
  flex-wrap: wrap;
  margin-right: -$padding-global;
  margin-left: -$padding-global;

  @for $i from 2 through length($breakpointscols) {
    @media (min-width: nth(map-values($breakpointscols), $i)) {
      margin-right: -$padding-global;
      margin-left: -$padding-global;
    }
  }
}

//   -COLS

@for $i from 1 through 4 {
  @media (min-width: nth(map-values($breakpointscols), $i)) {
    @for $c from 1 through $totalCols {
      .col-#{nth(map-keys($breakpointscols), $i)}-#{$c} {
        -webkit-box-flex: 0;
        flex: 0 0 math.percentage(math.div($c, $totalCols));
        max-width: math.percentage(math.div($c, $totalCols));
      }
    }
  }
}

@for $i from 5 through $colBreakpointscols {
  @media (min-width: nth(map-values($breakpointscols), $i)) {
    @for $c from 1 through $totalColsXl {
      .col-#{nth(map-keys($breakpointscols), $i)}-#{$c} {
        -webkit-box-flex: 0;
        flex: 0 0 math.percentage(math.div($c, $totalColsXl));
        max-width: math.percentage(math.div($c, $totalColsXl));
      }
    }
  }
}

[class*='col-'] {
  box-sizing: border-box;
  position: relative;
  min-height: 1px;
  padding-right: $padding-global;
  padding-left: $padding-global;
}

.bleed {
  margin-left: -$padding-global;
  margin-right: -$padding-global;
  width: auto;
}

@include bleed(0);
@include bleed(4);
@include bleed(8);

.list-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
}

.grid-2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
}

.grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}

.colgap-16 {
  column-gap: 16px;
}
.colgap-8 {
  column-gap: 8px;
}

.grid-4 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}

.grid-gap-8 {
  gap: 8px;
}
.grid-gap-16 {
  gap: 16px;
}

.grid-8 {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  width: 100%;
  align-items: start;
  max-width: 1200px;
  margin: 0 auto;
  img {
    border: 1px solid #eaeaea;
  }
}

.grid-2-desktop {
  @media (min-width: $break-sm) {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    column-gap: 16px;
    align-items: end;
  }
}

.sm\:grid-2 {
  @media (min-width: $break-sm) {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
  }
}
.sm\:grid-4 {
  @media (min-width: $break-sm) {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
  }
}

.sm\:grid-8 {
  @media (min-width: $break-sm) {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
  }
}

.grid-auto {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
}

.sm\:grid-gap-16 {
  @media (min-width: $break-sm) {
    column-gap: 16px;
  }
}

.grid-2-wide {
  grid-column: span 2;
}

.grid-3-6-8 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  column-gap: 6px;
  max-width: 100%;

  @media (min-width: $break-md) {
    grid-template-columns: repeat(6, 1fr);
    column-gap: 16px;
  }

  @media (min-width: $break-lg) {
    grid-template-columns: repeat(8, 1fr);
    column-gap: 16px;
  }
}
