@use "sass:math";

.ui-grid {
  &-container {
    width: 90%;
    min-width: 288px;
    max-width: 1024px;
    margin: 0 auto;

    @include ui-from($ui-bp-desktop) {
      & {
        width: 95%;
      }
    }

    &--flush-mobile-and-tablet {
      @include ui-to($ui-bp-desktop) {
        width: 100%;
        margin-right: 0;
        margin-left: 0;
      }
    }
  }

  &-overlay {
    z-index: 999999;

    pointer-events: none;
  }

  &-col {
    display: block;
    flex: 1 1 0%;
    padding: 0.75rem;
  }

  &--flush {
    margin: 0;
  }

  &--compressed {
    > .ui-grid-col {
      padding: 0.33rem;
    }
    margin-top: -0.33rem;
    margin-right: -0.33rem;

    margin-left: -0.33rem;

    &:last-child {
      margin-bottom: -0.33rem;
    }

    &:not(:last-child) {
      margin-bottom: 0.33rem;
    }
  }

  &--valign-center > .ui-grid-col {
    align-self: center;
  }

  &--gapless {
    margin-top: 0;
    margin-right: 0;
    margin-left: 0;

    &:last-child {
      margin-bottom: 0;
    }

    &:not(:last-child) {
      margin-bottom: 1.5rem;
    }

    & > .ui-grid-col {
      margin: 0;
      padding: 0;
    }
  }

  &.is-mobile > .ui-grid-col.is-narrow {
    flex: none;
  }

  &.is-mobile > .ui-grid-col.is-full {
    flex: none;
    width: 100%;
  }

  &.is-mobile > .ui-grid-col.is-three-quarters {
    flex: none;
    width: 75%;
  }

  &.is-mobile > .ui-grid-col.is-two-thirds {
    flex: none;
    width: 66.6666%;
  }

  &.is-mobile > .ui-grid-col.is-half {
    flex: none;
    width: 50%;
  }

  &.is-mobile > .ui-grid-col.is-one-third {
    flex: none;
    width: 33.3333%;
  }

  &.is-mobile > .ui-grid-col.is-one-quarter {
    flex: none;
    width: 25%;
  }

  &.is-mobile > .ui-grid-col.is-offset-three-quarters {
    margin-left: 75%;
  }

  &.is-mobile > .ui-grid-col.is-offset-two-thirds {
    margin-left: 66.6666%;
  }

  &.is-mobile > .ui-grid-col.is-offset-half {
    margin-left: 50%;
  }

  &.is-mobile > .ui-grid-col.is-offset-one-third {
    margin-left: 33.3333%;
  }

  &.is-mobile > .ui-grid-col.is-offset-one-quarter {
    margin-left: 25%;
  }

  @for $i from 1 through 12 {
    &.is-mobile > .ui-grid-col.is-#{$i} {
      flex: none;
      width: math.div($i, 12) * 100%;
    }

    &.is-mobile > .ui-grid-col.is-offset-#{$i} {
      margin-left: math.div($i, 12) * 100%;
    }
  }

  .ui-grid-col.is-narrow-mobile {
    flex: none;
  }

  .ui-grid-col.is-full-mobile {
    flex: none;
    width: 100%;
  }

  .ui-grid-col.is-three-quarters-mobile {
    flex: none;
    width: 75%;
  }

  .ui-grid-col.is-two-thirds-mobile {
    flex: none;
    width: 66.6666%;
  }

  .ui-grid-col.is-half-mobile {
    flex: none;
    width: 50%;
  }

  .ui-grid-col.is-one-third-mobile {
    flex: none;
    width: 33.3333%;
  }

  .ui-grid-col.is-one-quarter-mobile {
    flex: none;
    width: 25%;
  }

  .ui-grid-col.is-offset-three-quarters-mobile {
    margin-left: 75%;
  }

  .ui-grid-col.is-offset-two-thirds-mobile {
    margin-left: 66.6666%;
  }

  .ui-grid-col.is-offset-half-mobile {
    margin-left: 50%;
  }

  .ui-grid-col.is-offset-one-third-mobile {
    margin-left: 33.3333%;
  }

  .ui-grid-col.is-offset-one-quarter-mobile {
    margin-left: 25%;
  }

  @for $i from 0 through 12 {
    @if ($i != 0) {
      .ui-grid-col.is-#{$i}-mobile {
        flex: none;
        width: math.div($i, 12) * 100%;
      }
    }

    .ui-grid-col.is-offset-#{$i}-mobile {
      margin-left: math.div($i, 12) * 100%;
    }
  }

  @include ui-from($ui-bp-tablet) {
    .ui-grid-col.is-narrow,
    .ui-grid-col.is-narrow-tablet {
      flex: none;
    }

    .ui-grid-col.is-full,
    .ui-grid-col.is-full-tablet {
      flex: none;
      width: 100%;
    }

    .ui-grid-col.is-three-quarters,
    .ui-grid-col.is-three-quarters-tablet {
      flex: none;
      width: 75%;
    }

    .ui-grid-col.is-two-thirds,
    .ui-grid-col.is-two-thirds-tablet {
      flex: none;
      width: 66.6666%;
    }

    .ui-grid-col.is-half,
    .ui-grid-col.is-half-tablet {
      flex: none;
      width: 50%;
    }

    .ui-grid-col.is-one-third,
    .ui-grid-col.is-one-third-tablet {
      flex: none;
      width: 33.3333%;
    }

    .ui-grid-col.is-one-quarter,
    .ui-grid-col.is-one-quarter-tablet {
      flex: none;
      width: 25%;
    }

    .ui-grid-col.is-offset-three-quarters,
    .ui-grid-col.is-offset-three-quarters-tablet {
      margin-left: 75%;
    }

    .ui-grid-col.is-offset-two-thirds,
    .ui-grid-col.is-offset-two-thirds-tablet {
      margin-left: 66.6666%;
    }

    .ui-grid-col.is-offset-half,
    .ui-grid-col.is-offset-half-tablet {
      margin-left: 50%;
    }

    .ui-grid-col.is-offset-one-third,
    .ui-grid-col.is-offset-one-third-tablet {
      margin-left: 33.3333%;
    }

    .ui-grid-col.is-offset-one-quarter,
    .ui-grid-col.is-offset-one-quarter-tablet {
      margin-left: 25%;
    }

    @for $i from 0 through 12 {
      @if ($i != 0) {
        .ui-grid-col.is-#{$i},
        .ui-grid-col.is-#{$i}-tablet {
          flex: none;
          width: math.div($i, 12) * 100%;
        }
      }

      .ui-grid-col.is-offset-#{$i},
      .ui-grid-col.is-offset-#{$i}-tablet {
        margin-left: math.div($i, 12) * 100%;
      }
    }
  }

  @include ui-from($ui-bp-desktop) {
    .ui-grid-col.is-narrow-desktop {
      flex: none;
    }

    .ui-grid-col.is-full-desktop {
      flex: none;
      width: 100%;
    }

    .ui-grid-col.is-three-quarters-desktop {
      flex: none;
      width: 75%;
    }

    .ui-grid-col.is-two-thirds-desktop {
      flex: none;
      width: 66.6666%;
    }

    .ui-grid-col.is-half-desktop {
      flex: none;
      width: 50%;
    }

    .ui-grid-col.is-one-third-desktop {
      flex: none;
      width: 33.3333%;
    }

    .ui-grid-col.is-one-quarter-desktop {
      flex: none;
      width: 25%;
    }

    .ui-grid-col.is-offset-three-quarters-desktop {
      margin-left: 75%;
    }

    .ui-grid-col.is-offset-two-thirds-desktop {
      margin-left: 66.6666%;
    }

    .ui-grid-col.is-offset-half-desktop {
      margin-left: 50%;
    }

    .ui-grid-col.is-offset-one-third-desktop {
      margin-left: 33.3333%;
    }

    .ui-grid-col.is-offset-one-quarter-desktop {
      margin-left: 25%;
    }

    @for $i from 0 through 12 {
      @if ($i != 0) {
        .ui-grid-col.is-#{$i}-desktop {
          flex: none;
          width: math.div($i, 12) * 100%;
        }
      }

      .ui-grid-col.is-offset-#{$i}-desktop {
        margin-left: math.div($i, 12) * 100%;
      }
    }
  }
  margin-top: -0.75rem;
  margin-right: -0.75rem;

  margin-left: -0.75rem;

  &:last-child {
    margin-bottom: -0.75rem;
  }

  &:not(:last-child) {
    margin-bottom: 0.75rem;
  }

  // Modifiers
  &.is-centered {
    justify-content: center;
  }

  &.is-grid {
    // Responsiveness
    @include ui-from($ui-bp-tablet) {
      flex-wrap: wrap;

      & > .ui-grid-col {
        width: 33.3333%;
        max-width: 33.3333%;
        padding: 0.75rem;

        & + .ui-grid-col {
          margin-left: 0;
        }
      }
    }
  }

  &.is-mobile {
    display: flex;
  }

  &.is-multiline {
    flex-wrap: wrap;
  }

  &.is-vcentered {
    align-items: center;
  }

  // Responsiveness
  @include ui-from($ui-bp-tablet) {
    &:not(.is-desktop) {
      display: flex;
    }
  }

  @include ui-from($ui-bp-desktop) {
    // Modifiers
    &.is-desktop {
      display: flex;
    }
  }
}

.app-header {
  .ui-grid-container {
    max-width: 100%;
  }
}
