@mixin responsive-visibility($parent) {
  #{$parent} {
    display: block !important;
  }
  table#{$parent} {
    display: table !important;
  }
  tr#{$parent} {
    display: table-row !important;
  }
  th#{$parent},
  td#{$parent} {
    display: table-cell !important;
  }
}

@mixin responsive-invisibility($parent) {
  #{$parent} {
    display: none !important;
  }
}

@include responsive-invisibility(".fr-visible-xs");
@include responsive-invisibility(".fr-visible-sm");
@include responsive-invisibility(".fr-visible-md");
@include responsive-invisibility(".fr-visible-lg");
.fr-visible-xs-block,
.fr-visible-xs-inline,
.fr-visible-xs-inline-block,
.fr-visible-sm-block,
.fr-visible-sm-inline,
.fr-visible-sm-inline-block,
.fr-visible-md-block,
.fr-visible-md-inline,
.fr-visible-md-inline-block,
.fr-visible-lg-block,
.fr-visible-lg-inline,
.fr-visible-lg-inline-block {
  display: none !important;
}

@media (max-width: 767px) {
  @include responsive-visibility(".fr-visible-xs");
}

.fr-visible-xs-block {
  @media (max-width: 767px) {
    display: block !important;
  }
}

.fr-visible-xs-inline {
  @media (max-width: 767px) {
    display: inline !important;
  }
}

.fr-visible-xs-inline-block {
  @media (max-width: 767px) {
    display: inline-block !important;
  }
}

@media (min-width: 767px) and (max-width: 991px) {
  @include responsive-visibility(".fr-visible-sm");
}

.fr-visible-sm-block {
  @media (min-width: 767px) and (max-width: 991px) {
    display: block !important;
  }
}

.fr-visible-sm-inline {
  @media (min-width: 767px) and (max-width: 991px) {
    display: inline !important;
  }
}

.fr-visible-sm-inline-block {
  @media (min-width: 767px) and (max-width: 991px) {
    display: inline-block !important;
  }
}

@media (min-width: 992px) and (max-width: 1999px) {
  @include responsive-visibility(".fr-visible-md");
}

.fr-visible-md-block {
  @media (min-width: 992px) and (max-width: 1999px) {
    display: block !important;
  }
}

.fr-visible-md-inline {
  @media (min-width: 992px) and (max-width: 1999px) {
    display: inline !important;
  }
}

.fr-visible-md-inline-block {
  @media (min-width: 992px) and (max-width: 1999px) {
    display: inline-block !important;
  }
}

@media (min-width: 1200px) {
  @include responsive-visibility(".fr-visible-lg");
}

.fr-visible-lg-block {
  @media (min-width: 1200px) {
    display: block !important;
  }
}

.fr-visible-lg-inline {
  @media (min-width: 1200px) {
    display: inline !important;
  }
}

.fr-visible-lg-inline-block {
  @media (min-width: 1200px) {
    display: inline-block !important;
  }
}

@media (max-width: 767px) {
  @include responsive-invisibility(".fr-hidden-xs");
}

@media (min-width: 767px) and (max-width: 991px) {
  @include responsive-invisibility(".fr-hidden-sm");
}

@media (min-width: 992px) and (max-width: 1999px) {
  @include responsive-invisibility(".fr-hidden-md");
}

@media (min-width: 1200px) {
  @include responsive-invisibility(".fr-hidden-lg");
}

// Print utilities
//
// Media queries are placed on the inside to be mixin-friendly.
// Note: Deprecated .visible-print as of v3.2.0
@include responsive-invisibility(".fr-visible-print");
@media print {
  @include responsive-visibility(".fr-visible-print");
}

.fr-visible-print-block {
  display: none !important;
  @media print {
    display: block !important;
  }
}

.fr-visible-print-inline {
  display: none !important;
  @media print {
    display: inline !important;
  }
}

.fr-visible-print-inline-block {
  display: none !important;
  @media print {
    display: inline-block !important;
  }
}

@media print {
  @include responsive-invisibility(".fr-hidden-print");
}
