diff -pruN 1.19.0-1/.rubocop.yml 1.21.1-1/.rubocop.yml
--- 1.19.0-1/.rubocop.yml	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/.rubocop.yml	2025-03-09 20:29:06.000000000 +0000
@@ -1,4 +1,5 @@
 require:
+  - rubocop-performance
   - rubocop-rake
 
 AllCops:
diff -pruN 1.19.0-1/CHANGELOG.md 1.21.1-1/CHANGELOG.md
--- 1.19.0-1/CHANGELOG.md	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/CHANGELOG.md	2025-03-09 20:29:06.000000000 +0000
@@ -2,12 +2,32 @@
 
 ### Unreleased
 
+### Version v1.21.1
+
+* Prefer `!important` rules over non-`!important` rules in the same ruleset
+* Minor performance improvements
+
+### Version v1.21.0
+
+* Minor performance improvements
+
+### Version v1.20.0
+
+* Remove `iconv` conditional require
+
+### Version v1.19.1
+
+* Fix error when parsing values consisting of `!important` only
+
+### Version v1.19.0
+
 * Deprecate `load_uri!`, `load_file!` and `load_string!` positional arguments over keyword argument
 * Deprecate `add_rule!` (positional arguments)and `add_rule_with_offsets!` for `add_rule!` (keyword argument)
 * RuleSet initialize now takes keyword argument, positional arguments are still supported but deprecated
 * Removed OffsetAwareRuleSet, it's a RuleSet with optional attributes filename and offset
 * Improved performance of block parsing by using StringScanner
 * Improve `RuleSet#parse_declarations!` performance by using substring search istead of regexps
+* Fix error when parsing values consisting of `!important` only
 
 ### Version v1.18.0
 
diff -pruN 1.19.0-1/Gemfile 1.21.1-1/Gemfile
--- 1.19.0-1/Gemfile	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/Gemfile	2025-03-09 20:29:06.000000000 +0000
@@ -12,5 +12,6 @@ gem 'maxitest'
 gem 'memory_profiler'
 gem 'rake'
 gem 'rubocop'
+gem 'rubocop-performance'
 gem 'rubocop-rake'
 gem 'webrick'
diff -pruN 1.19.0-1/Gemfile.lock 1.21.1-1/Gemfile.lock
--- 1.19.0-1/Gemfile.lock	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/Gemfile.lock	2025-03-09 20:29:06.000000000 +0000
@@ -1,7 +1,7 @@
 PATH
   remote: .
   specs:
-    css_parser (1.19.0)
+    css_parser (1.21.1)
       addressable
 
 GEM
@@ -43,6 +43,9 @@ GEM
       unicode-display_width (>= 2.4.0, < 3.0)
     rubocop-ast (1.31.2)
       parser (>= 3.3.0.4)
+    rubocop-performance (1.23.0)
+      rubocop (>= 1.48.1, < 2.0)
+      rubocop-ast (>= 1.31.1, < 2.0)
     rubocop-rake (0.6.0)
       rubocop (~> 1.0)
     ruby-progressbar (1.13.0)
@@ -61,6 +64,7 @@ DEPENDENCIES
   memory_profiler
   rake
   rubocop
+  rubocop-performance
   rubocop-rake
   webrick
 
