@mixin hu-responsive($class-name, $modules, $mq-scale) {
  @if (index($modules, base)) {
    .#{hu-escape-class-name("@mq-#{$mq-scale}")}--#{$class-name} {
      @content;
    }
  }

  @if (index($modules, visited)) {
    .#{hu-escape-class-name("@mq-#{$mq-scale}:visited")}--#{$class-name}:visited {
      @content;
    }
  }

  @if (index($modules, focus)) {
    #{$hu-focus-parent} .#{hu-escape-class-name("@mq-#{$mq-scale}:focus")}--#{$class-name}#{$hu-focus-pseudo} {
      @content;
    }
  }

  @if (index($modules, hover)) {
    .#{hu-escape-class-name("@mq-#{$mq-scale}:hover")}--#{$class-name}:hover {
      @content;
    }
  }

  @if (index($modules, hocus)) {
    #{$hu-focus-parent} .#{hu-escape-class-name("@mq-#{$mq-scale}:hocus")}--#{$class-name}#{$hu-focus-pseudo},
    .#{hu-escape-class-name("@mq-#{$mq-scale}:hocus")}--#{$class-name}:hover {
      @content;
    }
  }

  @if (index($modules, active)) {
    .#{hu-escape-class-name("@mq-#{$mq-scale}:active")}--#{$class-name}:active {
      @content;
    }
  }

  @if (index($modules, state)) {
    @each $state in $hu-states {
      .#{$state}.#{hu-escape-class-name("@mq-#{$mq-scale}")}-#{$state}--#{$class-name} {
        @content;
      }
    }
  }

  @if (index($modules, group-visited)) {
    .group:visited .group#{hu-escape-class-name(":visited")}__#{hu-escape-class-name("@mq-#{$mq-scale}")}--#{$class-name} {
      @content;
    }
  }

  @if (index($modules, group-focus)) {
    #{$hu-focus-parent} .group#{$hu-focus-pseudo} .group#{hu-escape-class-name(":focus")}__#{hu-escape-class-name("@mq-#{$mq-scale}")}--#{$class-name} {
      @content;
    }
  }

  @if (index($modules, group-hover)) {
    .group:hover .group#{hu-escape-class-name(":hover")}__#{hu-escape-class-name("@mq-#{$mq-scale}")}--#{$class-name} {
      @content;
    }
  }

  @if (index($modules, group-hocus)) {
    #{$hu-focus-parent} .group#{$hu-focus-pseudo} .group#{hu-escape-class-name(":hocus")}__#{hu-escape-class-name("@mq-#{$mq-scale}")}--#{$class-name},
    .group:hover .group#{hu-escape-class-name(":hocus")}__#{hu-escape-class-name("@mq-#{$mq-scale}")}--#{$class-name} {
      @content;
    }
  }

  @if (index($modules, group-state)) {
    @each $state in $hu-states {
      .group.#{$state} .group-#{$state}__#{hu-escape-class-name("@mq-#{$mq-scale}")}--#{$class-name} {
        @content;
      }
    }
  }
}
