$deskSize: 1920 !default;
$mobileSize: 768 !default;

$considerMinimalFont: true !default;
  $minFont: 10 !default; // px
  $minFontResolution: 1280 !default; // px

@mixin attr($attr, $desk: false, $mobile: false) {
  // Considering minimal font
  @if ($considerMinimalFont and $attr == 'font-size' and type-of($desk) == 'number' and singleline_getUnitValue($desk) == false and $desk < $minFont) {
    @media (max-width: #{$minFontResolution}px) {
      #{$attr}: singleline_szGroup($minFont, $minFontResolution);
    }
  }

  @if ($desk) {
    #{$attr}: if($attr == 'font-weight', $desk, singleline_szGroup($desk)); // print desk value
  }

  @if ($mobile) {
    @media (orientation: portrait), (max-width: 768px) {
      #{$attr}: if($attr == 'font-weight', $mobile, singleline_szGroup($mobile, $mobileSize)); // print mobile value
    }
  }
}

@mixin mediaAttr($attr, $value, $resolution) {
  $valueUnit: singleline_getUnitValue($value);
  $value: if($attr == 'font-weight', $value, singleline_szGroup($value, $resolution)); // print custom value

  @if (type-of($resolution) == 'number') {
    @media (max-width: #{$resolution}) {
      #{$attr}: $value;
    }
  } @else {
    @media #{$resolution} {
      #{$attr}: $value;
    }
  }
}

@function singleline_sz($value, $resolution: $deskSize) {
  @if (type-of($value) == 'number' and singleline_getUnitValue($value) == false) {
    @return #{$value * 100 / $resolution}vw;
  } @else {
    @return $value;
  }
}

@function singleline_szGroup($args, $resolution: false) {
  $group: '';

  @each $arg in $args {
    @if ($resolution) {
      $group: $group + singleline_sz($arg, $resolution) + ' ';
    } @else {
      $group: $group + singleline_sz($arg) + ' ';
    }
  }

  @return unquote($group);
}

@function singleline_getUnitValue($value) {
  @if (type-of($value) == 'number') {
    $calc: $value * 0 + 1;
    $units: ('px', '%', 'vw', 'vh', 'vmin', 'vmax', 'em', 'rem', 'pt', 'cm', 'mm', 'in', 'pc', 'ex', 'ch');

    @each $unit in $units {
      @if quote($calc) ==  1 + $unit {
        @return $unit;
      }
    }
  }

  @return false;
}