diff -pruN 1.19.0-1/debian/changelog 1.21.1-1/debian/changelog
--- 1.19.0-1/debian/changelog	2024-09-25 19:13:12.000000000 +0000
+++ 1.21.1-1/debian/changelog	2025-11-09 17:19:05.000000000 +0000
@@ -1,3 +1,11 @@
+ruby-css-parser (1.21.1-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream release.
+  * Update Standards-Version to 4.7.2, no changes needed.
+
+ -- Simon Quigley <tsimonq2@debian.org>  Sun, 09 Nov 2025 11:19:05 -0600
+
 ruby-css-parser (1.19.0-1) unstable; urgency=medium
 
   * New upstream version 1.19.0
diff -pruN 1.19.0-1/debian/control 1.21.1-1/debian/control
--- 1.19.0-1/debian/control	2024-09-25 19:13:12.000000000 +0000
+++ 1.21.1-1/debian/control	2025-11-09 17:17:25.000000000 +0000
@@ -10,7 +10,7 @@ Build-Depends: debhelper-compat (= 13),
                ruby-maxitest,
                ruby-test-unit,
                ruby-webrick (>= 1.7.0)
-Standards-Version: 4.7.0
+Standards-Version: 4.7.2
 Vcs-Git: https://salsa.debian.org/ruby-team/ruby-css-parser.git
 Vcs-Browser: https://salsa.debian.org/ruby-team/ruby-css-parser
 Homepage: https://github.com/premailer/css_parser
diff -pruN 1.19.0-1/debian/gbp.conf 1.21.1-1/debian/gbp.conf
--- 1.19.0-1/debian/gbp.conf	1970-01-01 00:00:00.000000000 +0000
+++ 1.21.1-1/debian/gbp.conf	2025-11-09 17:16:54.000000000 +0000
@@ -0,0 +1,4 @@
+[DEFAULT]
+debian-branch = debian/latest
+upstream-branch = upstream/latest
+pristine-tar = True
diff -pruN 1.19.0-1/debian/salsa-ci.yml 1.21.1-1/debian/salsa-ci.yml
--- 1.19.0-1/debian/salsa-ci.yml	2024-09-25 19:13:12.000000000 +0000
+++ 1.21.1-1/debian/salsa-ci.yml	2025-11-09 17:16:54.000000000 +0000
@@ -1,4 +1,3 @@
 ---
 include:
-  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
-  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
+  - https://salsa.debian.org/ruby-team/meta/raw/master/salsa-ci.yml
diff -pruN 1.19.0-1/lib/css_parser/parser.rb 1.21.1-1/lib/css_parser/parser.rb
--- 1.19.0-1/lib/css_parser/parser.rb	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/lib/css_parser/parser.rb	2025-03-09 20:29:06.000000000 +0000
@@ -359,9 +359,9 @@ module CssParser
       in_at_media_rule = false
       in_media_block = false
 
-      current_selectors = String.new
-      current_media_query = String.new
-      current_declarations = String.new
+      current_selectors = +''
+      current_media_query = +''
+      current_declarations = +''
 
       # once we are in a rule, we will use this to store where we started if we are capturing offsets
       rule_start = nil
@@ -405,18 +405,19 @@ module CssParser
                 media_types: current_media_queries
               }
               if options[:capture_offsets]
-                add_rule_options.merge!(filename: options[:filename], offset: rule_start..end_offset)
+                add_rule_options[:filename] = options[:filename]
+                add_rule_options[:offset] = rule_start..end_offset
               end
               add_rule!(**add_rule_options)
             end
 
-            current_selectors = String.new
-            current_declarations = String.new
+            current_selectors = +''
+            current_declarations = +''
 
             # restart our search for selectors and declarations
             rule_start = nil if options[:capture_offsets]
           end
-        elsif token =~ /@media/i
+        elsif /@media/i.match?(token)
           # found '@media', reset current media_types
           in_at_media_rule = true
           current_media_queries = []
@@ -426,14 +427,14 @@ module CssParser
             in_at_media_rule = false
             in_media_block = true
             current_media_queries << CssParser.sanitize_media_query(current_media_query)
-            current_media_query = String.new
+            current_media_query = +''
           elsif token.include?(',')
             # new media query begins
             token.tr!(',', ' ')
             token.strip!
             current_media_query << token << ' '
             current_media_queries << CssParser.sanitize_media_query(current_media_query)
-            current_media_query = String.new
+            current_media_query = +''
           else
             token.strip!
             # special-case the ( and ) tokens to remove inner-whitespace
@@ -447,7 +448,7 @@ module CssParser
               current_media_query << token << ' '
             end
           end
-        elsif in_charset or token =~ /@charset/i
+        elsif in_charset or /@charset/i.match?(token)
           # iterate until we are out of the charset declaration
           in_charset = !token.include?(';')
         elsif !in_string && token.include?('}')
@@ -466,7 +467,7 @@ module CssParser
           current_selectors << token
 
           # mark this as the beginning of the selector unless we have already marked it
-          rule_start = start_offset if options[:capture_offsets] && rule_start.nil? && token =~ /^[^\s]+$/
+          rule_start = start_offset if options[:capture_offsets] && rule_start.nil? && /^[^\s]+$/.match?(token)
         end
       end
 
