.{_prefix}c-row {
  display: table;
  table-layout: fixed;
  width: 100%;
  font-size: 0;

  &__col {
    font-size: _base-font-size-px;
    display: table-cell;
    text-align: left;
    vertical-align: top;
  }

  &--reverse {
    direction: rtl;

    > .{_prefix}c-row__col {
      direction: ltr;
    }
  }

  for size, screen-min in _sizes {
    +_media-min(screen-min) {
      prefix = _size-prefix(size);

      &{prefix}-nowrap {
        > .{_prefix}c-row__col {
          display: table-cell;
        }
      }

      &{prefix}-left {
        text-align: left;

        > .{_prefix}c-row__col {
          display: inline-block;
        }
      }

      &{prefix}-right {
        text-align: right;

        > .{_prefix}c-row__col {
          display: inline-block;
        }
      }

      &{prefix}-center {
        text-align: center;

        > .{_prefix}c-row__col {
          display: inline-block;
        }
      }

      &{prefix}-between {
        display: block;
        text-align: justify;
        text-justify: distribute-all-lines;

        &:after {
          content: '';
          display: inline-block;
          width: 100%;
        }

        > .{_prefix}c-row__col {
          display: inline-block;
        }
      }

      &{prefix}-around {
        // Not supported.
      }

      &{prefix}-top {
        > .{_prefix}c-row__col {
          display: inline-block;
          vertical-align: top;
        }
      }

      &{prefix}-bottom {
        > .{_prefix}c-row__col {
          display: inline-block;
          vertical-align: bottom;
        }
      }

      &{prefix}-middle {
        > .{_prefix}c-row__col {
          display: inline-block;
          vertical-align: middle;
        }
      }

      &{prefix}-baseline {
        > .{_prefix}c-row__col {
          display: inline-block;
          vertical-align: baseline;
        }
      }

      &{prefix}-collapse {
        // Depending on the base style.
      }

      &{prefix}-margin {
        // Depending on the base style.
        &, &-s, &-l {
          display: block;
          width: auto;
        }
      }

      &{prefix}-fill {
        // Not supported.
        > .{_prefix}c-row__col {
          display: inline-block;
        }
      }
    }
  }
}

for size, screen-min in _sizes {
  +_media-min(screen-min) {
    prefix = _size-prefix(size);

    for max_columns in range(1, _max-columns) {
      for i in range(1, max_columns) {
        gcd = _gcd(i, max_columns);

        if (gcd == 1) {
          $_bs-item{prefix}-gcd-{i / gcd}-{max_columns / gcd} {
            display: inline-block;
            width: percentage(i / max_columns);
          }

          $_bs-item{prefix}-offset-gcd-{i / gcd}-{max_columns / gcd} {
            // Depending on the base style.
          }
        }
      }
    }

    $_bs-item{prefix}-full {
      display: inline-block;
      width: 100%;
    }

    .{_prefix}c-row__col {
      &{prefix}-auto {
        // Not supported.
      }

      &{prefix}-justify {
        // Not supported.
      }

      &{prefix}-offset-0 {
        // Depending on the base style.
      }

      &{prefix}-shrink {
        // Not supported.
      }

      &{prefix}-fit {
        display: inline-block;
        width: auto;
      }
    }
  }
}

.{_prefix}c-row__col {
  for size, screen-min in _sizes {
    +_media-min(screen-min) {
      prefix = _size-prefix(size);

      for max_columns in range(_min-columns, _max-columns) {
        for i in range(1, max_columns) {
          gcd = _gcd(i, max_columns);

          &{prefix}-{i}-{max_columns} {
            if (i != max_columns) {
              @extend $_bs-item{prefix}-gcd-{i / gcd}-{max_columns / gcd};
            } else {
              @extend $_bs-item{prefix}-full;
            }
          }

          if (i < max_columns) {
            &{prefix}-offset-{i}-{max_columns} {
              @extend $_bs-item{prefix}-offset-gcd-{i / gcd}-{max_columns / gcd};
            }
          }
        }
      }
    }
  }
}
