def adjust_color(color, kwargs)
      assert_type color, :Color, :color
      with = Sass::Util.map_hash(
        "red" => [-255..255, ""],
        "green" => [-255..255, ""],
        "blue" => [-255..255, ""],
        "hue" => nil,
        "saturation" => [-100..100, "%"],
        "lightness" => [-100..100, "%"],
        "alpha" => [-1..1, ""]
      ) do |name, (range, units)|
        val = kwargs.delete(name)
        next unless val
        assert_type val, :Number, name
        Sass::Util.check_range("$#{name}: Amount", range, val, units) if range
        adjusted = color.send(name) + val.value
        adjusted = [0, Sass::Util.restrict(adjusted, range)].max if range
        [name.to_sym, adjusted]
      end

      unless kwargs.empty?
        name, val = kwargs.to_a.first
        raise ArgumentError.new("Unknown argument $#{name} (#{val})")
      end

      color.with(with)
    end
def adjust_color(color, kwargs)
      assert_type color, :Color, :color
      with = Sass::Util.map_hash(
        "red" => [-255..255, ""],
        "green" => [-255..255, ""],
        "blue" => [-255..255, ""],
        "hue" => nil,
        "saturation" => [-100..100, "%"],
        "lightness" => [-100..100, "%"],
        "alpha" => [-1..1, ""]
      ) do |name, (range, units)|
        val = kwargs.delete(name)
        next unless val
        assert_type val, :Number, name
        Sass::Util.check_range("$#{name}: Amount", range, val, units) if range
        adjusted = color.send(name) + val.value
        adjusted = [0, Sass::Util.restrict(adjusted, range)].max if range
        [name.to_sym, adjusted]
      end

      unless kwargs.empty?
        name, val = kwargs.to_a.first
        raise ArgumentError.new("Unknown argument $#{name} (#{val})")
      end

      color.with(with)
    end
Increases or decreases one or more properties of a color. This can change
 the red, green, blue, hue, saturation, value, and alpha properties. The
 properties are specified as keyword arguments, and are added to or
 subtracted from the color's current value for that property.

 All properties are optional. You can't specify both RGB properties
 (`$red`, `$green`, `$blue`) and HSL properties (`$hue`, `$saturation`,
 `$value`) at the same time.

 @example
   adjust-color(#102030, $blue: 5) => #102035
   adjust-color(#102030, $red: -5, $blue: 5) => #0b2035
   adjust-color(hsl(25, 100%, 80%), $lightness: -30%, $alpha: -0.4) => hsla(25, 100%, 50%, 0.6)
 @overload adjust_color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])
   @param $color [Sass::Script::Value::Color]
   @param $red [Sass::Script::Value::Number] The adjustment to make on the
     red component, between -255 and 255 inclusive
   @param $green [Sass::Script::Value::Number] The adjustment to make on the
     green component, between -255 and 255 inclusive
   @param $blue [Sass::Script::Value::Number] The adjustment to make on the
     blue component, between -255 and 255 inclusive
   @param $hue [Sass::Script::Value::Number] The adjustment to make on the
     hue component, in degrees
   @param $saturation [Sass::Script::Value::Number] The adjustment to make on
     the saturation component, between `-100%` and `100%` inclusive
   @param $lightness [Sass::Script::Value::Number] The adjustment to make on
     the lightness component, between `-100%` and `100%` inclusive
   @param $alpha [Sass::Script::Value::Number] The adjustment to make on the
     alpha component, between -1 and 1 inclusive
 @return [Sass::Script::Value::Color]
 @raise [ArgumentError] if any parameter is the wrong type or out-of
   bounds, or if RGB properties and HSL properties are adjusted at the
   same time