// * `--fl-grain` / `--fl-fibre`: `repeating-linear-gradient` with PIXEL stops (`0 1px, transparent
// * `--fl-band`, `--fl-rolled`, `--fl-rule-metal-bg`, `--fl-gem-sunken`, the `.fl-tab-*` pieces and
const HOVER_FACE_DARK_STOPS: &[NormalizedLinearColorStop] = &[stop(0, DARK_HT), stop(100, DARK_HB)];
let skip_label = btn.label.as_str().is_empty() && (has_icon || has_image || has_trailing_icon);
let mut label_style: Vec<CssPropertyWithConditions> = resolved_label_style.as_slice().to_vec();
CssPropertyWithConditions::simple(CssProperty::const_flex_direction(LayoutFlexDirection::Row)),
pub const FOCUS_BORDER_BOTTOM: CssPropertyWithConditions = CssPropertyWithConditions::on_focus(
pub const HOVER_BORDER_BOTTOM: CssPropertyWithConditions = CssPropertyWithConditions::on_hover(
/// * Every other type carries its own semantic colour — a Primary button is blue whichever mode the
/// app is in — so the same hover and pressed colours apply in dark mode. A neutral grey hover on