@@ -478,7 +479,8 @@ module CssParser
         media_types: current_media_queries
       }
       if options[:capture_offsets]
-        add_rule_options.merge!(filename: options[:filename], offset: rule_start..end_offset)
+        add_rule_options[:filename] = options[:filename]
+        add_rule_options[:offset] = rule_start..end_offset
       end
       add_rule!(**add_rule_options)
     end
@@ -677,12 +679,7 @@ module CssParser
         end
 
         if charset
-          if String.method_defined?(:encode)
-            src.encode!('UTF-8', charset)
-          else
-            ic = Iconv.new('UTF-8//IGNORE', charset)
-            src = ic.iconv(src)
-          end
+          src.encode!('UTF-8', charset)
         end
       rescue
         @redirect_count = nil
@@ -723,7 +720,7 @@ module CssParser
       nodes = {}
       lines.each do |line|
         parts = line.split(':', 2)
-        if parts[1] =~ /:/
+        if parts[1].include?(':')
           nodes[parts[0]] = css_node_to_h(hash, parts[0], parts[1])
         else
           nodes[parts[0].to_s.strip] = parts[1].to_s.strip
diff -pruN 1.19.0-1/lib/css_parser/rule_set.rb 1.21.1-1/lib/css_parser/rule_set.rb
--- 1.19.0-1/lib/css_parser/rule_set.rb	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/lib/css_parser/rule_set.rb	2025-03-09 20:29:06.000000000 +0000
@@ -11,8 +11,10 @@ module CssParser
     BACKGROUND_PROPERTIES = ['background-color', 'background-image', 'background-repeat', 'background-position', 'background-size', 'background-attachment'].freeze
     LIST_STYLE_PROPERTIES = ['list-style-type', 'list-style-position', 'list-style-image'].freeze
     FONT_STYLE_PROPERTIES = ['font-style', 'font-variant', 'font-weight', 'font-size', 'line-height', 'font-family'].freeze
+    FONT_WEIGHT_PROPERTIES = ['font-style', 'font-weight', 'font-variant'].freeze
     BORDER_STYLE_PROPERTIES = ['border-width', 'border-style', 'border-color'].freeze
     BORDER_PROPERTIES = ['border', 'border-left', 'border-right', 'border-top', 'border-bottom'].freeze
+    DIMENSION_DIRECTIONS = [:top, :right, :bottom, :left].freeze
 
     NUMBER_OF_DIMENSIONS = 4
 
@@ -31,6 +33,7 @@ module CssParser
     SEMICOLON = ';'.freeze
     LPAREN = '('.freeze
     RPAREN = ')'.freeze
+    IMPORTANT = '!important'.freeze
     class Declarations
       class Value
         attr_reader :value
@@ -86,17 +89,20 @@ module CssParser
       #   puts declarations['margin']
       #   => #<CssParser::RuleSet::Declarations::Value:0x00000000030c1838 @important=true, @order=2, @value="0px auto">
       #
-      # If the property already exists its value will be over-written.
+      # If the property already exists its value will be over-written unless it was !important and the new value
+      # is not !important.
       # If the value is empty - property will be deleted
       def []=(property, value)
         property = normalize_property(property)
+        currently_important = declarations[property]&.important
 
-        if value.is_a?(Value)
+        if value.is_a?(Value) && (!currently_important || value.important)
           declarations[property] = value
         elsif value.to_s.strip.empty?
           delete property
         else
-          declarations[property] = Value.new(value)
+          value = Value.new(value)
+          declarations[property] = value if !currently_important || value.important
         end
       rescue ArgumentError => e
         raise e.exception, "#{property} #{e.message}"
@@ -195,7 +201,7 @@ module CssParser
       end
 
       def to_s(options = {})
-        str = declarations.reduce(String.new) do |memo, (prop, value)|
+        str = declarations.reduce(+'') do |memo, (prop, value)|
           importance = options[:force_important] || value.important ? ' !important' : ''
           memo << "#{prop}: #{value.value}#{importance}; "
         end
@@ -454,17 +460,17 @@ module CssParser
           else
             font_props['font-family'] = m
           end
