//
// Heading font size overrides, by font family
//
@mixin font-family-heading-variant($size-ratio: 1, $font-utility-class: '') {
  $line-height: max($headings-line-height / $size-ratio, $headings-line-height-min);

  h1,
  .h1 {
    &#{$font-utility-class} {
      font-size: $font-size-h1 * $size-ratio;
      line-height: $line-height;

      @include media-breakpoint-up(md) {
        font-size: $font-size-h1-md * $size-ratio;
      }
    }
  }

  h2,
  .h2 {
    &#{$font-utility-class} {
      font-size: $font-size-h2 * $size-ratio;
      line-height: $line-height;

      @include media-breakpoint-up(md) {
        font-size: $font-size-h2-md * $size-ratio;
      }
    }
  }

  h3,
  .h3 {
    &#{$font-utility-class} {
      font-size: $font-size-h3 * $size-ratio;
      line-height: $line-height;

      @include media-breakpoint-up(md) {
        font-size: $font-size-h3-md * $size-ratio;
      }
    }
  }

  h4,
  .h4 {
    &#{$font-utility-class} {
      font-size: $font-size-h4 * $size-ratio;
      line-height: $line-height;

      @include media-breakpoint-up(md) {
        font-size: $font-size-h4-md * $size-ratio;
      }
    }
  }

  h5,
  .h5 {
    &#{$font-utility-class} {
      font-size: $font-size-h5 * $size-ratio;
      line-height: $line-height;

      @include media-breakpoint-up(md) {
        font-size: $font-size-h5-md * $size-ratio;
      }
    }
  }

  h6,
  .h6 {
    &#{$font-utility-class} {
      font-size: $font-size-h6 * $size-ratio;
      line-height: $line-height;

      @include media-breakpoint-up(md) {
        font-size: $font-size-h6-md * $size-ratio;
      }
    }
  }
}


//
// Display heading font size overrides, by font family
//
@mixin font-family-display-variant($size-ratio: 1, $font-utility-class: '') {
  $line-height: max($display-line-height / $size-ratio, $display-line-height-min);

  .display-1 {
    &#{$font-utility-class} {
      font-size: $display1-size * $size-ratio;
      line-height: $line-height - .075;

      @include media-breakpoint-up(sm) {
        font-size: $display1-size-sm * $size-ratio;
      }

      @include media-breakpoint-up(md) {
        font-size: $display1-size-md * $size-ratio;
      }
    }
  }

  .display-2 {
    &#{$font-utility-class} {
      font-size: $display2-size * $size-ratio;
      line-height: $line-height - .05;

      @include media-breakpoint-up(sm) {
        font-size: $display2-size-sm * $size-ratio;
      }

      @include media-breakpoint-up(md) {
        font-size: $display2-size-md * $size-ratio;
      }
    }
  }

  .display-3 {
    &#{$font-utility-class} {
      font-size: $display3-size * $size-ratio;
      line-height: $line-height;

      @include media-breakpoint-up(sm) {
        font-size: $display3-size-sm * $size-ratio;
      }

      @include media-breakpoint-up(md) {
        font-size: $display3-size-md * $size-ratio;
      }
    }
  }

  .display-4 {
    &#{$font-utility-class} {
      font-size: $display4-size * $size-ratio;
      line-height: $line-height;

      @include media-breakpoint-up(sm) {
        font-size: $display4-size-sm * $size-ratio;
      }

      @include media-breakpoint-up(md) {
        font-size: $display4-size-md * $size-ratio;
      }
    }
  }
}


//
// Lead text overrides, by font family
//
@mixin font-family-lead-variant($font-size-base, $font-size-md, $line-height, $font-utility-class: '') {
  .lead {
    &#{$font-utility-class} {
      font-size: $font-size-base;
      line-height: $line-height;

      @include media-breakpoint-up(md) {
        font-size: $font-size-md;
      }
    }
  }
}


//
// Blockquote text overrides, by font family
//
@mixin font-family-blockquote-variant($font-size-base, $font-size-md, $line-height, $font-utility-class: '') {
  .blockquote {
    &#{$font-utility-class} {
      font-size: $font-size-base;
      line-height: $line-height;

      @include media-breakpoint-up(md) {
        font-size: $font-size-md;
      }
    }
  }
}
