/* -------------------------------------------------- */
/* ==Grillade : système de micro-grille  de KNACSS   */
/* ------------------------------------------------ */
// Grillade est directement inspiré tailwindcss.com et de ses classes utilitaires

// Les variables ci-dessous ne sont appliquées que si elles n'ont pas été renseignées
// dans le fichiers de variables de KNACSS.

@if variable_exists(grid-columns) {
  $grid-columns: $grid-columns !global;
} @else {
  $grid-columns: 6 !global;
}

@if variable_exists(gaps) {
  $gaps: $gaps !global;
} @else {
  $gaps: (
    "0": 0,
    "5": 0.313rem,
    "10": 0.625rem,
    "16": 1rem,
    "20": 1.25rem,
    "36": 2.25rem,
  ) !global;
}

@if variable_exists(breakpoints) {
  $breakpoints: $breakpoints !global;
} @else {
  $breakpoints: (
    sm: 576px,
    md: 992px,
    lg: 1330px,
  ) !global;
}

.grid {
  display: grid;
}
// grid class for each breakpoint
@each $bp, $bpv in $breakpoints {
  @media (min-width: #{$bpv}) {
    .#{$bp}\:grid {
      display: grid;
    }
  }
}

/* grid-template-columns initialisation */
@for $i from 1 through $grid-columns {
  .grid-cols-#{$i} {
    grid-template-columns: repeat(#{$i}, minmax(0, 1fr));
  }
}

/* grid-template-columns au sein des breakpoints */
@each $bp, $bpv in $breakpoints {
  @media (min-width: #{$bpv}) {
    @for $i from 1 through $grid-columns {
      .#{$bp}\:grid-cols-#{$i} {
        grid-template-columns: repeat(#{$i}, minmax(0, 1fr));
      }
    }
  }
}

/* gap initialisation */
@each $key, $value in $gaps {
  .gap-#{$key} {
    gap: $value;
  }
  .gap-x-#{$key} {
    column-gap: $value;
  }
  .gap-y-#{$key} {
    row-gap: $value;
  }
}

/* gap au sein des breakpoints */
@each $bp, $bpv in $breakpoints {
  @media (min-width: #{$bpv}) {
    @each $key, $value in $gaps {
      .#{$bp}\:gap-#{$key} {
        gap: $value;
      }
      .#{$bp}\:gap-x-#{$key} {
        column-gap: $value;
      }
      .#{$bp}\:gap-y-#{$key} {
        row-gap: $value;
      }
    }
  }
}

/* grid-items initialisation */
@for $i from 1 through $grid-columns {
  .col-start-#{$i} {
    grid-column-start: #{$i};
  }
  .col-end-#{$i} {
    grid-column-end: #{$i};
  }
  .col-span-#{$i} {
    grid-column: span #{$i} / span #{$i};
  }
  .col-span-full {
    grid-column: 1 / -1;
  }
  .row-start-#{$i} {
    grid-row-start: #{$i};
  }
  .row-end-#{$i} {
    grid-row-end: #{$i};
  }
  .row-span-#{$i} {
    grid-row: span #{$i} / span #{$i};
  }
}

/* grid-items au sein des breakpoints */
@each $bp, $bpv in $breakpoints {
  @media (min-width: #{$bpv}) {
    @for $i from 1 through $grid-columns {
      // loop for each breakpoint

      .#{$bp}\:col-start-#{$i} {
        grid-column-start: #{$i};
      }
      .#{$bp}\:col-end-#{$i} {
        grid-column-end: #{$i};
      }
      .#{$bp}\:col-span-#{$i} {
        grid-column: span #{$i} / span #{$i};
      }
      .#{$bp}\:col-span-full {
        grid-column: 1 / -1;
      }
      .#{$bp}\:row-start-#{$i} {
        grid-row-start: #{$i};
      }
      .#{$bp}\:row-end-#{$i} {
        grid-row-end: #{$i};
      }
      .#{$bp}\:row-span-#{$i} {
        grid-row: span #{$i} / span #{$i};
      }
    }
  }
}