-        elsif m =~ /normal|inherit/i
-          ['font-style', 'font-weight', 'font-variant'].each do |font_prop|
+        elsif /normal|inherit/i.match?(m)
+          FONT_WEIGHT_PROPERTIES.each do |font_prop|
             font_props[font_prop] ||= m
           end
-        elsif m =~ /italic|oblique/i
+        elsif /italic|oblique/i.match?(m)
           font_props['font-style'] = m
-        elsif m =~ /small-caps/i
+        elsif /small-caps/i.match?(m)
           font_props['font-variant'] = m
-        elsif m =~ /[1-9]00$|bold|bolder|lighter/i
+        elsif /[1-9]00$|bold|bolder|lighter/i.match?(m)
           font_props['font-weight'] = m
-        elsif m =~ CssParser::FONT_UNITS_RX
+        elsif CssParser::FONT_UNITS_RX.match?(m)
           if m.include?('/')
             font_props['font-size'], font_props['line-height'] = m.split('/', 2)
           else
@@ -487,7 +493,7 @@ module CssParser
       value = declaration.value.dup
 
       replacement =
-        if value =~ CssParser::RE_INHERIT
+        if CssParser::RE_INHERIT.match?(value)
           LIST_STYLE_PROPERTIES.to_h { |key| [key, 'inherit'] }
         else
           {
@@ -553,15 +559,15 @@ module CssParser
     #
     # TODO: this is extremely similar to create_background_shorthand! and should be combined
     def create_border_shorthand! # :nodoc:
-      values = BORDER_STYLE_PROPERTIES.map do |property|
+      values = BORDER_STYLE_PROPERTIES.filter_map do |property|
         next unless (declaration = declarations[property])
         next if declaration.important
         # can't merge if any value contains a space (i.e. has multiple values)
         # we temporarily remove any spaces after commas for the check (inside rgba, etc...)
-        next if declaration.value.gsub(/,\s/, ',').strip =~ /\s/
+        next if /\s/.match?(declaration.value.gsub(/,\s/, ',').strip)
 
         declaration.value
-      end.compact
+      end
 
       return if values.size != BORDER_STYLE_PROPERTIES.size
 
@@ -578,7 +584,7 @@ module CssParser
       return if declarations.size < NUMBER_OF_DIMENSIONS
 
       DIMENSIONS.each do |property, dimensions|
-        values = [:top, :right, :bottom, :left].each_with_index.with_object({}) do |(side, index), result|
+        values = DIMENSION_DIRECTIONS.each_with_index.with_object({}) do |(side, index), result|
           next unless (declaration = declarations[dimensions[index]])
 
           result[side] = declaration.value
@@ -601,7 +607,7 @@ module CssParser
     def create_font_shorthand! # :nodoc:
       return unless FONT_STYLE_PROPERTIES.all? { |prop| declarations.key?(prop) }
 
-      new_value = String.new
+      new_value = +''
       ['font-style', 'font-variant', 'font-weight'].each do |property|
         unless declarations[property].value == 'normal'
           new_value << declarations[property].value << ' '
@@ -638,7 +644,7 @@ module CssParser
       return [:top] if values.values.uniq.count == 1
 
       # `/* top | right | bottom | left */`
-      return [:top, :right, :bottom, :left] if values[:left] != values[:right]
+      return DIMENSION_DIRECTIONS if values[:left] != values[:right]
 
       # Vertical are the same & horizontal are the same, `/* vertical | horizontal */`
       return [:top, :left] if values[:top] == values[:bottom]
@@ -667,7 +673,7 @@ module CssParser
         value = decs[(colon + 1)..]
         property.strip!
         value.strip!
-        next if property.empty? || value.empty?
+        next if property.empty? || value.empty? || value.casecmp?(IMPORTANT)
 
         add_declaration!(property, value)
         continuation = nil
diff -pruN 1.19.0-1/lib/css_parser/version.rb 1.21.1-1/lib/css_parser/version.rb
--- 1.19.0-1/lib/css_parser/version.rb	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/lib/css_parser/version.rb	2025-03-09 20:29:06.000000000 +0000
@@ -1,5 +1,5 @@
 # frozen_string_literal: true
 
 module CssParser
-  VERSION = '1.19.0'.freeze
+  VERSION = '1.21.1'.freeze
 end
diff -pruN 1.19.0-1/lib/css_parser.rb 1.21.1-1/lib/css_parser.rb
--- 1.19.0-1/lib/css_parser.rb	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/lib/css_parser.rb	2025-03-09 20:29:06.000000000 +0000
@@ -6,7 +6,6 @@ require 'net/https'
 require 'digest/md5'
 require 'zlib'
 require 'stringio'
-require 'iconv' unless String.method_defined?(:encode)
 
 require 'css_parser/version'
 require 'css_parser/rule_set'
@@ -58,7 +57,7 @@ module CssParser
     # in case called like CssParser.merge([rule_set, rule_set])
     rule_sets.flatten! if rule_sets[0].is_a?(Array)
 
-    unless rule_sets.all? { |rs| rs.is_a?(CssParser::RuleSet) }
+    unless rule_sets.all?(CssParser::RuleSet)
       raise ArgumentError, 'all parameters must be CssParser::RuleSets.'
     end
 
@@ -71,7 +70,7 @@ module CssParser
       rule_set.expand_shorthand!
 
       specificity = rule_set.specificity
-      specificity ||= rule_set.selectors.map { |s| calculate_specificity(s) }.compact.max || 0
+      specificity ||= rule_set.selectors.filter_map { |s| calculate_specificity(s) }.max || 0
 
       rule_set.each_declaration do |property, value, is_important|
         # Add the property to the list to be folded per http://www.w3.org/TR/CSS21/cascade.html#cascading-order
@@ -139,7 +138,7 @@ module CssParser
     css.gsub(URI_RX) do
       uri = Regexp.last_match(1).to_s.gsub(/["']+/, '')
       # Don't process URLs that are already absolute
-      unless uri.match(%r{^[a-z]+://}i)
+      unless uri.match?(%r{^[a-z]+://}i)
         begin
           uri = base_uri.join(uri)
         rescue
diff -pruN 1.19.0-1/test/test_css_parser_loading.rb 1.21.1-1/test/test_css_parser_loading.rb
--- 1.19.0-1/test/test_css_parser_loading.rb	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/test/test_css_parser_loading.rb	2025-03-09 20:29:06.000000000 +0000
@@ -141,7 +141,7 @@ class CssParserLoadingTests < Minitest::
     file_name = File.expand_path('fixtures/import-malformed.css', __dir__)
     @cp.load_file!(file_name)
     @cp.each_selector do |_sel, dec, _spec|
-      assert_nil dec =~ /wellformed/
+      assert_equal false, dec.include?('wellformed')
     end
   end
 
diff -pruN 1.19.0-1/test/test_css_parser_misc.rb 1.21.1-1/test/test_css_parser_misc.rb
--- 1.19.0-1/test/test_css_parser_misc.rb	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/test/test_css_parser_misc.rb	2025-03-09 20:29:06.000000000 +0000
@@ -227,47 +227,58 @@ class CssParserTests < Minitest::Test
     end
   end
 
+  def with_value_exception(&block)
+    # Raise synthetic exception to test error handling because there is no known way to cause it naturally
+    CssParser::RuleSet::Declarations::Value.stub :new, -> { raise ArgumentError.new, 'stub' }, &block
+  end
+
   def test_catching_argument_exceptions_for_add_rule
-    cp_with_exceptions = Parser.new(rule_set_exceptions: true)
-    assert_raises ArgumentError, 'background-color value is empty' do
-      cp_with_exceptions.add_rule!(selectors: 'body', block: 'background-color: !important')
-    end
+    with_value_exception do
+      cp_with_exceptions = Parser.new(rule_set_exceptions: true)
+      assert_raises ArgumentError, 'stub' do
+        cp_with_exceptions.add_rule!(selectors: 'body', block: 'background-color: blue')
+      end
 
-    cp_without_exceptions = Parser.new(rule_set_exceptions: false)
-    cp_without_exceptions.add_rule!(selectors: 'body', block: 'background-color: !important')
+      cp_without_exceptions = Parser.new(rule_set_exceptions: false)
+      cp_without_exceptions.add_rule!(selectors: 'body', block: 'background-color: blue')
+    end
   end
 
   def test_catching_argument_exceptions_for_add_rule_positional
-    cp_with_exceptions = Parser.new(rule_set_exceptions: true)
+    with_value_exception do
+      cp_with_exceptions = Parser.new(rule_set_exceptions: true)
+
+      assert_raises ArgumentError, 'stub' do
+        _, err = capture_io do
+          cp_with_exceptions.add_rule!('body', 'background-color: blue')
+        end
+        assert_includes err, "DEPRECATION"
+      end
 
-    assert_raises ArgumentError, 'background-color value is empty' do
+      cp_without_exceptions = Parser.new(rule_set_exceptions: false)
       _, err = capture_io do
-        cp_with_exceptions.add_rule!('body', 'background-color: !important')
+        cp_without_exceptions.add_rule!('body', 'background-color: blue')
       end
       assert_includes err, "DEPRECATION"
     end
-
-    cp_without_exceptions = Parser.new(rule_set_exceptions: false)
-    _, err = capture_io do
-      cp_without_exceptions.add_rule!('body', 'background-color: !important')
-    end
-    assert_includes err, "DEPRECATION"
   end
 
   def test_catching_argument_exceptions_for_add_rule_with_offsets
-    cp_with_exceptions = Parser.new(capture_offsets: true, rule_set_exceptions: true)
+    with_value_exception do
+      cp_with_exceptions = Parser.new(capture_offsets: true, rule_set_exceptions: true)
+
+      assert_raises ArgumentError, 'stub' do
+        _, err = capture_io do
+          cp_with_exceptions.add_rule_with_offsets!('body', 'background-color: blue', 'inline', 1)
+        end
+        assert_includes err, "DEPRECATION"
+      end
 
-    assert_raises ArgumentError, 'background-color value is empty' do
+      cp_without_exceptions = Parser.new(capture_offsets: true, rule_set_exceptions: false)
       _, err = capture_io do
-        cp_with_exceptions.add_rule_with_offsets!('body', 'background-color: !important', 'inline', 1)
+        cp_without_exceptions.add_rule_with_offsets!('body', 'background-color: blue', 'inline', 1)
       end
       assert_includes err, "DEPRECATION"
     end
-
-    cp_without_exceptions = Parser.new(capture_offsets: true, rule_set_exceptions: false)
-    _, err = capture_io do
-      cp_without_exceptions.add_rule_with_offsets!('body', 'background-color: !important', 'inline', 1)
-    end
-    assert_includes err, "DEPRECATION"
   end
 end
diff -pruN 1.19.0-1/test/test_merging.rb 1.21.1-1/test/test_merging.rb
--- 1.19.0-1/test/test_merging.rb	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/test/test_merging.rb	2025-03-09 20:29:06.000000000 +0000
@@ -109,6 +109,18 @@ class MergingTests < Minitest::Test
     assert_equal 'black !important;', merged['color']
   end
 
+  def test_prioritising_important_over_non_important_in_the_same_block
+    rs1 = RuleSet.new(block: 'color: black !important; color: red;')
+    merged = CssParser.merge(rs1)
+    assert_equal 'black !important;', merged['color']
+  end
+
+  def test_prioritising_two_important_declarations_in_the_same_block
+    rs1 = RuleSet.new(block: 'color: black !important; color: red !important;')
+    merged = CssParser.merge(rs1)
+    assert_equal 'red !important;', merged['color']
+  end
+
   def test_merging_multiple_important
     rs1 = RuleSet.new(block: 'color: black !important;', specificity: 1000)
     rs2 = RuleSet.new(block: 'color: red !important;', specificity: 1)
diff -pruN 1.19.0-1/test/test_rule_set.rb 1.21.1-1/test/test_rule_set.rb
--- 1.19.0-1/test/test_rule_set.rb	2024-08-23 15:17:44.000000000 +0000
+++ 1.21.1-1/test/test_rule_set.rb	2025-03-09 20:29:06.000000000 +0000
@@ -122,6 +122,12 @@ class RuleSetTests < Minitest::Test
     end
   end
 
+  def test_important_without_value
+    declarations = 'color: !important; background-color: #fff'
+    rs = RuleSet.new(selectors: '#content p, a', block: declarations)
+    assert_equal('background-color: #fff;', rs.declarations_to_s)
+  end
+
   def test_not_raised_issue68
     ok = true
     begin
