@@ -3724,12 +3724,12 @@ fn attrs_to_css(
37243724 "type" | "placeholder" | "name" | "value" | "disabled" | "required" | "checked"
37253725 | "for" | "action" | "method" | "autocomplete" | "min" | "max" | "step" | "pattern"
37263726 | "maxlength" | "rows" | "cols" | "multiple" | "alt" | "role" | "tabindex"
3727− | "title" | "controls" | "autoplay" | "loop" | "muted" | "playsinline" | "poster" | "preload"
3728− | "loading" | "decoding" | "ordered" | "src" | "open" | "novalidate" | "low"
3729− | "high" | "optimum" | "colspan" | "rowspan" | "scope" | "inline" | "responsive"
3730− | "datetime" | "media" | "sizes" | "srcset" | "cite" | "list" | "sandbox" | "allow"
3731− | "allowfullscreen" | "referrerpolicy" | "formaction" | "formmethod" | "formtarget"
3732− | "target" | "autofocus" => {}
3727+ | "title" | "controls" | "autoplay" | "loop" | "muted" | "playsinline" | "poster"
3728+ | "preload" | "loading" | "decoding" | "ordered" | "src" | "open" | "novalidate"
3729+ | "low" | "high" | "optimum" | "colspan" | "rowspan" | "scope" | "inline"
3730+ | "responsive" | "datetime" | "media" | "sizes" | "srcset" | "cite" | "list"
3731+ | "sandbox" | "allow" | "allowfullscreen" | "referrerpolicy" | "formaction"
3732+ | "formmethod" | "formtarget" | "target" | "autofocus" => {}
37333733
37343734 _ => {}
37353735 }
@@ -3795,17 +3795,11 @@ fn substitute_css_vars(css: &str, vars: &[(String, String)]) -> String {
37953795
37963796 let is_boundary_before = |b: Option<u8>| match b {
37973797 None => true,
3798− Some(c) => matches!(
3799− c,
3800− b':' | b' ' | b',' | b'(' | b';' | b'{' | b'\n' | b'\t'
3801− ),
3798+ Some(c) => matches!(c, b':' | b' ' | b',' | b'(' | b';' | b'{' | b'\n' | b'\t'),
38023799 };
38033800 let is_boundary_after = |b: Option<u8>| match b {
38043801 None => true,
3805− Some(c) => matches!(
3806− c,
3807− b';' | b'}' | b',' | b' ' | b')' | b'\n' | b'\t'
3808− ),
3802+ Some(c) => matches!(c, b';' | b'}' | b',' | b' ' | b')' | b'\n' | b'\t'),
38093803 };
38103804
38113805 let bytes = css.as_bytes();
@@ -3920,16 +3914,10 @@ fn auto_extract_repeats(
39203914 // two-digit indices, which only affects very large extraction counts.
39213915 let existing: std::collections::HashSet<&str> =
39223916 existing_vars.iter().map(|(n, _)| n.as_str()).collect();
3923− let mut candidates: Vec<(String, usize)> = counts
3924− .into_iter()
3925− .filter(|(_, n)| *n >= 2)
3926− .collect();
3917+ let mut candidates: Vec<(String, usize)> =
3918+ counts.into_iter().filter(|(_, n)| *n >= 2).collect();
39273919 // Stable, deterministic ordering — longest values first, tiebreak by text.
3928− candidates.sort_by(|a, b| {
3929− b.0.len()
3930− .cmp(&a.0.len())
3931− .then_with(|| a.0.cmp(&b.0))
3932− });
3920+ candidates.sort_by(|a, b| b.0.len().cmp(&a.0.len()).then_with(|| a.0.cmp(&b.0)));
39333921
39343922 let mut extracted: Vec<(String, String)> = Vec::new();
39353923 let mut next_idx: usize = 0;