.grid-container,
.grid-container-fluid {
  display: grid;
  grid-template-columns: repeat(map-deep-get($grid, 'base', 'column', 'count'), minmax(map-deep-get($grid, 'base', 'column', 'width', 'min'), map-deep-get($grid, 'base', 'column', 'width', 'max')));
  justify-content: center;
  align-content: flex-start;
  margin: 0 auto;
  max-width: map-deep-get($grid, 'base', 'container', 'width');
  grid-column-gap: map-deep-get($grid, 'base', 'column', 'gap');
  padding: map-deep-get($grid, 'base', 'container', 'padding', 'y') map-deep-get($grid, 'base', 'container', 'padding', 'x');
  width: 100%;
  height: 100vh;
}

.grid-container {
  @each $breakpoint in map-deep-get($grid, 'media', 'breakpoint') {
    @media screen and (max-width: map-deep-get($grid, 'media', $breakpoint, 'max-width')) {
      grid-template-columns: repeat(map-deep-get($grid, 'media', $breakpoint, 'column', 'count'), minmax(map-deep-get($grid, 'media', $breakpoint, 'column', 'width', 'min'), map-deep-get($grid, 'media', $breakpoint, 'column', 'width', 'max')));
      grid-column-gap: map-deep-get($grid, 'media', $breakpoint, 'column', 'gap');
      max-width: map-deep-get($grid, 'media', $breakpoint, 'container', 'width');
      padding: map-deep-get($grid, 'media', $breakpoint, 'container', 'padding', 'y') map-deep-get($grid, 'media', $breakpoint, 'container', 'padding', 'x');
    }
  }
}

.grid-container-fluid {
  max-width: 100%;
  width: 100%;
  padding: 0;

  @each $breakpoint in map-deep-get($grid, 'media', 'breakpoint') {
    @media screen and (max-width: map-deep-get($grid, 'media', $breakpoint, 'max-width')) {
      grid-template-columns: repeat(map-deep-get($grid, 'media', $breakpoint, 'column', 'count'), minmax(map-deep-get($grid, 'media', $breakpoint, 'column', 'width', 'min'), map-deep-get($grid, 'media', $breakpoint, 'column', 'width', 'max')));
      grid-column-gap: map-deep-get($grid, 'media', $breakpoint, 'column', 'gap');
    }
  }
}
