(** State variants and pseudo-classes *) (** Variant modifier *) type t (** Pseudo-class states *) type pseudo = [ | `Hover | `Focus | `Focus_within | `Focus_visible | `Active | `Visited | `Target | `Disabled | `Enabled | `Checked | `Indeterminate | `Default | `Required | `Valid | `Invalid | `In_range | `Out_of_range | `Placeholder_shown | `Autofill | `Read_only ] (** Pseudo-element states *) type pseudo_element = [ | `Before | `After | `First_line | `First_letter | `Marker | `Selection | `File | `Backdrop | `Placeholder ] (** Structural pseudo-classes *) type structural = [ | `First | `Last | `Only | `Odd | `Even | `First_of_type | `Last_of_type | `Only_of_type | `Empty | `Root | `Nth of int | `Nth_last of int ] (** Group and peer variants *) type group = [ | `Group of pseudo | `Peer of pseudo ] (** Special variants *) type special = [ | `Not of pseudo | `Has of string | `Where of string | `Is of string | `Starting_style | `Inert | `Open | `In of string ] (** Apply pseudo-class variant *) val pseudo : pseudo -> Css.t -> t (** Apply pseudo-element variant *) val pseudo_element : pseudo_element -> Css.t -> t (** Apply structural variant *) val structural : structural -> Css.t -> t (** Apply group variant *) val group : group -> Css.t -> t (** Apply special variant *) val special : special -> Css.t -> t (** Convert to CSS class *) val to_class : t -> Css.t (** Apply variant to classes *) val apply : t -> Css.t -> Css.t (** Common variants *) val hover : Css.t -> Css.t val focus : Css.t -> Css.t val active : Css.t -> Css.t val disabled : Css.t -> Css.t val first : Css.t -> Css.t val last : Css.t -> Css.t val odd : Css.t -> Css.t val even : Css.t -> Css.t val starting_style : Css.t -> Css.t