using System;

namespace Sandbox.UI;

/// <summary>
/// Auto generated container class for majority of CSS properties available.
/// </summary>
public abstract partial class BaseStyles
{	
	internal string _content;
	
	/// <summary>
	/// Represents the <c>content</c> CSS property.
	/// </summary>
	public string Content
	{
		get => _content;
		set
		{
			if ( _content == value ) return;
			_content = value;
			Dirty();
		}
	}
	
	internal Length? _width;
	
	/// <summary>
	/// Represents the <c>width</c> CSS property.
	/// </summary>
	public Length? Width
	{
		get => _width;
		set
		{
			if ( _width == value ) return;
			_width = value;
			Dirty();
		}
	}
	
	internal Length? _minwidth;
	
	/// <summary>
	/// Represents the <c>min-width</c> CSS property.
	/// </summary>
	public Length? MinWidth
	{
		get => _minwidth;
		set
		{
			if ( _minwidth == value ) return;
			_minwidth = value;
			Dirty();
		}
	}
	
	internal Length? _maxwidth;
	
	/// <summary>
	/// Represents the <c>max-width</c> CSS property.
	/// </summary>
	public Length? MaxWidth
	{
		get => _maxwidth;
		set
		{
			if ( _maxwidth == value ) return;
			_maxwidth = value;
			Dirty();
		}
	}
	
	internal Length? _height;
	
	/// <summary>
	/// Represents the <c>height</c> CSS property.
	/// </summary>
	public Length? Height
	{
		get => _height;
		set
		{
			if ( _height == value ) return;
			_height = value;
			Dirty();
		}
	}
	
	internal Length? _minheight;
	
	/// <summary>
	/// Represents the <c>min-height</c> CSS property.
	/// </summary>
	public Length? MinHeight
	{
		get => _minheight;
		set
		{
			if ( _minheight == value ) return;
			_minheight = value;
			Dirty();
		}
	}
	
	internal Length? _maxheight;
	
	/// <summary>
	/// Represents the <c>max-height</c> CSS property.
	/// </summary>
	public Length? MaxHeight
	{
		get => _maxheight;
		set
		{
			if ( _maxheight == value ) return;
			_maxheight = value;
			Dirty();
		}
	}
	
	internal Length? _left;
	
	/// <summary>
	/// Represents the <c>left</c> CSS property.
	/// </summary>
	public Length? Left
	{
		get => _left;
		set
		{
			if ( _left == value ) return;
			_left = value;
			Dirty();
		}
	}
	
	internal Length? _top;
	
	/// <summary>
	/// Represents the <c>top</c> CSS property.
	/// </summary>
	public Length? Top
	{
		get => _top;
		set
		{
			if ( _top == value ) return;
			_top = value;
			Dirty();
		}
	}
	
	internal Length? _right;
	
	/// <summary>
	/// Represents the <c>right</c> CSS property.
	/// </summary>
	public Length? Right
	{
		get => _right;
		set
		{
			if ( _right == value ) return;
			_right = value;
			Dirty();
		}
	}
	
	internal Length? _bottom;
	
	/// <summary>
	/// Represents the <c>bottom</c> CSS property.
	/// </summary>
	public Length? Bottom
	{
		get => _bottom;
		set
		{
			if ( _bottom == value ) return;
			_bottom = value;
			Dirty();
		}
	}
	
	internal float? _opacity;
	
	/// <summary>
	/// Represents the <c>opacity</c> CSS property.
	/// </summary>
	public float? Opacity
	{
		get => _opacity;
		set
		{
			if ( _opacity == value ) return;
			_opacity = value;
			Dirty();
		}
	}
	
	internal Color? _backgroundcolor;
	
	/// <summary>
	/// Represents the <c>background-color</c> CSS property.
	/// </summary>
	public Color? BackgroundColor
	{
		get => _backgroundcolor;
		set
		{
			if ( _backgroundcolor == value ) return;
			_backgroundcolor = value;
			Dirty();
		}
	}
	
	internal Length? _paddingleft;
	
	/// <summary>
	/// Represents the <c>padding-left</c> CSS property.
	/// </summary>
	public Length? PaddingLeft
	{
		get => _paddingleft;
		set
		{
			if ( _paddingleft == value ) return;
			_paddingleft = value;
			Dirty();
		}
	}
	
	internal Length? _paddingtop;
	
	/// <summary>
	/// Represents the <c>padding-top</c> CSS property.
	/// </summary>
	public Length? PaddingTop
	{
		get => _paddingtop;
		set
		{
			if ( _paddingtop == value ) return;
			_paddingtop = value;
			Dirty();
		}
	}
	
	internal Length? _paddingright;
	
	/// <summary>
	/// Represents the <c>padding-right</c> CSS property.
	/// </summary>
	public Length? PaddingRight
	{
		get => _paddingright;
		set
		{
			if ( _paddingright == value ) return;
			_paddingright = value;
			Dirty();
		}
	}
	
	internal Length? _paddingbottom;
	
	/// <summary>
	/// Represents the <c>padding-bottom</c> CSS property.
	/// </summary>
	public Length? PaddingBottom
	{
		get => _paddingbottom;
		set
		{
			if ( _paddingbottom == value ) return;
			_paddingbottom = value;
			Dirty();
		}
	}
	
	internal Length? _marginleft;
	
	/// <summary>
	/// Represents the <c>margin-left</c> CSS property.
	/// </summary>
	public Length? MarginLeft
	{
		get => _marginleft;
		set
		{
			if ( _marginleft == value ) return;
			_marginleft = value;
			Dirty();
		}
	}
	
	internal Length? _margintop;
	
	/// <summary>
	/// Represents the <c>margin-top</c> CSS property.
	/// </summary>
	public Length? MarginTop
	{
		get => _margintop;
		set
		{
			if ( _margintop == value ) return;
			_margintop = value;
			Dirty();
		}
	}
	
	internal Length? _marginright;
	
	/// <summary>
	/// Represents the <c>margin-right</c> CSS property.
	/// </summary>
	public Length? MarginRight
	{
		get => _marginright;
		set
		{
			if ( _marginright == value ) return;
			_marginright = value;
			Dirty();
		}
	}
	
	internal Length? _marginbottom;
	
	/// <summary>
	/// Represents the <c>margin-bottom</c> CSS property.
	/// </summary>
	public Length? MarginBottom
	{
		get => _marginbottom;
		set
		{
			if ( _marginbottom == value ) return;
			_marginbottom = value;
			Dirty();
		}
	}
	
	internal Length? _bordertopleftradius;
	
	/// <summary>
	/// Represents the <c>border-top-left-radius</c> CSS property.
	/// </summary>
	public Length? BorderTopLeftRadius
	{
		get => _bordertopleftradius;
		set
		{
			if ( _bordertopleftradius == value ) return;
			_bordertopleftradius = value;
			Dirty();
		}
	}
	
	internal Length? _bordertoprightradius;
	
	/// <summary>
	/// Represents the <c>border-top-right-radius</c> CSS property.
	/// </summary>
	public Length? BorderTopRightRadius
	{
		get => _bordertoprightradius;
		set
		{
			if ( _bordertoprightradius == value ) return;
			_bordertoprightradius = value;
			Dirty();
		}
	}
	
	internal Length? _borderbottomrightradius;
	
	/// <summary>
	/// Represents the <c>border-bottom-right-radius</c> CSS property.
	/// </summary>
	public Length? BorderBottomRightRadius
	{
		get => _borderbottomrightradius;
		set
		{
			if ( _borderbottomrightradius == value ) return;
			_borderbottomrightradius = value;
			Dirty();
		}
	}
	
	internal Length? _borderbottomleftradius;
	
	/// <summary>
	/// Represents the <c>border-bottom-left-radius</c> CSS property.
	/// </summary>
	public Length? BorderBottomLeftRadius
	{
		get => _borderbottomleftradius;
		set
		{
			if ( _borderbottomleftradius == value ) return;
			_borderbottomleftradius = value;
			Dirty();
		}
	}
	
	internal Length? _borderleftwidth;
	
	/// <summary>
	/// Represents the <c>border-left-width</c> CSS property.
	/// </summary>
	public Length? BorderLeftWidth
	{
		get => _borderleftwidth;
		set
		{
			if ( _borderleftwidth == value ) return;
			_borderleftwidth = value;
			Dirty();
		}
	}
	
	internal Length? _bordertopwidth;
	
	/// <summary>
	/// Represents the <c>border-top-width</c> CSS property.
	/// </summary>
	public Length? BorderTopWidth
	{
		get => _bordertopwidth;
		set
		{
			if ( _bordertopwidth == value ) return;
			_bordertopwidth = value;
			Dirty();
		}
	}
	
	internal Length? _borderrightwidth;
	
	/// <summary>
	/// Represents the <c>border-right-width</c> CSS property.
	/// </summary>
	public Length? BorderRightWidth
	{
		get => _borderrightwidth;
		set
		{
			if ( _borderrightwidth == value ) return;
			_borderrightwidth = value;
			Dirty();
		}
	}
	
	internal Length? _borderbottomwidth;
	
	/// <summary>
	/// Represents the <c>border-bottom-width</c> CSS property.
	/// </summary>
	public Length? BorderBottomWidth
	{
		get => _borderbottomwidth;
		set
		{
			if ( _borderbottomwidth == value ) return;
			_borderbottomwidth = value;
			Dirty();
		}
	}
	
	internal Color? _borderleftcolor;
	
	/// <summary>
	/// Represents the <c>border-left-color</c> CSS property.
	/// </summary>
	public Color? BorderLeftColor
	{
		get => _borderleftcolor;
		set
		{
			if ( _borderleftcolor == value ) return;
			_borderleftcolor = value;
			Dirty();
		}
	}
	
	internal Color? _bordertopcolor;
	
	/// <summary>
	/// Represents the <c>border-top-color</c> CSS property.
	/// </summary>
	public Color? BorderTopColor
	{
		get => _bordertopcolor;
		set
		{
			if ( _bordertopcolor == value ) return;
			_bordertopcolor = value;
			Dirty();
		}
	}
	
	internal Color? _borderrightcolor;
	
	/// <summary>
	/// Represents the <c>border-right-color</c> CSS property.
	/// </summary>
	public Color? BorderRightColor
	{
		get => _borderrightcolor;
		set
		{
			if ( _borderrightcolor == value ) return;
			_borderrightcolor = value;
			Dirty();
		}
	}
	
	internal Color? _borderbottomcolor;
	
	/// <summary>
	/// Represents the <c>border-bottom-color</c> CSS property.
	/// </summary>
	public Color? BorderBottomColor
	{
		get => _borderbottomcolor;
		set
		{
			if ( _borderbottomcolor == value ) return;
			_borderbottomcolor = value;
			Dirty();
		}
	}
	
	internal Length? _fontsize;
	
	/// <summary>
	/// Represents the <c>font-size</c> CSS property.
	/// </summary>
	public Length? FontSize
	{
		get => _fontsize;
		set
		{
			if ( _fontsize == value ) return;
			_fontsize = value;
			Dirty();
		}
	}
	
	internal Color? _fontcolor;
	
	/// <summary>
	/// Represents the <c>font-color</c> CSS property.
	/// </summary>
	public Color? FontColor
	{
		get => _fontcolor;
		set
		{
			if ( _fontcolor == value ) return;
			_fontcolor = value;
			Dirty();
		}
	}
	
	internal int? _fontweight;
	
	/// <summary>
	/// Represents the <c>font-weight</c> CSS property.
	/// </summary>
	public int? FontWeight
	{
		get => _fontweight;
		set
		{
			if ( _fontweight == value ) return;
			_fontweight = value;
			Dirty();
		}
	}
	
	internal string _fontfamily;
	
	/// <summary>
	/// Represents the <c>font-family</c> CSS property.
	/// </summary>
	public string FontFamily
	{
		get => _fontfamily;
		set
		{
			if ( _fontfamily == value ) return;
			_fontfamily = value;
			Dirty();
		}
	}
	
	internal Color? _caretcolor;
	
	/// <summary>
	/// Represents the <c>caret-color</c> CSS property.
	/// </summary>
	public Color? CaretColor
	{
		get => _caretcolor;
		set
		{
			if ( _caretcolor == value ) return;
			_caretcolor = value;
			Dirty();
		}
	}
	
	internal string _cursor;
	
	/// <summary>
	/// Represents the <c>cursor</c> CSS property.
	/// </summary>
	public string Cursor
	{
		get => _cursor;
		set
		{
			if ( _cursor == value ) return;
			_cursor = value;
			Dirty();
		}
	}
	
	internal PointerEvents? _pointerevents;
	
	/// <summary>
	/// Represents the <c>pointer-events</c> CSS property.
	/// </summary>
	public PointerEvents? PointerEvents
	{
		get => _pointerevents;
		set
		{
			if ( _pointerevents == value ) return;
			_pointerevents = value;
			Dirty();
		}
	}
	
	internal string _mixblendmode;
	
	/// <summary>
	/// Represents the <c>mix-blend-mode</c> CSS property.
	/// </summary>
	public string MixBlendMode
	{
		get => _mixblendmode;
		set
		{
			if ( _mixblendmode == value ) return;
			_mixblendmode = value;
			Dirty();
		}
	}
	
	internal PositionMode? _position;
	
	/// <summary>
	/// Represents the <c>position</c> CSS property.
	/// </summary>
	public PositionMode? Position
	{
		get => _position;
		set
		{
			if ( _position == value ) return;
			_position = value;
			Dirty();
		}
	}
	
	internal OverflowMode? _overflowx;
	
	/// <summary>
	/// Represents the <c>overflow-x</c> CSS property.
	/// </summary>
	public OverflowMode? OverflowX
	{
		get => _overflowx;
		set
		{
			if ( _overflowx == value ) return;
			_overflowx = value;
			Dirty();
		}
	}
	
	internal OverflowMode? _overflowy;
	
	/// <summary>
	/// Represents the <c>overflow-y</c> CSS property.
	/// </summary>
	public OverflowMode? OverflowY
	{
		get => _overflowy;
		set
		{
			if ( _overflowy == value ) return;
			_overflowy = value;
			Dirty();
		}
	}
	
	internal FlexDirection? _flexdirection;
	
	/// <summary>
	/// Represents the <c>flex-direction</c> CSS property.
	/// </summary>
	public FlexDirection? FlexDirection
	{
		get => _flexdirection;
		set
		{
			if ( _flexdirection == value ) return;
			_flexdirection = value;
			Dirty();
		}
	}
	
	internal Justify? _justifycontent;
	
	/// <summary>
	/// Represents the <c>justify-content</c> CSS property.
	/// </summary>
	public Justify? JustifyContent
	{
		get => _justifycontent;
		set
		{
			if ( _justifycontent == value ) return;
			_justifycontent = value;
			Dirty();
		}
	}
	
	internal DisplayMode? _display;
	
	/// <summary>
	/// Represents the <c>display</c> CSS property.
	/// </summary>
	public DisplayMode? Display
	{
		get => _display;
		set
		{
			if ( _display == value ) return;
			_display = value;
			Dirty();
		}
	}
	
	internal Wrap? _flexwrap;
	
	/// <summary>
	/// Represents the <c>flex-wrap</c> CSS property.
	/// </summary>
	public Wrap? FlexWrap
	{
		get => _flexwrap;
		set
		{
			if ( _flexwrap == value ) return;
			_flexwrap = value;
			Dirty();
		}
	}
	
	internal Align? _aligncontent;
	
	/// <summary>
	/// Represents the <c>align-content</c> CSS property.
	/// </summary>
	public Align? AlignContent
	{
		get => _aligncontent;
		set
		{
			if ( _aligncontent == value ) return;
			_aligncontent = value;
			Dirty();
		}
	}
	
	internal Align? _alignself;
	
	/// <summary>
	/// Represents the <c>align-self</c> CSS property.
	/// </summary>
	public Align? AlignSelf
	{
		get => _alignself;
		set
		{
			if ( _alignself == value ) return;
			_alignself = value;
			Dirty();
		}
	}
	
	internal Align? _alignitems;
	
	/// <summary>
	/// Represents the <c>align-items</c> CSS property.
	/// </summary>
	public Align? AlignItems
	{
		get => _alignitems;
		set
		{
			if ( _alignitems == value ) return;
			_alignitems = value;
			Dirty();
		}
	}
	
	internal Length? _flexbasis;
	
	/// <summary>
	/// Represents the <c>flex-basis</c> CSS property.
	/// </summary>
	public Length? FlexBasis
	{
		get => _flexbasis;
		set
		{
			if ( _flexbasis == value ) return;
			_flexbasis = value;
			Dirty();
		}
	}
	
	internal float? _flexgrow;
	
	/// <summary>
	/// Represents the <c>flex-grow</c> CSS property.
	/// </summary>
	public float? FlexGrow
	{
		get => _flexgrow;
		set
		{
			if ( _flexgrow == value ) return;
			_flexgrow = value;
			Dirty();
		}
	}
	
	internal float? _flexshrink;
	
	/// <summary>
	/// Represents the <c>flex-shrink</c> CSS property.
	/// </summary>
	public float? FlexShrink
	{
		get => _flexshrink;
		set
		{
			if ( _flexshrink == value ) return;
			_flexshrink = value;
			Dirty();
		}
	}
	
	internal Length? _rowgap;
	
	/// <summary>
	/// Represents the <c>row-gap</c> CSS property.
	/// </summary>
	public Length? RowGap
	{
		get => _rowgap;
		set
		{
			if ( _rowgap == value ) return;
			_rowgap = value;
			Dirty();
		}
	}
	
	internal Length? _columngap;
	
	/// <summary>
	/// Represents the <c>column-gap</c> CSS property.
	/// </summary>
	public Length? ColumnGap
	{
		get => _columngap;
		set
		{
			if ( _columngap == value ) return;
			_columngap = value;
			Dirty();
		}
	}
	
	internal float? _aspectratio;
	
	/// <summary>
	/// Represents the <c>aspect-ratio</c> CSS property.
	/// </summary>
	public float? AspectRatio
	{
		get => _aspectratio;
		set
		{
			if ( _aspectratio == value ) return;
			_aspectratio = value;
			Dirty();
		}
	}
	
	internal TextAlign? _textalign;
	
	/// <summary>
	/// Represents the <c>text-align</c> CSS property.
	/// </summary>
	public TextAlign? TextAlign
	{
		get => _textalign;
		set
		{
			if ( _textalign == value ) return;
			_textalign = value;
			Dirty();
		}
	}
	
	internal TextOverflow? _textoverflow;
	
	/// <summary>
	/// Represents the <c>text-overflow</c> CSS property.
	/// </summary>
	public TextOverflow? TextOverflow
	{
		get => _textoverflow;
		set
		{
			if ( _textoverflow == value ) return;
			_textoverflow = value;
			Dirty();
		}
	}
	
	internal Rendering.FilterMode? _textfilter;
	
	/// <summary>
	/// Represents the <c>text-filter</c> CSS property.
	/// </summary>
	public Rendering.FilterMode? TextFilter
	{
		get => _textfilter;
		set
		{
			if ( _textfilter == value ) return;
			_textfilter = value;
			Dirty();
		}
	}
	
	internal WordBreak? _wordbreak;
	
	/// <summary>
	/// Represents the <c>word-break</c> CSS property.
	/// </summary>
	public WordBreak? WordBreak
	{
		get => _wordbreak;
		set
		{
			if ( _wordbreak == value ) return;
			_wordbreak = value;
			Dirty();
		}
	}
	
	internal TextDecoration? _textdecorationline;
	
	/// <summary>
	/// Represents the <c>text-decoration-line</c> CSS property.
	/// </summary>
	public TextDecoration? TextDecorationLine
	{
		get => _textdecorationline;
		set
		{
			if ( _textdecorationline == value ) return;
			_textdecorationline = value;
			Dirty();
		}
	}
	
	internal Color? _textdecorationcolor;
	
	/// <summary>
	/// Represents the <c>text-decoration-color</c> CSS property.
	/// </summary>
	public Color? TextDecorationColor
	{
		get => _textdecorationcolor;
		set
		{
			if ( _textdecorationcolor == value ) return;
			_textdecorationcolor = value;
			Dirty();
		}
	}
	
	internal Length? _textdecorationthickness;
	
	/// <summary>
	/// Represents the <c>text-decoration-thickness</c> CSS property.
	/// </summary>
	public Length? TextDecorationThickness
	{
		get => _textdecorationthickness;
		set
		{
			if ( _textdecorationthickness == value ) return;
			_textdecorationthickness = value;
			Dirty();
		}
	}
	
	internal TextSkipInk? _textdecorationskipink;
	
	/// <summary>
	/// Represents the <c>text-decoration-skip-ink</c> CSS property.
	/// </summary>
	public TextSkipInk? TextDecorationSkipInk
	{
		get => _textdecorationskipink;
		set
		{
			if ( _textdecorationskipink == value ) return;
			_textdecorationskipink = value;
			Dirty();
		}
	}
	
	internal TextDecorationStyle? _textdecorationstyle;
	
	/// <summary>
	/// Represents the <c>text-decoration-style</c> CSS property.
	/// </summary>
	public TextDecorationStyle? TextDecorationStyle
	{
		get => _textdecorationstyle;
		set
		{
			if ( _textdecorationstyle == value ) return;
			_textdecorationstyle = value;
			Dirty();
		}
	}
	
	internal Length? _textunderlineoffset;
	
	/// <summary>
	/// Represents the <c>text-underline-offset</c> CSS property.
	/// </summary>
	public Length? TextUnderlineOffset
	{
		get => _textunderlineoffset;
		set
		{
			if ( _textunderlineoffset == value ) return;
			_textunderlineoffset = value;
			Dirty();
		}
	}
	
	internal Length? _textoverlineoffset;
	
	/// <summary>
	/// Represents the <c>text-overline-offset</c> CSS property.
	/// </summary>
	public Length? TextOverlineOffset
	{
		get => _textoverlineoffset;
		set
		{
			if ( _textoverlineoffset == value ) return;
			_textoverlineoffset = value;
			Dirty();
		}
	}
	
	internal Length? _textlinethroughoffset;
	
	/// <summary>
	/// Represents the <c>text-line-through-offset</c> CSS property.
	/// </summary>
	public Length? TextLineThroughOffset
	{
		get => _textlinethroughoffset;
		set
		{
			if ( _textlinethroughoffset == value ) return;
			_textlinethroughoffset = value;
			Dirty();
		}
	}
	
	internal FontStyle? _fontstyle;
	
	/// <summary>
	/// Represents the <c>font-style</c> CSS property.
	/// </summary>
	public FontStyle? FontStyle
	{
		get => _fontstyle;
		set
		{
			if ( _fontstyle == value ) return;
			_fontstyle = value;
			Dirty();
		}
	}
	
	internal PanelTransform? _transform;
	
	/// <summary>
	/// Represents the <c>transform</c> CSS property.
	/// </summary>
	public PanelTransform? Transform
	{
		get => _transform;
		set
		{
			if ( _transform == value ) return;
			_transform = value;
			Dirty();
		}
	}
	
	internal TextTransform? _texttransform;
	
	/// <summary>
	/// Represents the <c>text-transform</c> CSS property.
	/// </summary>
	public TextTransform? TextTransform
	{
		get => _texttransform;
		set
		{
			if ( _texttransform == value ) return;
			_texttransform = value;
			Dirty();
		}
	}
	
	internal Length? _transformoriginx;
	
	/// <summary>
	/// Represents the <c>transform-origin-x</c> CSS property.
	/// </summary>
	public Length? TransformOriginX
	{
		get => _transformoriginx;
		set
		{
			if ( _transformoriginx == value ) return;
			_transformoriginx = value;
			Dirty();
		}
	}
	
	internal Length? _transformoriginy;
	
	/// <summary>
	/// Represents the <c>transform-origin-y</c> CSS property.
	/// </summary>
	public Length? TransformOriginY
	{
		get => _transformoriginy;
		set
		{
			if ( _transformoriginy == value ) return;
			_transformoriginy = value;
			Dirty();
		}
	}
	
	internal Length? _letterspacing;
	
	/// <summary>
	/// Represents the <c>letter-spacing</c> CSS property.
	/// </summary>
	public Length? LetterSpacing
	{
		get => _letterspacing;
		set
		{
			if ( _letterspacing == value ) return;
			_letterspacing = value;
			Dirty();
		}
	}
	
	internal Length? _lineheight;
	
	/// <summary>
	/// Represents the <c>line-height</c> CSS property.
	/// </summary>
	public Length? LineHeight
	{
		get => _lineheight;
		set
		{
			if ( _lineheight == value ) return;
			_lineheight = value;
			Dirty();
		}
	}
	
	internal Length? _wordspacing;
	
	/// <summary>
	/// Represents the <c>word-spacing</c> CSS property.
	/// </summary>
	public Length? WordSpacing
	{
		get => _wordspacing;
		set
		{
			if ( _wordspacing == value ) return;
			_wordspacing = value;
			Dirty();
		}
	}
	
	internal WhiteSpace? _whitespace;
	
	/// <summary>
	/// Represents the <c>white-space</c> CSS property.
	/// </summary>
	public WhiteSpace? WhiteSpace
	{
		get => _whitespace;
		set
		{
			if ( _whitespace == value ) return;
			_whitespace = value;
			Dirty();
		}
	}
	
	internal int? _zindex;
	
	/// <summary>
	/// Represents the <c>z-index</c> CSS property.
	/// </summary>
	public int? ZIndex
	{
		get => _zindex;
		set
		{
			if ( _zindex == value ) return;
			_zindex = value;
			Dirty();
		}
	}
	
	internal int? _order;
	
	/// <summary>
	/// Represents the <c>order</c> CSS property.
	/// </summary>
	public int? Order
	{
		get => _order;
		set
		{
			if ( _order == value ) return;
			_order = value;
			Dirty();
		}
	}
	
	internal string _soundin;
	
	/// <summary>
	/// Represents the <c>sound-in</c> CSS property.
	/// </summary>
	public string SoundIn
	{
		get => _soundin;
		set
		{
			if ( _soundin == value ) return;
			_soundin = value;
			Dirty();
		}
	}
	
	internal string _soundout;
	
	/// <summary>
	/// Represents the <c>sound-out</c> CSS property.
	/// </summary>
	public string SoundOut
	{
		get => _soundout;
		set
		{
			if ( _soundout == value ) return;
			_soundout = value;
			Dirty();
		}
	}
	
	internal Length? _backdropfilterblur;
	
	/// <summary>
	/// Represents the <c>backdrop-filter-blur</c> CSS property.
	/// </summary>
	public Length? BackdropFilterBlur
	{
		get => _backdropfilterblur;
		set
		{
			if ( _backdropfilterblur == value ) return;
			_backdropfilterblur = value;
			Dirty();
		}
	}
	
	internal Length? _backdropfilterbrightness;
	
	/// <summary>
	/// Represents the <c>backdrop-filter-brightness</c> CSS property.
	/// </summary>
	public Length? BackdropFilterBrightness
	{
		get => _backdropfilterbrightness;
		set
		{
			if ( _backdropfilterbrightness == value ) return;
			_backdropfilterbrightness = value;
			Dirty();
		}
	}
	
	internal Length? _backdropfiltercontrast;
	
	/// <summary>
	/// Represents the <c>backdrop-filter-contrast</c> CSS property.
	/// </summary>
	public Length? BackdropFilterContrast
	{
		get => _backdropfiltercontrast;
		set
		{
			if ( _backdropfiltercontrast == value ) return;
			_backdropfiltercontrast = value;
			Dirty();
		}
	}
	
	internal Length? _backdropfiltersaturate;
	
	/// <summary>
	/// Represents the <c>backdrop-filter-saturate</c> CSS property.
	/// </summary>
	public Length? BackdropFilterSaturate
	{
		get => _backdropfiltersaturate;
		set
		{
			if ( _backdropfiltersaturate == value ) return;
			_backdropfiltersaturate = value;
			Dirty();
		}
	}
	
	internal Length? _backdropfiltersepia;
	
	/// <summary>
	/// Represents the <c>backdrop-filter-sepia</c> CSS property.
	/// </summary>
	public Length? BackdropFilterSepia
	{
		get => _backdropfiltersepia;
		set
		{
			if ( _backdropfiltersepia == value ) return;
			_backdropfiltersepia = value;
			Dirty();
		}
	}
	
	internal Length? _backdropfilterinvert;
	
	/// <summary>
	/// Represents the <c>backdrop-filter-invert</c> CSS property.
	/// </summary>
	public Length? BackdropFilterInvert
	{
		get => _backdropfilterinvert;
		set
		{
			if ( _backdropfilterinvert == value ) return;
			_backdropfilterinvert = value;
			Dirty();
		}
	}
	
	internal Length? _backdropfilterhuerotate;
	
	/// <summary>
	/// Represents the <c>backdrop-filter-hue-rotate</c> CSS property.
	/// </summary>
	public Length? BackdropFilterHueRotate
	{
		get => _backdropfilterhuerotate;
		set
		{
			if ( _backdropfilterhuerotate == value ) return;
			_backdropfilterhuerotate = value;
			Dirty();
		}
	}
	
	internal Length? _filterblur;
	
	/// <summary>
	/// Represents the <c>filter-blur</c> CSS property.
	/// </summary>
	public Length? FilterBlur
	{
		get => _filterblur;
		set
		{
			if ( _filterblur == value ) return;
			_filterblur = value;
			Dirty();
		}
	}
	
	internal Length? _filtersaturate;
	
	/// <summary>
	/// Represents the <c>filter-saturate</c> CSS property.
	/// </summary>
	public Length? FilterSaturate
	{
		get => _filtersaturate;
		set
		{
			if ( _filtersaturate == value ) return;
			_filtersaturate = value;
			Dirty();
		}
	}
	
	internal Length? _filtersepia;
	
	/// <summary>
	/// Represents the <c>filter-sepia</c> CSS property.
	/// </summary>
	public Length? FilterSepia
	{
		get => _filtersepia;
		set
		{
			if ( _filtersepia == value ) return;
			_filtersepia = value;
			Dirty();
		}
	}
	
	internal Length? _filterbrightness;
	
	/// <summary>
	/// Represents the <c>filter-brightness</c> CSS property.
	/// </summary>
	public Length? FilterBrightness
	{
		get => _filterbrightness;
		set
		{
			if ( _filterbrightness == value ) return;
			_filterbrightness = value;
			Dirty();
		}
	}
	
	internal Length? _filterhuerotate;
	
	/// <summary>
	/// Represents the <c>filter-hue-rotate</c> CSS property.
	/// </summary>
	public Length? FilterHueRotate
	{
		get => _filterhuerotate;
		set
		{
			if ( _filterhuerotate == value ) return;
			_filterhuerotate = value;
			Dirty();
		}
	}
	
	internal Length? _filterinvert;
	
	/// <summary>
	/// Represents the <c>filter-invert</c> CSS property.
	/// </summary>
	public Length? FilterInvert
	{
		get => _filterinvert;
		set
		{
			if ( _filterinvert == value ) return;
			_filterinvert = value;
			Dirty();
		}
	}
	
	internal Length? _filtercontrast;
	
	/// <summary>
	/// Represents the <c>filter-contrast</c> CSS property.
	/// </summary>
	public Length? FilterContrast
	{
		get => _filtercontrast;
		set
		{
			if ( _filtercontrast == value ) return;
			_filtercontrast = value;
			Dirty();
		}
	}
	
	internal Color? _filtertint;
	
	/// <summary>
	/// Represents the <c>filter-tint</c> CSS property.
	/// </summary>
	public Color? FilterTint
	{
		get => _filtertint;
		set
		{
			if ( _filtertint == value ) return;
			_filtertint = value;
			Dirty();
		}
	}
	
	internal Length? _filterborderwidth;
	
	/// <summary>
	/// Represents the <c>filter-border-width</c> CSS property.
	/// </summary>
	public Length? FilterBorderWidth
	{
		get => _filterborderwidth;
		set
		{
			if ( _filterborderwidth == value ) return;
			_filterborderwidth = value;
			Dirty();
		}
	}
	
	internal Color? _filterbordercolor;
	
	/// <summary>
	/// Represents the <c>filter-border-color</c> CSS property.
	/// </summary>
	public Color? FilterBorderColor
	{
		get => _filterbordercolor;
		set
		{
			if ( _filterbordercolor == value ) return;
			_filterbordercolor = value;
			Dirty();
		}
	}
	
	internal MaskMode? _maskmode;
	
	/// <summary>
	/// Represents the <c>mask-mode</c> CSS property.
	/// </summary>
	public MaskMode? MaskMode
	{
		get => _maskmode;
		set
		{
			if ( _maskmode == value ) return;
			_maskmode = value;
			Dirty();
		}
	}
	
	internal BackgroundRepeat? _maskrepeat;
	
	/// <summary>
	/// Represents the <c>mask-repeat</c> CSS property.
	/// </summary>
	public BackgroundRepeat? MaskRepeat
	{
		get => _maskrepeat;
		set
		{
			if ( _maskrepeat == value ) return;
			_maskrepeat = value;
			Dirty();
		}
	}
	
	internal Length? _masksizex;
	
	/// <summary>
	/// Represents the <c>mask-size-x</c> CSS property.
	/// </summary>
	public Length? MaskSizeX
	{
		get => _masksizex;
		set
		{
			if ( _masksizex == value ) return;
			_masksizex = value;
			Dirty();
		}
	}
	
	internal Length? _masksizey;
	
	/// <summary>
	/// Represents the <c>mask-size-y</c> CSS property.
	/// </summary>
	public Length? MaskSizeY
	{
		get => _masksizey;
		set
		{
			if ( _masksizey == value ) return;
			_masksizey = value;
			Dirty();
		}
	}
	
	internal Length? _maskpositionx;
	
	/// <summary>
	/// Represents the <c>mask-position-x</c> CSS property.
	/// </summary>
	public Length? MaskPositionX
	{
		get => _maskpositionx;
		set
		{
			if ( _maskpositionx == value ) return;
			_maskpositionx = value;
			Dirty();
		}
	}
	
	internal Length? _maskpositiony;
	
	/// <summary>
	/// Represents the <c>mask-position-y</c> CSS property.
	/// </summary>
	public Length? MaskPositionY
	{
		get => _maskpositiony;
		set
		{
			if ( _maskpositiony == value ) return;
			_maskpositiony = value;
			Dirty();
		}
	}
	
	internal Length? _maskangle;
	
	/// <summary>
	/// Represents the <c>mask-angle</c> CSS property.
	/// </summary>
	public Length? MaskAngle
	{
		get => _maskangle;
		set
		{
			if ( _maskangle == value ) return;
			_maskangle = value;
			Dirty();
		}
	}
	
	internal MaskScope? _maskscope;
	
	/// <summary>
	/// Represents the <c>mask-scope</c> CSS property.
	/// </summary>
	public MaskScope? MaskScope
	{
		get => _maskscope;
		set
		{
			if ( _maskscope == value ) return;
			_maskscope = value;
			Dirty();
		}
	}
	
	internal Length? _backgroundsizex;
	
	/// <summary>
	/// Represents the <c>background-size-x</c> CSS property.
	/// </summary>
	public Length? BackgroundSizeX
	{
		get => _backgroundsizex;
		set
		{
			if ( _backgroundsizex == value ) return;
			_backgroundsizex = value;
			Dirty();
		}
	}
	
	internal Length? _backgroundsizey;
	
	/// <summary>
	/// Represents the <c>background-size-y</c> CSS property.
	/// </summary>
	public Length? BackgroundSizeY
	{
		get => _backgroundsizey;
		set
		{
			if ( _backgroundsizey == value ) return;
			_backgroundsizey = value;
			Dirty();
		}
	}
	
	internal Length? _backgroundpositionx;
	
	/// <summary>
	/// Represents the <c>background-position-x</c> CSS property.
	/// </summary>
	public Length? BackgroundPositionX
	{
		get => _backgroundpositionx;
		set
		{
			if ( _backgroundpositionx == value ) return;
			_backgroundpositionx = value;
			Dirty();
		}
	}
	
	internal Length? _backgroundpositiony;
	
	/// <summary>
	/// Represents the <c>background-position-y</c> CSS property.
	/// </summary>
	public Length? BackgroundPositionY
	{
		get => _backgroundpositiony;
		set
		{
			if ( _backgroundpositiony == value ) return;
			_backgroundpositiony = value;
			Dirty();
		}
	}
	
	internal BackgroundRepeat? _backgroundrepeat;
	
	/// <summary>
	/// Represents the <c>background-repeat</c> CSS property.
	/// </summary>
	public BackgroundRepeat? BackgroundRepeat
	{
		get => _backgroundrepeat;
		set
		{
			if ( _backgroundrepeat == value ) return;
			_backgroundrepeat = value;
			Dirty();
		}
	}
	
	internal Length? _borderimagewidthleft;
	
	/// <summary>
	/// Represents the <c>border-image-width-left</c> CSS property.
	/// </summary>
	public Length? BorderImageWidthLeft
	{
		get => _borderimagewidthleft;
		set
		{
			if ( _borderimagewidthleft == value ) return;
			_borderimagewidthleft = value;
			Dirty();
		}
	}
	
	internal Length? _borderimagewidthright;
	
	/// <summary>
	/// Represents the <c>border-image-width-right</c> CSS property.
	/// </summary>
	public Length? BorderImageWidthRight
	{
		get => _borderimagewidthright;
		set
		{
			if ( _borderimagewidthright == value ) return;
			_borderimagewidthright = value;
			Dirty();
		}
	}
	
	internal Length? _borderimagewidthtop;
	
	/// <summary>
	/// Represents the <c>border-image-width-top</c> CSS property.
	/// </summary>
	public Length? BorderImageWidthTop
	{
		get => _borderimagewidthtop;
		set
		{
			if ( _borderimagewidthtop == value ) return;
			_borderimagewidthtop = value;
			Dirty();
		}
	}
	
	internal Length? _borderimagewidthbottom;
	
	/// <summary>
	/// Represents the <c>border-image-width-bottom</c> CSS property.
	/// </summary>
	public Length? BorderImageWidthBottom
	{
		get => _borderimagewidthbottom;
		set
		{
			if ( _borderimagewidthbottom == value ) return;
			_borderimagewidthbottom = value;
			Dirty();
		}
	}
	
	internal BorderImageFill? _borderimagefill;
	
	/// <summary>
	/// Represents the <c>border-image-fill</c> CSS property.
	/// </summary>
	public BorderImageFill? BorderImageFill
	{
		get => _borderimagefill;
		set
		{
			if ( _borderimagefill == value ) return;
			_borderimagefill = value;
			Dirty();
		}
	}
	
	internal BorderImageRepeat? _borderimagerepeat;
	
	/// <summary>
	/// Represents the <c>border-image-repeat</c> CSS property.
	/// </summary>
	public BorderImageRepeat? BorderImageRepeat
	{
		get => _borderimagerepeat;
		set
		{
			if ( _borderimagerepeat == value ) return;
			_borderimagerepeat = value;
			Dirty();
		}
	}
	
	internal Color? _borderimagetint;
	
	/// <summary>
	/// Represents the <c>border-image-tint</c> CSS property.
	/// </summary>
	public Color? BorderImageTint
	{
		get => _borderimagetint;
		set
		{
			if ( _borderimagetint == value ) return;
			_borderimagetint = value;
			Dirty();
		}
	}
	
	internal string _backgroundblendmode;
	
	/// <summary>
	/// Represents the <c>background-blend-mode</c> CSS property.
	/// </summary>
	public string BackgroundBlendMode
	{
		get => _backgroundblendmode;
		set
		{
			if ( _backgroundblendmode == value ) return;
			_backgroundblendmode = value;
			Dirty();
		}
	}
	
	internal Color? _backgroundtint;
	
	/// <summary>
	/// Represents the <c>background-tint</c> CSS property.
	/// </summary>
	public Color? BackgroundTint
	{
		get => _backgroundtint;
		set
		{
			if ( _backgroundtint == value ) return;
			_backgroundtint = value;
			Dirty();
		}
	}
	
	internal Length? _backgroundangle;
	
	/// <summary>
	/// Represents the <c>background-angle</c> CSS property.
	/// </summary>
	public Length? BackgroundAngle
	{
		get => _backgroundangle;
		set
		{
			if ( _backgroundangle == value ) return;
			_backgroundangle = value;
			Dirty();
		}
	}
	
	internal Length? _textbackgroundangle;
	
	/// <summary>
	/// Represents the <c>text-background-angle</c> CSS property.
	/// </summary>
	public Length? TextBackgroundAngle
	{
		get => _textbackgroundangle;
		set
		{
			if ( _textbackgroundangle == value ) return;
			_textbackgroundangle = value;
			Dirty();
		}
	}
	
	internal Length? _perspectiveoriginx;
	
	/// <summary>
	/// Represents the <c>perspective-origin-x</c> CSS property.
	/// </summary>
	public Length? PerspectiveOriginX
	{
		get => _perspectiveoriginx;
		set
		{
			if ( _perspectiveoriginx == value ) return;
			_perspectiveoriginx = value;
			Dirty();
		}
	}
	
	internal Length? _perspectiveoriginy;
	
	/// <summary>
	/// Represents the <c>perspective-origin-y</c> CSS property.
	/// </summary>
	public Length? PerspectiveOriginY
	{
		get => _perspectiveoriginy;
		set
		{
			if ( _perspectiveoriginy == value ) return;
			_perspectiveoriginy = value;
			Dirty();
		}
	}
	
	internal Color? _textstrokecolor;
	
	/// <summary>
	/// Represents the <c>text-stroke-color</c> CSS property.
	/// </summary>
	public Color? TextStrokeColor
	{
		get => _textstrokecolor;
		set
		{
			if ( _textstrokecolor == value ) return;
			_textstrokecolor = value;
			Dirty();
		}
	}
	
	internal Length? _textstrokewidth;
	
	/// <summary>
	/// Represents the <c>text-stroke-width</c> CSS property.
	/// </summary>
	public Length? TextStrokeWidth
	{
		get => _textstrokewidth;
		set
		{
			if ( _textstrokewidth == value ) return;
			_textstrokewidth = value;
			Dirty();
		}
	}
	
	internal ImageRendering? _imagerendering;
	
	/// <summary>
	/// Represents the <c>image-rendering</c> CSS property.
	/// </summary>
	public ImageRendering? ImageRendering
	{
		get => _imagerendering;
		set
		{
			if ( _imagerendering == value ) return;
			_imagerendering = value;
			Dirty();
		}
	}
	
	internal float? _animationdelay;
	
	/// <summary>
	/// Represents the <c>animation-delay</c> CSS property.
	/// </summary>
	public float? AnimationDelay
	{
		get => _animationdelay;
		set
		{
			if ( _animationdelay == value ) return;
			_animationdelay = value;
			Dirty();
		}
	}
	
	internal string _animationdirection;
	
	/// <summary>
	/// Represents the <c>animation-direction</c> CSS property.
	/// </summary>
	public string AnimationDirection
	{
		get => _animationdirection;
		set
		{
			if ( _animationdirection == value ) return;
			_animationdirection = value;
			Dirty();
		}
	}
	
	internal float? _animationduration;
	
	/// <summary>
	/// Represents the <c>animation-duration</c> CSS property.
	/// </summary>
	public float? AnimationDuration
	{
		get => _animationduration;
		set
		{
			if ( _animationduration == value ) return;
			_animationduration = value;
			Dirty();
		}
	}
	
	internal string _animationfillmode;
	
	/// <summary>
	/// Represents the <c>animation-fill-mode</c> CSS property.
	/// </summary>
	public string AnimationFillMode
	{
		get => _animationfillmode;
		set
		{
			if ( _animationfillmode == value ) return;
			_animationfillmode = value;
			Dirty();
		}
	}
	
	internal float? _animationiterationcount;
	
	/// <summary>
	/// Represents the <c>animation-iteration-count</c> CSS property.
	/// </summary>
	public float? AnimationIterationCount
	{
		get => _animationiterationcount;
		set
		{
			if ( _animationiterationcount == value ) return;
			_animationiterationcount = value;
			Dirty();
		}
	}
	
	internal string _animationname;
	
	/// <summary>
	/// Represents the <c>animation-name</c> CSS property.
	/// </summary>
	public string AnimationName
	{
		get => _animationname;
		set
		{
			if ( _animationname == value ) return;
			_animationname = value;
			Dirty();
		}
	}
	
	internal string _animationplaystate;
	
	/// <summary>
	/// Represents the <c>animation-play-state</c> CSS property.
	/// </summary>
	public string AnimationPlayState
	{
		get => _animationplaystate;
		set
		{
			if ( _animationplaystate == value ) return;
			_animationplaystate = value;
			Dirty();
		}
	}
	
	internal string _animationtimingfunction;
	
	/// <summary>
	/// Represents the <c>animation-timing-function</c> CSS property.
	/// </summary>
	public string AnimationTimingFunction
	{
		get => _animationtimingfunction;
		set
		{
			if ( _animationtimingfunction == value ) return;
			_animationtimingfunction = value;
			Dirty();
		}
	}
	
	internal FontSmooth? _fontsmooth;
	
	/// <summary>
	/// Represents the <c>font-smooth</c> CSS property.
	/// </summary>
	public FontSmooth? FontSmooth
	{
		get => _fontsmooth;
		set
		{
			if ( _fontsmooth == value ) return;
			_fontsmooth = value;
			Dirty();
		}
	}
	
	internal ObjectFit? _objectfit;
	
	/// <summary>
	/// Represents the <c>object-fit</c> CSS property.
	/// </summary>
	public ObjectFit? ObjectFit
	{
		get => _objectfit;
		set
		{
			if ( _objectfit == value ) return;
			_objectfit = value;
			Dirty();
		}
	}
	

	/// <summary>
	/// Copy over only the styles that are set.
	/// </summary>
	private void AddGenerated( BaseStyles a )
	{
		if ( a._content != null ) _content = a._content;
		if ( a._width != null ) _width = a._width;
		if ( a._minwidth != null ) _minwidth = a._minwidth;
		if ( a._maxwidth != null ) _maxwidth = a._maxwidth;
		if ( a._height != null ) _height = a._height;
		if ( a._minheight != null ) _minheight = a._minheight;
		if ( a._maxheight != null ) _maxheight = a._maxheight;
		if ( a._left != null ) _left = a._left;
		if ( a._top != null ) _top = a._top;
		if ( a._right != null ) _right = a._right;
		if ( a._bottom != null ) _bottom = a._bottom;
		if ( a._opacity != null ) _opacity = a._opacity;
		if ( a._backgroundcolor != null ) _backgroundcolor = a._backgroundcolor;
		if ( a._paddingleft != null ) _paddingleft = a._paddingleft;
		if ( a._paddingtop != null ) _paddingtop = a._paddingtop;
		if ( a._paddingright != null ) _paddingright = a._paddingright;
		if ( a._paddingbottom != null ) _paddingbottom = a._paddingbottom;
		if ( a._marginleft != null ) _marginleft = a._marginleft;
		if ( a._margintop != null ) _margintop = a._margintop;
		if ( a._marginright != null ) _marginright = a._marginright;
		if ( a._marginbottom != null ) _marginbottom = a._marginbottom;
		if ( a._bordertopleftradius != null ) _bordertopleftradius = a._bordertopleftradius;
		if ( a._bordertoprightradius != null ) _bordertoprightradius = a._bordertoprightradius;
		if ( a._borderbottomrightradius != null ) _borderbottomrightradius = a._borderbottomrightradius;
		if ( a._borderbottomleftradius != null ) _borderbottomleftradius = a._borderbottomleftradius;
		if ( a._borderleftwidth != null ) _borderleftwidth = a._borderleftwidth;
		if ( a._bordertopwidth != null ) _bordertopwidth = a._bordertopwidth;
		if ( a._borderrightwidth != null ) _borderrightwidth = a._borderrightwidth;
		if ( a._borderbottomwidth != null ) _borderbottomwidth = a._borderbottomwidth;
		if ( a._borderleftcolor != null ) _borderleftcolor = a._borderleftcolor;
		if ( a._bordertopcolor != null ) _bordertopcolor = a._bordertopcolor;
		if ( a._borderrightcolor != null ) _borderrightcolor = a._borderrightcolor;
		if ( a._borderbottomcolor != null ) _borderbottomcolor = a._borderbottomcolor;
		if ( a._fontsize != null ) _fontsize = a._fontsize;
		if ( a._fontcolor != null ) _fontcolor = a._fontcolor;
		if ( a._fontweight != null ) _fontweight = a._fontweight;
		if ( a._fontfamily != null ) _fontfamily = a._fontfamily;
		if ( a._caretcolor != null ) _caretcolor = a._caretcolor;
		if ( a._cursor != null ) _cursor = a._cursor;
		if ( a._pointerevents != null ) _pointerevents = a._pointerevents;
		if ( a._mixblendmode != null ) _mixblendmode = a._mixblendmode;
		if ( a._position != null ) _position = a._position;
		if ( a._overflowx != null ) _overflowx = a._overflowx;
		if ( a._overflowy != null ) _overflowy = a._overflowy;
		if ( a._flexdirection != null ) _flexdirection = a._flexdirection;
		if ( a._justifycontent != null ) _justifycontent = a._justifycontent;
		if ( a._display != null ) _display = a._display;
		if ( a._flexwrap != null ) _flexwrap = a._flexwrap;
		if ( a._aligncontent != null ) _aligncontent = a._aligncontent;
		if ( a._alignself != null ) _alignself = a._alignself;
		if ( a._alignitems != null ) _alignitems = a._alignitems;
		if ( a._flexbasis != null ) _flexbasis = a._flexbasis;
		if ( a._flexgrow != null ) _flexgrow = a._flexgrow;
		if ( a._flexshrink != null ) _flexshrink = a._flexshrink;
		if ( a._rowgap != null ) _rowgap = a._rowgap;
		if ( a._columngap != null ) _columngap = a._columngap;
		if ( a._aspectratio != null ) _aspectratio = a._aspectratio;
		if ( a._textalign != null ) _textalign = a._textalign;
		if ( a._textoverflow != null ) _textoverflow = a._textoverflow;
		if ( a._textfilter != null ) _textfilter = a._textfilter;
		if ( a._wordbreak != null ) _wordbreak = a._wordbreak;
		if ( a._textdecorationline != null ) _textdecorationline = a._textdecorationline;
		if ( a._textdecorationcolor != null ) _textdecorationcolor = a._textdecorationcolor;
		if ( a._textdecorationthickness != null ) _textdecorationthickness = a._textdecorationthickness;
		if ( a._textdecorationskipink != null ) _textdecorationskipink = a._textdecorationskipink;
		if ( a._textdecorationstyle != null ) _textdecorationstyle = a._textdecorationstyle;
		if ( a._textunderlineoffset != null ) _textunderlineoffset = a._textunderlineoffset;
		if ( a._textoverlineoffset != null ) _textoverlineoffset = a._textoverlineoffset;
		if ( a._textlinethroughoffset != null ) _textlinethroughoffset = a._textlinethroughoffset;
		if ( a._fontstyle != null ) _fontstyle = a._fontstyle;
		if ( a._transform != null ) _transform = a._transform;
		if ( a._texttransform != null ) _texttransform = a._texttransform;
		if ( a._transformoriginx != null ) _transformoriginx = a._transformoriginx;
		if ( a._transformoriginy != null ) _transformoriginy = a._transformoriginy;
		if ( a._letterspacing != null ) _letterspacing = a._letterspacing;
		if ( a._lineheight != null ) _lineheight = a._lineheight;
		if ( a._wordspacing != null ) _wordspacing = a._wordspacing;
		if ( a._whitespace != null ) _whitespace = a._whitespace;
		if ( a._zindex != null ) _zindex = a._zindex;
		if ( a._order != null ) _order = a._order;
		if ( a._soundin != null ) _soundin = a._soundin;
		if ( a._soundout != null ) _soundout = a._soundout;
		if ( a._backdropfilterblur != null ) _backdropfilterblur = a._backdropfilterblur;
		if ( a._backdropfilterbrightness != null ) _backdropfilterbrightness = a._backdropfilterbrightness;
		if ( a._backdropfiltercontrast != null ) _backdropfiltercontrast = a._backdropfiltercontrast;
		if ( a._backdropfiltersaturate != null ) _backdropfiltersaturate = a._backdropfiltersaturate;
		if ( a._backdropfiltersepia != null ) _backdropfiltersepia = a._backdropfiltersepia;
		if ( a._backdropfilterinvert != null ) _backdropfilterinvert = a._backdropfilterinvert;
		if ( a._backdropfilterhuerotate != null ) _backdropfilterhuerotate = a._backdropfilterhuerotate;
		if ( a._filterblur != null ) _filterblur = a._filterblur;
		if ( a._filtersaturate != null ) _filtersaturate = a._filtersaturate;
		if ( a._filtersepia != null ) _filtersepia = a._filtersepia;
		if ( a._filterbrightness != null ) _filterbrightness = a._filterbrightness;
		if ( a._filterhuerotate != null ) _filterhuerotate = a._filterhuerotate;
		if ( a._filterinvert != null ) _filterinvert = a._filterinvert;
		if ( a._filtercontrast != null ) _filtercontrast = a._filtercontrast;
		if ( a._filtertint != null ) _filtertint = a._filtertint;
		if ( a._filterborderwidth != null ) _filterborderwidth = a._filterborderwidth;
		if ( a._filterbordercolor != null ) _filterbordercolor = a._filterbordercolor;
		if ( a._maskmode != null ) _maskmode = a._maskmode;
		if ( a._maskrepeat != null ) _maskrepeat = a._maskrepeat;
		if ( a._masksizex != null ) _masksizex = a._masksizex;
		if ( a._masksizey != null ) _masksizey = a._masksizey;
		if ( a._maskpositionx != null ) _maskpositionx = a._maskpositionx;
		if ( a._maskpositiony != null ) _maskpositiony = a._maskpositiony;
		if ( a._maskangle != null ) _maskangle = a._maskangle;
		if ( a._maskscope != null ) _maskscope = a._maskscope;
		if ( a._backgroundsizex != null ) _backgroundsizex = a._backgroundsizex;
		if ( a._backgroundsizey != null ) _backgroundsizey = a._backgroundsizey;
		if ( a._backgroundpositionx != null ) _backgroundpositionx = a._backgroundpositionx;
		if ( a._backgroundpositiony != null ) _backgroundpositiony = a._backgroundpositiony;
		if ( a._backgroundrepeat != null ) _backgroundrepeat = a._backgroundrepeat;
		if ( a._borderimagewidthleft != null ) _borderimagewidthleft = a._borderimagewidthleft;
		if ( a._borderimagewidthright != null ) _borderimagewidthright = a._borderimagewidthright;
		if ( a._borderimagewidthtop != null ) _borderimagewidthtop = a._borderimagewidthtop;
		if ( a._borderimagewidthbottom != null ) _borderimagewidthbottom = a._borderimagewidthbottom;
		if ( a._borderimagefill != null ) _borderimagefill = a._borderimagefill;
		if ( a._borderimagerepeat != null ) _borderimagerepeat = a._borderimagerepeat;
		if ( a._borderimagetint != null ) _borderimagetint = a._borderimagetint;
		if ( a._backgroundblendmode != null ) _backgroundblendmode = a._backgroundblendmode;
		if ( a._backgroundtint != null ) _backgroundtint = a._backgroundtint;
		if ( a._backgroundangle != null ) _backgroundangle = a._backgroundangle;
		if ( a._textbackgroundangle != null ) _textbackgroundangle = a._textbackgroundangle;
		if ( a._perspectiveoriginx != null ) _perspectiveoriginx = a._perspectiveoriginx;
		if ( a._perspectiveoriginy != null ) _perspectiveoriginy = a._perspectiveoriginy;
		if ( a._textstrokecolor != null ) _textstrokecolor = a._textstrokecolor;
		if ( a._textstrokewidth != null ) _textstrokewidth = a._textstrokewidth;
		if ( a._imagerendering != null ) _imagerendering = a._imagerendering;
		if ( a._animationdelay != null ) _animationdelay = a._animationdelay;
		if ( a._animationdirection != null ) _animationdirection = a._animationdirection;
		if ( a._animationduration != null ) _animationduration = a._animationduration;
		if ( a._animationfillmode != null ) _animationfillmode = a._animationfillmode;
		if ( a._animationiterationcount != null ) _animationiterationcount = a._animationiterationcount;
		if ( a._animationname != null ) _animationname = a._animationname;
		if ( a._animationplaystate != null ) _animationplaystate = a._animationplaystate;
		if ( a._animationtimingfunction != null ) _animationtimingfunction = a._animationtimingfunction;
		if ( a._fontsmooth != null ) _fontsmooth = a._fontsmooth;
		if ( a._objectfit != null ) _objectfit = a._objectfit;
	}

	/// <summary>
	/// Copy all styles from given style set.
	/// </summary>
	private void FromGenerated( BaseStyles a )
	{
		_content = a._content;
		_width = a._width;
		_minwidth = a._minwidth;
		_maxwidth = a._maxwidth;
		_height = a._height;
		_minheight = a._minheight;
		_maxheight = a._maxheight;
		_left = a._left;
		_top = a._top;
		_right = a._right;
		_bottom = a._bottom;
		_opacity = a._opacity;
		_backgroundcolor = a._backgroundcolor;
		_paddingleft = a._paddingleft;
		_paddingtop = a._paddingtop;
		_paddingright = a._paddingright;
		_paddingbottom = a._paddingbottom;
		_marginleft = a._marginleft;
		_margintop = a._margintop;
		_marginright = a._marginright;
		_marginbottom = a._marginbottom;
		_bordertopleftradius = a._bordertopleftradius;
		_bordertoprightradius = a._bordertoprightradius;
		_borderbottomrightradius = a._borderbottomrightradius;
		_borderbottomleftradius = a._borderbottomleftradius;
		_borderleftwidth = a._borderleftwidth;
		_bordertopwidth = a._bordertopwidth;
		_borderrightwidth = a._borderrightwidth;
		_borderbottomwidth = a._borderbottomwidth;
		_borderleftcolor = a._borderleftcolor;
		_bordertopcolor = a._bordertopcolor;
		_borderrightcolor = a._borderrightcolor;
		_borderbottomcolor = a._borderbottomcolor;
		_fontsize = a._fontsize;
		_fontcolor = a._fontcolor;
		_fontweight = a._fontweight;
		_fontfamily = a._fontfamily;
		_caretcolor = a._caretcolor;
		_cursor = a._cursor;
		_pointerevents = a._pointerevents;
		_mixblendmode = a._mixblendmode;
		_position = a._position;
		_overflowx = a._overflowx;
		_overflowy = a._overflowy;
		_flexdirection = a._flexdirection;
		_justifycontent = a._justifycontent;
		_display = a._display;
		_flexwrap = a._flexwrap;
		_aligncontent = a._aligncontent;
		_alignself = a._alignself;
		_alignitems = a._alignitems;
		_flexbasis = a._flexbasis;
		_flexgrow = a._flexgrow;
		_flexshrink = a._flexshrink;
		_rowgap = a._rowgap;
		_columngap = a._columngap;
		_aspectratio = a._aspectratio;
		_textalign = a._textalign;
		_textoverflow = a._textoverflow;
		_textfilter = a._textfilter;
		_wordbreak = a._wordbreak;
		_textdecorationline = a._textdecorationline;
		_textdecorationcolor = a._textdecorationcolor;
		_textdecorationthickness = a._textdecorationthickness;
		_textdecorationskipink = a._textdecorationskipink;
		_textdecorationstyle = a._textdecorationstyle;
		_textunderlineoffset = a._textunderlineoffset;
		_textoverlineoffset = a._textoverlineoffset;
		_textlinethroughoffset = a._textlinethroughoffset;
		_fontstyle = a._fontstyle;
		_transform = a._transform;
		_texttransform = a._texttransform;
		_transformoriginx = a._transformoriginx;
		_transformoriginy = a._transformoriginy;
		_letterspacing = a._letterspacing;
		_lineheight = a._lineheight;
		_wordspacing = a._wordspacing;
		_whitespace = a._whitespace;
		_zindex = a._zindex;
		_order = a._order;
		_soundin = a._soundin;
		_soundout = a._soundout;
		_backdropfilterblur = a._backdropfilterblur;
		_backdropfilterbrightness = a._backdropfilterbrightness;
		_backdropfiltercontrast = a._backdropfiltercontrast;
		_backdropfiltersaturate = a._backdropfiltersaturate;
		_backdropfiltersepia = a._backdropfiltersepia;
		_backdropfilterinvert = a._backdropfilterinvert;
		_backdropfilterhuerotate = a._backdropfilterhuerotate;
		_filterblur = a._filterblur;
		_filtersaturate = a._filtersaturate;
		_filtersepia = a._filtersepia;
		_filterbrightness = a._filterbrightness;
		_filterhuerotate = a._filterhuerotate;
		_filterinvert = a._filterinvert;
		_filtercontrast = a._filtercontrast;
		_filtertint = a._filtertint;
		_filterborderwidth = a._filterborderwidth;
		_filterbordercolor = a._filterbordercolor;
		_maskmode = a._maskmode;
		_maskrepeat = a._maskrepeat;
		_masksizex = a._masksizex;
		_masksizey = a._masksizey;
		_maskpositionx = a._maskpositionx;
		_maskpositiony = a._maskpositiony;
		_maskangle = a._maskangle;
		_maskscope = a._maskscope;
		_backgroundsizex = a._backgroundsizex;
		_backgroundsizey = a._backgroundsizey;
		_backgroundpositionx = a._backgroundpositionx;
		_backgroundpositiony = a._backgroundpositiony;
		_backgroundrepeat = a._backgroundrepeat;
		_borderimagewidthleft = a._borderimagewidthleft;
		_borderimagewidthright = a._borderimagewidthright;
		_borderimagewidthtop = a._borderimagewidthtop;
		_borderimagewidthbottom = a._borderimagewidthbottom;
		_borderimagefill = a._borderimagefill;
		_borderimagerepeat = a._borderimagerepeat;
		_borderimagetint = a._borderimagetint;
		_backgroundblendmode = a._backgroundblendmode;
		_backgroundtint = a._backgroundtint;
		_backgroundangle = a._backgroundangle;
		_textbackgroundangle = a._textbackgroundangle;
		_perspectiveoriginx = a._perspectiveoriginx;
		_perspectiveoriginy = a._perspectiveoriginy;
		_textstrokecolor = a._textstrokecolor;
		_textstrokewidth = a._textstrokewidth;
		_imagerendering = a._imagerendering;
		_animationdelay = a._animationdelay;
		_animationdirection = a._animationdirection;
		_animationduration = a._animationduration;
		_animationfillmode = a._animationfillmode;
		_animationiterationcount = a._animationiterationcount;
		_animationname = a._animationname;
		_animationplaystate = a._animationplaystate;
		_animationtimingfunction = a._animationtimingfunction;
		_fontsmooth = a._fontsmooth;
		_objectfit = a._objectfit;
	}

	/// <summary>
	/// Set a CSS property via its string name.
	/// </summary>
	private bool SetGenerated( string property, string value )
    {
        switch ( property )
        {
		case "content":
			Content = value.TrimQuoted( true );
			return true;
		case "width":
			Width = Length.Parse( value );
			return Width.HasValue;
		case "min-width":
			MinWidth = Length.Parse( value );
			return MinWidth.HasValue;
		case "max-width":
			MaxWidth = Length.Parse( value );
			return MaxWidth.HasValue;
		case "height":
			Height = Length.Parse( value );
			return Height.HasValue;
		case "min-height":
			MinHeight = Length.Parse( value );
			return MinHeight.HasValue;
		case "max-height":
			MaxHeight = Length.Parse( value );
			return MaxHeight.HasValue;
		case "left":
			Left = Length.Parse( value );
			return Left.HasValue;
		case "top":
			Top = Length.Parse( value );
			return Top.HasValue;
		case "right":
			Right = Length.Parse( value );
			return Right.HasValue;
		case "bottom":
			Bottom = Length.Parse( value );
			return Bottom.HasValue;
		case "opacity":
			Opacity = ParseFloat( value );
			return Opacity.HasValue;
		case "background-color":
			BackgroundColor = Color.Parse( value );
			return BackgroundColor.HasValue;
		case "padding-left":
			PaddingLeft = Length.Parse( value );
			return PaddingLeft.HasValue;
		case "padding-top":
			PaddingTop = Length.Parse( value );
			return PaddingTop.HasValue;
		case "padding-right":
			PaddingRight = Length.Parse( value );
			return PaddingRight.HasValue;
		case "padding-bottom":
			PaddingBottom = Length.Parse( value );
			return PaddingBottom.HasValue;
		case "margin-left":
			MarginLeft = Length.Parse( value );
			return MarginLeft.HasValue;
		case "margin-top":
			MarginTop = Length.Parse( value );
			return MarginTop.HasValue;
		case "margin-right":
			MarginRight = Length.Parse( value );
			return MarginRight.HasValue;
		case "margin-bottom":
			MarginBottom = Length.Parse( value );
			return MarginBottom.HasValue;
		case "border-top-left-radius":
			BorderTopLeftRadius = Length.Parse( value );
			return BorderTopLeftRadius.HasValue;
		case "border-top-right-radius":
			BorderTopRightRadius = Length.Parse( value );
			return BorderTopRightRadius.HasValue;
		case "border-bottom-right-radius":
			BorderBottomRightRadius = Length.Parse( value );
			return BorderBottomRightRadius.HasValue;
		case "border-bottom-left-radius":
			BorderBottomLeftRadius = Length.Parse( value );
			return BorderBottomLeftRadius.HasValue;
		case "border-left-width":
			BorderLeftWidth = Length.Parse( value );
			return BorderLeftWidth.HasValue;
		case "border-top-width":
			BorderTopWidth = Length.Parse( value );
			return BorderTopWidth.HasValue;
		case "border-right-width":
			BorderRightWidth = Length.Parse( value );
			return BorderRightWidth.HasValue;
		case "border-bottom-width":
			BorderBottomWidth = Length.Parse( value );
			return BorderBottomWidth.HasValue;
		case "border-left-color":
			BorderLeftColor = Color.Parse( value );
			return BorderLeftColor.HasValue;
		case "border-top-color":
			BorderTopColor = Color.Parse( value );
			return BorderTopColor.HasValue;
		case "border-right-color":
			BorderRightColor = Color.Parse( value );
			return BorderRightColor.HasValue;
		case "border-bottom-color":
			BorderBottomColor = Color.Parse( value );
			return BorderBottomColor.HasValue;
		case "font-size":
			FontSize = Length.Parse( value );
			return FontSize.HasValue;
		case "font-color":
			FontColor = Color.Parse( value );
			return FontColor.HasValue;
		case "font-weight":
			FontWeight = ParseInt( value );
			return FontWeight.HasValue;
		case "font-family":
			FontFamily = value.TrimQuoted( true );
			return true;
		case "caret-color":
			CaretColor = Color.Parse( value );
			return CaretColor.HasValue;
		case "cursor":
			Cursor = value.TrimQuoted( true );
			return true;
		case "mix-blend-mode":
			MixBlendMode = value.TrimQuoted( true );
			return true;
		case "flex-basis":
			FlexBasis = Length.Parse( value );
			return FlexBasis.HasValue;
		case "flex-grow":
			FlexGrow = ParseFloat( value );
			return FlexGrow.HasValue;
		case "flex-shrink":
			FlexShrink = ParseFloat( value );
			return FlexShrink.HasValue;
		case "row-gap":
			RowGap = Length.Parse( value );
			return RowGap.HasValue;
		case "column-gap":
			ColumnGap = Length.Parse( value );
			return ColumnGap.HasValue;
		case "aspect-ratio":
			AspectRatio = ParseAspectRatio( value );
			return true;
		case "text-decoration-color":
			TextDecorationColor = Color.Parse( value );
			return TextDecorationColor.HasValue;
		case "text-decoration-thickness":
			TextDecorationThickness = Length.Parse( value );
			return TextDecorationThickness.HasValue;
		case "text-underline-offset":
			TextUnderlineOffset = Length.Parse( value );
			return TextUnderlineOffset.HasValue;
		case "text-overline-offset":
			TextOverlineOffset = Length.Parse( value );
			return TextOverlineOffset.HasValue;
		case "text-line-through-offset":
			TextLineThroughOffset = Length.Parse( value );
			return TextLineThroughOffset.HasValue;
		case "transform-origin-x":
			TransformOriginX = Length.Parse( value );
			return TransformOriginX.HasValue;
		case "transform-origin-y":
			TransformOriginY = Length.Parse( value );
			return TransformOriginY.HasValue;
		case "letter-spacing":
			LetterSpacing = Length.Parse( value );
			return LetterSpacing.HasValue;
		case "line-height":
			LineHeight = Length.Parse( value );
			return LineHeight.HasValue;
		case "word-spacing":
			WordSpacing = Length.Parse( value );
			return WordSpacing.HasValue;
		case "z-index":
			ZIndex = ParseInt( value );
			return ZIndex.HasValue;
		case "order":
			Order = ParseInt( value );
			return Order.HasValue;
		case "sound-in":
			SoundIn = value.TrimQuoted( true );
			return true;
		case "sound-out":
			SoundOut = value.TrimQuoted( true );
			return true;
		case "backdrop-filter-blur":
			BackdropFilterBlur = Length.Parse( value );
			return BackdropFilterBlur.HasValue;
		case "backdrop-filter-brightness":
			BackdropFilterBrightness = Length.Parse( value );
			return BackdropFilterBrightness.HasValue;
		case "backdrop-filter-contrast":
			BackdropFilterContrast = Length.Parse( value );
			return BackdropFilterContrast.HasValue;
		case "backdrop-filter-saturate":
			BackdropFilterSaturate = Length.Parse( value );
			return BackdropFilterSaturate.HasValue;
		case "backdrop-filter-sepia":
			BackdropFilterSepia = Length.Parse( value );
			return BackdropFilterSepia.HasValue;
		case "backdrop-filter-invert":
			BackdropFilterInvert = Length.Parse( value );
			return BackdropFilterInvert.HasValue;
		case "backdrop-filter-hue-rotate":
			BackdropFilterHueRotate = Length.Parse( value );
			return BackdropFilterHueRotate.HasValue;
		case "filter-blur":
			FilterBlur = Length.Parse( value );
			return FilterBlur.HasValue;
		case "filter-saturate":
			FilterSaturate = Length.Parse( value );
			return FilterSaturate.HasValue;
		case "filter-sepia":
			FilterSepia = Length.Parse( value );
			return FilterSepia.HasValue;
		case "filter-brightness":
			FilterBrightness = Length.Parse( value );
			return FilterBrightness.HasValue;
		case "filter-hue-rotate":
			FilterHueRotate = Length.Parse( value );
			return FilterHueRotate.HasValue;
		case "filter-invert":
			FilterInvert = Length.Parse( value );
			return FilterInvert.HasValue;
		case "filter-contrast":
			FilterContrast = Length.Parse( value );
			return FilterContrast.HasValue;
		case "filter-tint":
			FilterTint = Color.Parse( value );
			return FilterTint.HasValue;
		case "filter-border-width":
			FilterBorderWidth = Length.Parse( value );
			return FilterBorderWidth.HasValue;
		case "filter-border-color":
			FilterBorderColor = Color.Parse( value );
			return FilterBorderColor.HasValue;
		case "mask-size-x":
			MaskSizeX = Length.Parse( value );
			return MaskSizeX.HasValue;
		case "mask-size-y":
			MaskSizeY = Length.Parse( value );
			return MaskSizeY.HasValue;
		case "mask-position-x":
			MaskPositionX = Length.Parse( value );
			return MaskPositionX.HasValue;
		case "mask-position-y":
			MaskPositionY = Length.Parse( value );
			return MaskPositionY.HasValue;
		case "mask-angle":
			MaskAngle = Length.Parse( value );
			return MaskAngle.HasValue;
		case "background-size-x":
			BackgroundSizeX = Length.Parse( value );
			return BackgroundSizeX.HasValue;
		case "background-size-y":
			BackgroundSizeY = Length.Parse( value );
			return BackgroundSizeY.HasValue;
		case "background-position-x":
			BackgroundPositionX = Length.Parse( value );
			return BackgroundPositionX.HasValue;
		case "background-position-y":
			BackgroundPositionY = Length.Parse( value );
			return BackgroundPositionY.HasValue;
		case "border-image-width-left":
			BorderImageWidthLeft = Length.Parse( value );
			return BorderImageWidthLeft.HasValue;
		case "border-image-width-right":
			BorderImageWidthRight = Length.Parse( value );
			return BorderImageWidthRight.HasValue;
		case "border-image-width-top":
			BorderImageWidthTop = Length.Parse( value );
			return BorderImageWidthTop.HasValue;
		case "border-image-width-bottom":
			BorderImageWidthBottom = Length.Parse( value );
			return BorderImageWidthBottom.HasValue;
		case "border-image-tint":
			BorderImageTint = Color.Parse( value );
			return BorderImageTint.HasValue;
		case "background-blend-mode":
			BackgroundBlendMode = value.TrimQuoted( true );
			return true;
		case "background-tint":
			BackgroundTint = Color.Parse( value );
			return BackgroundTint.HasValue;
		case "background-angle":
			BackgroundAngle = Length.Parse( value );
			return BackgroundAngle.HasValue;
		case "text-background-angle":
			TextBackgroundAngle = Length.Parse( value );
			return TextBackgroundAngle.HasValue;
		case "perspective-origin-x":
			PerspectiveOriginX = Length.Parse( value );
			return PerspectiveOriginX.HasValue;
		case "perspective-origin-y":
			PerspectiveOriginY = Length.Parse( value );
			return PerspectiveOriginY.HasValue;
		case "text-stroke-color":
			TextStrokeColor = Color.Parse( value );
			return TextStrokeColor.HasValue;
		case "text-stroke-width":
			TextStrokeWidth = Length.Parse( value );
			return TextStrokeWidth.HasValue;
		case "animation-delay":
			AnimationDelay = ParseSeconds( value );
			return true;
		case "animation-direction":
			AnimationDirection = value.TrimQuoted( true );
			return true;
		case "animation-duration":
			AnimationDuration = ParseSeconds( value );
			return true;
		case "animation-fill-mode":
			AnimationFillMode = value.TrimQuoted( true );
			return true;
		case "animation-iteration-count":
			AnimationIterationCount = ParseFloat( value );
			return AnimationIterationCount.HasValue;
		case "animation-name":
			AnimationName = value.TrimQuoted( true );
			return true;
		case "animation-play-state":
			AnimationPlayState = value.TrimQuoted( true );
			return true;
		case "animation-timing-function":
			AnimationTimingFunction = value.TrimQuoted( true );
			return true;
		default:
			return false;
		}
	}

	private int GetHashCodeGenerated()
    {
		int hash = 0;

			hash = HashCode.Combine( hash, _content );
			hash = HashCode.Combine( hash, _width );
			hash = HashCode.Combine( hash, _minwidth );
			hash = HashCode.Combine( hash, _maxwidth );
			hash = HashCode.Combine( hash, _height );
			hash = HashCode.Combine( hash, _minheight );
			hash = HashCode.Combine( hash, _maxheight );
			hash = HashCode.Combine( hash, _left );
			hash = HashCode.Combine( hash, _top );
			hash = HashCode.Combine( hash, _right );
			hash = HashCode.Combine( hash, _bottom );
			hash = HashCode.Combine( hash, _opacity );
			hash = HashCode.Combine( hash, _backgroundcolor );
			hash = HashCode.Combine( hash, _paddingleft );
			hash = HashCode.Combine( hash, _paddingtop );
			hash = HashCode.Combine( hash, _paddingright );
			hash = HashCode.Combine( hash, _paddingbottom );
			hash = HashCode.Combine( hash, _marginleft );
			hash = HashCode.Combine( hash, _margintop );
			hash = HashCode.Combine( hash, _marginright );
			hash = HashCode.Combine( hash, _marginbottom );
			hash = HashCode.Combine( hash, _bordertopleftradius );
			hash = HashCode.Combine( hash, _bordertoprightradius );
			hash = HashCode.Combine( hash, _borderbottomrightradius );
			hash = HashCode.Combine( hash, _borderbottomleftradius );
			hash = HashCode.Combine( hash, _borderleftwidth );
			hash = HashCode.Combine( hash, _bordertopwidth );
			hash = HashCode.Combine( hash, _borderrightwidth );
			hash = HashCode.Combine( hash, _borderbottomwidth );
			hash = HashCode.Combine( hash, _borderleftcolor );
			hash = HashCode.Combine( hash, _bordertopcolor );
			hash = HashCode.Combine( hash, _borderrightcolor );
			hash = HashCode.Combine( hash, _borderbottomcolor );
			hash = HashCode.Combine( hash, _fontsize );
			hash = HashCode.Combine( hash, _fontcolor );
			hash = HashCode.Combine( hash, _fontweight );
			hash = HashCode.Combine( hash, _fontfamily );
			hash = HashCode.Combine( hash, _caretcolor );
			hash = HashCode.Combine( hash, _cursor );
			hash = HashCode.Combine( hash, _pointerevents );
			hash = HashCode.Combine( hash, _mixblendmode );
			hash = HashCode.Combine( hash, _position );
			hash = HashCode.Combine( hash, _overflowx );
			hash = HashCode.Combine( hash, _overflowy );
			hash = HashCode.Combine( hash, _flexdirection );
			hash = HashCode.Combine( hash, _justifycontent );
			hash = HashCode.Combine( hash, _display );
			hash = HashCode.Combine( hash, _flexwrap );
			hash = HashCode.Combine( hash, _aligncontent );
			hash = HashCode.Combine( hash, _alignself );
			hash = HashCode.Combine( hash, _alignitems );
			hash = HashCode.Combine( hash, _flexbasis );
			hash = HashCode.Combine( hash, _flexgrow );
			hash = HashCode.Combine( hash, _flexshrink );
			hash = HashCode.Combine( hash, _rowgap );
			hash = HashCode.Combine( hash, _columngap );
			hash = HashCode.Combine( hash, _aspectratio );
			hash = HashCode.Combine( hash, _textalign );
			hash = HashCode.Combine( hash, _textoverflow );
			hash = HashCode.Combine( hash, _textfilter );
			hash = HashCode.Combine( hash, _wordbreak );
			hash = HashCode.Combine( hash, _textdecorationline );
			hash = HashCode.Combine( hash, _textdecorationcolor );
			hash = HashCode.Combine( hash, _textdecorationthickness );
			hash = HashCode.Combine( hash, _textdecorationskipink );
			hash = HashCode.Combine( hash, _textdecorationstyle );
			hash = HashCode.Combine( hash, _textunderlineoffset );
			hash = HashCode.Combine( hash, _textoverlineoffset );
			hash = HashCode.Combine( hash, _textlinethroughoffset );
			hash = HashCode.Combine( hash, _fontstyle );
			hash = HashCode.Combine( hash, _transform );
			hash = HashCode.Combine( hash, _texttransform );
			hash = HashCode.Combine( hash, _transformoriginx );
			hash = HashCode.Combine( hash, _transformoriginy );
			hash = HashCode.Combine( hash, _letterspacing );
			hash = HashCode.Combine( hash, _lineheight );
			hash = HashCode.Combine( hash, _wordspacing );
			hash = HashCode.Combine( hash, _whitespace );
			hash = HashCode.Combine( hash, _zindex );
			hash = HashCode.Combine( hash, _order );
			hash = HashCode.Combine( hash, _soundin );
			hash = HashCode.Combine( hash, _soundout );
			hash = HashCode.Combine( hash, _backdropfilterblur );
			hash = HashCode.Combine( hash, _backdropfilterbrightness );
			hash = HashCode.Combine( hash, _backdropfiltercontrast );
			hash = HashCode.Combine( hash, _backdropfiltersaturate );
			hash = HashCode.Combine( hash, _backdropfiltersepia );
			hash = HashCode.Combine( hash, _backdropfilterinvert );
			hash = HashCode.Combine( hash, _backdropfilterhuerotate );
			hash = HashCode.Combine( hash, _filterblur );
			hash = HashCode.Combine( hash, _filtersaturate );
			hash = HashCode.Combine( hash, _filtersepia );
			hash = HashCode.Combine( hash, _filterbrightness );
			hash = HashCode.Combine( hash, _filterhuerotate );
			hash = HashCode.Combine( hash, _filterinvert );
			hash = HashCode.Combine( hash, _filtercontrast );
			hash = HashCode.Combine( hash, _filtertint );
			hash = HashCode.Combine( hash, _filterborderwidth );
			hash = HashCode.Combine( hash, _filterbordercolor );
			hash = HashCode.Combine( hash, _maskmode );
			hash = HashCode.Combine( hash, _maskrepeat );
			hash = HashCode.Combine( hash, _masksizex );
			hash = HashCode.Combine( hash, _masksizey );
			hash = HashCode.Combine( hash, _maskpositionx );
			hash = HashCode.Combine( hash, _maskpositiony );
			hash = HashCode.Combine( hash, _maskangle );
			hash = HashCode.Combine( hash, _maskscope );
			hash = HashCode.Combine( hash, _backgroundsizex );
			hash = HashCode.Combine( hash, _backgroundsizey );
			hash = HashCode.Combine( hash, _backgroundpositionx );
			hash = HashCode.Combine( hash, _backgroundpositiony );
			hash = HashCode.Combine( hash, _backgroundrepeat );
			hash = HashCode.Combine( hash, _borderimagewidthleft );
			hash = HashCode.Combine( hash, _borderimagewidthright );
			hash = HashCode.Combine( hash, _borderimagewidthtop );
			hash = HashCode.Combine( hash, _borderimagewidthbottom );
			hash = HashCode.Combine( hash, _borderimagefill );
			hash = HashCode.Combine( hash, _borderimagerepeat );
			hash = HashCode.Combine( hash, _borderimagetint );
			hash = HashCode.Combine( hash, _backgroundblendmode );
			hash = HashCode.Combine( hash, _backgroundtint );
			hash = HashCode.Combine( hash, _backgroundangle );
			hash = HashCode.Combine( hash, _textbackgroundangle );
			hash = HashCode.Combine( hash, _perspectiveoriginx );
			hash = HashCode.Combine( hash, _perspectiveoriginy );
			hash = HashCode.Combine( hash, _textstrokecolor );
			hash = HashCode.Combine( hash, _textstrokewidth );
			hash = HashCode.Combine( hash, _imagerendering );
			hash = HashCode.Combine( hash, _animationdelay );
			hash = HashCode.Combine( hash, _animationdirection );
			hash = HashCode.Combine( hash, _animationduration );
			hash = HashCode.Combine( hash, _animationfillmode );
			hash = HashCode.Combine( hash, _animationiterationcount );
			hash = HashCode.Combine( hash, _animationname );
			hash = HashCode.Combine( hash, _animationplaystate );
			hash = HashCode.Combine( hash, _animationtimingfunction );
			hash = HashCode.Combine( hash, _fontsmooth );
			hash = HashCode.Combine( hash, _objectfit );

		return hash;
	}

	/// <summary>
	/// Lerp every property in this stylesheet
	/// </summary>
	public virtual void FromLerp( BaseStyles from, BaseStyles to, float delta )
	{
		LerpProperty( "width", from, to, delta );
		LerpProperty( "min-width", from, to, delta );
		LerpProperty( "max-width", from, to, delta );
		LerpProperty( "height", from, to, delta );
		LerpProperty( "min-height", from, to, delta );
		LerpProperty( "max-height", from, to, delta );
		LerpProperty( "left", from, to, delta );
		LerpProperty( "top", from, to, delta );
		LerpProperty( "right", from, to, delta );
		LerpProperty( "bottom", from, to, delta );
		LerpProperty( "opacity", from, to, delta );
		LerpProperty( "background-color", from, to, delta );
		LerpProperty( "padding-left", from, to, delta );
		LerpProperty( "padding-top", from, to, delta );
		LerpProperty( "padding-right", from, to, delta );
		LerpProperty( "padding-bottom", from, to, delta );
		LerpProperty( "margin-left", from, to, delta );
		LerpProperty( "margin-top", from, to, delta );
		LerpProperty( "margin-right", from, to, delta );
		LerpProperty( "margin-bottom", from, to, delta );
		LerpProperty( "border-top-left-radius", from, to, delta );
		LerpProperty( "border-top-right-radius", from, to, delta );
		LerpProperty( "border-bottom-right-radius", from, to, delta );
		LerpProperty( "border-bottom-left-radius", from, to, delta );
		LerpProperty( "border-left-width", from, to, delta );
		LerpProperty( "border-top-width", from, to, delta );
		LerpProperty( "border-right-width", from, to, delta );
		LerpProperty( "border-bottom-width", from, to, delta );
		LerpProperty( "border-left-color", from, to, delta );
		LerpProperty( "border-top-color", from, to, delta );
		LerpProperty( "border-right-color", from, to, delta );
		LerpProperty( "border-bottom-color", from, to, delta );
		LerpProperty( "font-size", from, to, delta );
		LerpProperty( "font-color", from, to, delta );
		LerpProperty( "font-weight", from, to, delta );
		LerpProperty( "caret-color", from, to, delta );
		LerpProperty( "flex-basis", from, to, delta );
		LerpProperty( "flex-grow", from, to, delta );
		LerpProperty( "flex-shrink", from, to, delta );
		LerpProperty( "row-gap", from, to, delta );
		LerpProperty( "column-gap", from, to, delta );
		LerpProperty( "text-decoration-color", from, to, delta );
		LerpProperty( "text-decoration-thickness", from, to, delta );
		LerpProperty( "text-underline-offset", from, to, delta );
		LerpProperty( "text-overline-offset", from, to, delta );
		LerpProperty( "text-line-through-offset", from, to, delta );
		LerpProperty( "transform", from, to, delta );
		LerpProperty( "transform-origin-x", from, to, delta );
		LerpProperty( "transform-origin-y", from, to, delta );
		LerpProperty( "letter-spacing", from, to, delta );
		LerpProperty( "line-height", from, to, delta );
		LerpProperty( "word-spacing", from, to, delta );
		LerpProperty( "z-index", from, to, delta );
		LerpProperty( "order", from, to, delta );
		LerpProperty( "backdrop-filter-blur", from, to, delta );
		LerpProperty( "backdrop-filter-brightness", from, to, delta );
		LerpProperty( "backdrop-filter-contrast", from, to, delta );
		LerpProperty( "backdrop-filter-saturate", from, to, delta );
		LerpProperty( "backdrop-filter-sepia", from, to, delta );
		LerpProperty( "backdrop-filter-invert", from, to, delta );
		LerpProperty( "backdrop-filter-hue-rotate", from, to, delta );
		LerpProperty( "filter-blur", from, to, delta );
		LerpProperty( "filter-saturate", from, to, delta );
		LerpProperty( "filter-sepia", from, to, delta );
		LerpProperty( "filter-brightness", from, to, delta );
		LerpProperty( "filter-hue-rotate", from, to, delta );
		LerpProperty( "filter-invert", from, to, delta );
		LerpProperty( "filter-contrast", from, to, delta );
		LerpProperty( "filter-tint", from, to, delta );
		LerpProperty( "filter-border-width", from, to, delta );
		LerpProperty( "filter-border-color", from, to, delta );
		LerpProperty( "mask-size-x", from, to, delta );
		LerpProperty( "mask-size-y", from, to, delta );
		LerpProperty( "mask-position-x", from, to, delta );
		LerpProperty( "mask-position-y", from, to, delta );
		LerpProperty( "mask-angle", from, to, delta );
		LerpProperty( "background-size-x", from, to, delta );
		LerpProperty( "background-size-y", from, to, delta );
		LerpProperty( "background-position-x", from, to, delta );
		LerpProperty( "background-position-y", from, to, delta );
		LerpProperty( "border-image-width-left", from, to, delta );
		LerpProperty( "border-image-width-right", from, to, delta );
		LerpProperty( "border-image-width-top", from, to, delta );
		LerpProperty( "border-image-width-bottom", from, to, delta );
		LerpProperty( "border-image-tint", from, to, delta );
		LerpProperty( "background-tint", from, to, delta );
		LerpProperty( "background-angle", from, to, delta );
		LerpProperty( "text-background-angle", from, to, delta );
		LerpProperty( "perspective-origin-x", from, to, delta );
		LerpProperty( "perspective-origin-y", from, to, delta );
		LerpProperty( "text-stroke-color", from, to, delta );
		LerpProperty( "text-stroke-width", from, to, delta );
		LerpProperty( "animation-iteration-count", from, to, delta );
	}
	
	/// <summary>
	/// Lerp a specific property by name
	/// </summary>
	public virtual void LerpProperty( string name, BaseStyles from, BaseStyles to, float delta )
	{
		switch ( name )
		{
			case "width":
				Lerp( ref _width, from._width, to._width, Length.Undefined, delta );
				break;
			case "min-width":
				Lerp( ref _minwidth, from._minwidth, to._minwidth, 0, delta );
				break;
			case "max-width":
				Lerp( ref _maxwidth, from._maxwidth, to._maxwidth, Length.Undefined, delta );
				break;
			case "height":
				Lerp( ref _height, from._height, to._height, Length.Undefined, delta );
				break;
			case "min-height":
				Lerp( ref _minheight, from._minheight, to._minheight, 0, delta );
				break;
			case "max-height":
				Lerp( ref _maxheight, from._maxheight, to._maxheight, Length.Undefined, delta );
				break;
			case "left":
				Lerp( ref _left, from._left, to._left, Length.Undefined, delta );
				break;
			case "top":
				Lerp( ref _top, from._top, to._top, Length.Undefined, delta );
				break;
			case "right":
				Lerp( ref _right, from._right, to._right, Length.Undefined, delta );
				break;
			case "bottom":
				Lerp( ref _bottom, from._bottom, to._bottom, Length.Undefined, delta );
				break;
			case "opacity":
				Lerp( ref _opacity, from._opacity, to._opacity, 1, delta );
				break;
			case "background-color":
				Lerp( ref _backgroundcolor, from._backgroundcolor, to._backgroundcolor, Color.Transparent, delta );
				break;
			case "padding-left":
				Lerp( ref _paddingleft, from._paddingleft, to._paddingleft, 0, delta );
				break;
			case "padding-top":
				Lerp( ref _paddingtop, from._paddingtop, to._paddingtop, 0, delta );
				break;
			case "padding-right":
				Lerp( ref _paddingright, from._paddingright, to._paddingright, 0, delta );
				break;
			case "padding-bottom":
				Lerp( ref _paddingbottom, from._paddingbottom, to._paddingbottom, 0, delta );
				break;
			case "margin-left":
				Lerp( ref _marginleft, from._marginleft, to._marginleft, 0, delta );
				break;
			case "margin-top":
				Lerp( ref _margintop, from._margintop, to._margintop, 0, delta );
				break;
			case "margin-right":
				Lerp( ref _marginright, from._marginright, to._marginright, 0, delta );
				break;
			case "margin-bottom":
				Lerp( ref _marginbottom, from._marginbottom, to._marginbottom, 0, delta );
				break;
			case "border-top-left-radius":
				Lerp( ref _bordertopleftradius, from._bordertopleftradius, to._bordertopleftradius, 0, delta );
				break;
			case "border-top-right-radius":
				Lerp( ref _bordertoprightradius, from._bordertoprightradius, to._bordertoprightradius, 0, delta );
				break;
			case "border-bottom-right-radius":
				Lerp( ref _borderbottomrightradius, from._borderbottomrightradius, to._borderbottomrightradius, 0, delta );
				break;
			case "border-bottom-left-radius":
				Lerp( ref _borderbottomleftradius, from._borderbottomleftradius, to._borderbottomleftradius, 0, delta );
				break;
			case "border-left-width":
				Lerp( ref _borderleftwidth, from._borderleftwidth, to._borderleftwidth, 0, delta );
				break;
			case "border-top-width":
				Lerp( ref _bordertopwidth, from._bordertopwidth, to._bordertopwidth, 0, delta );
				break;
			case "border-right-width":
				Lerp( ref _borderrightwidth, from._borderrightwidth, to._borderrightwidth, 0, delta );
				break;
			case "border-bottom-width":
				Lerp( ref _borderbottomwidth, from._borderbottomwidth, to._borderbottomwidth, 0, delta );
				break;
			case "border-left-color":
				Lerp( ref _borderleftcolor, from._borderleftcolor, to._borderleftcolor, Color.White, delta );
				break;
			case "border-top-color":
				Lerp( ref _bordertopcolor, from._bordertopcolor, to._bordertopcolor, Color.White, delta );
				break;
			case "border-right-color":
				Lerp( ref _borderrightcolor, from._borderrightcolor, to._borderrightcolor, Color.White, delta );
				break;
			case "border-bottom-color":
				Lerp( ref _borderbottomcolor, from._borderbottomcolor, to._borderbottomcolor, Color.White, delta );
				break;
			case "font-size":
				Lerp( ref _fontsize, from._fontsize, to._fontsize, from._fontsize ?? Length.Pixels( 13 ).Value, delta );
				break;
			case "font-color":
				Lerp( ref _fontcolor, from._fontcolor, to._fontcolor, from._fontcolor ?? Color.Black, delta );
				break;
			case "font-weight":
				Lerp( ref _fontweight, from._fontweight, to._fontweight, from._fontweight ?? 400, delta );
				break;
			case "caret-color":
				Lerp( ref _caretcolor, from._caretcolor, to._caretcolor, null, delta );
				break;
			case "flex-basis":
				Lerp( ref _flexbasis, from._flexbasis, to._flexbasis, Length.Auto, delta );
				break;
			case "flex-grow":
				Lerp( ref _flexgrow, from._flexgrow, to._flexgrow, 0, delta );
				break;
			case "flex-shrink":
				Lerp( ref _flexshrink, from._flexshrink, to._flexshrink, 1, delta );
				break;
			case "row-gap":
				Lerp( ref _rowgap, from._rowgap, to._rowgap, Length.Auto, delta );
				break;
			case "column-gap":
				Lerp( ref _columngap, from._columngap, to._columngap, Length.Auto, delta );
				break;
			case "text-decoration-color":
				Lerp( ref _textdecorationcolor, from._textdecorationcolor, to._textdecorationcolor, from._textdecorationcolor ?? Color.White, delta );
				break;
			case "text-decoration-thickness":
				Lerp( ref _textdecorationthickness, from._textdecorationthickness, to._textdecorationthickness, from._textdecorationthickness ?? 1, delta );
				break;
			case "text-underline-offset":
				Lerp( ref _textunderlineoffset, from._textunderlineoffset, to._textunderlineoffset, from._textunderlineoffset ?? 0, delta );
				break;
			case "text-overline-offset":
				Lerp( ref _textoverlineoffset, from._textoverlineoffset, to._textoverlineoffset, from._textoverlineoffset ?? 0, delta );
				break;
			case "text-line-through-offset":
				Lerp( ref _textlinethroughoffset, from._textlinethroughoffset, to._textlinethroughoffset, from._textlinethroughoffset ?? 0, delta );
				break;
			case "transform":
				Lerp( ref _transform, from._transform, to._transform, new UI.PanelTransform(), delta );
				break;
			case "transform-origin-x":
				Lerp( ref _transformoriginx, from._transformoriginx, to._transformoriginx, Length.Percent( 50 ).Value, delta );
				break;
			case "transform-origin-y":
				Lerp( ref _transformoriginy, from._transformoriginy, to._transformoriginy, Length.Percent( 50 ).Value, delta );
				break;
			case "letter-spacing":
				Lerp( ref _letterspacing, from._letterspacing, to._letterspacing, from._letterspacing ?? Length.Percent( 0 ).Value, delta );
				break;
			case "line-height":
				Lerp( ref _lineheight, from._lineheight, to._lineheight, from._lineheight ?? Length.Percent( 100 ).Value, delta );
				break;
			case "word-spacing":
				Lerp( ref _wordspacing, from._wordspacing, to._wordspacing, from._wordspacing ?? Length.Percent( 0 ).Value, delta );
				break;
			case "z-index":
				Lerp( ref _zindex, from._zindex, to._zindex, 0, delta );
				break;
			case "order":
				Lerp( ref _order, from._order, to._order, 0, delta );
				break;
			case "backdrop-filter-blur":
				Lerp( ref _backdropfilterblur, from._backdropfilterblur, to._backdropfilterblur, 0, delta );
				break;
			case "backdrop-filter-brightness":
				Lerp( ref _backdropfilterbrightness, from._backdropfilterbrightness, to._backdropfilterbrightness, 1, delta );
				break;
			case "backdrop-filter-contrast":
				Lerp( ref _backdropfiltercontrast, from._backdropfiltercontrast, to._backdropfiltercontrast, 1, delta );
				break;
			case "backdrop-filter-saturate":
				Lerp( ref _backdropfiltersaturate, from._backdropfiltersaturate, to._backdropfiltersaturate, 1, delta );
				break;
			case "backdrop-filter-sepia":
				Lerp( ref _backdropfiltersepia, from._backdropfiltersepia, to._backdropfiltersepia, 0, delta );
				break;
			case "backdrop-filter-invert":
				Lerp( ref _backdropfilterinvert, from._backdropfilterinvert, to._backdropfilterinvert, 0, delta );
				break;
			case "backdrop-filter-hue-rotate":
				Lerp( ref _backdropfilterhuerotate, from._backdropfilterhuerotate, to._backdropfilterhuerotate, 0, delta );
				break;
			case "filter-blur":
				Lerp( ref _filterblur, from._filterblur, to._filterblur, 0, delta );
				break;
			case "filter-saturate":
				Lerp( ref _filtersaturate, from._filtersaturate, to._filtersaturate, 1, delta );
				break;
			case "filter-sepia":
				Lerp( ref _filtersepia, from._filtersepia, to._filtersepia, 0, delta );
				break;
			case "filter-brightness":
				Lerp( ref _filterbrightness, from._filterbrightness, to._filterbrightness, 1, delta );
				break;
			case "filter-hue-rotate":
				Lerp( ref _filterhuerotate, from._filterhuerotate, to._filterhuerotate, 0, delta );
				break;
			case "filter-invert":
				Lerp( ref _filterinvert, from._filterinvert, to._filterinvert, 0, delta );
				break;
			case "filter-contrast":
				Lerp( ref _filtercontrast, from._filtercontrast, to._filtercontrast, 1, delta );
				break;
			case "filter-tint":
				Lerp( ref _filtertint, from._filtertint, to._filtertint, Color.White, delta );
				break;
			case "filter-border-width":
				Lerp( ref _filterborderwidth, from._filterborderwidth, to._filterborderwidth, 0, delta );
				break;
			case "filter-border-color":
				Lerp( ref _filterbordercolor, from._filterbordercolor, to._filterbordercolor, Color.White, delta );
				break;
			case "mask-size-x":
				Lerp( ref _masksizex, from._masksizex, to._masksizex, Length.Undefined, delta );
				break;
			case "mask-size-y":
				Lerp( ref _masksizey, from._masksizey, to._masksizey, Length.Undefined, delta );
				break;
			case "mask-position-x":
				Lerp( ref _maskpositionx, from._maskpositionx, to._maskpositionx, Length.Percent( 0 ).Value, delta );
				break;
			case "mask-position-y":
				Lerp( ref _maskpositiony, from._maskpositiony, to._maskpositiony, Length.Percent( 0 ).Value, delta );
				break;
			case "mask-angle":
				Lerp( ref _maskangle, from._maskangle, to._maskangle, 0, delta );
				break;
			case "background-size-x":
				Lerp( ref _backgroundsizex, from._backgroundsizex, to._backgroundsizex, Length.Undefined, delta );
				break;
			case "background-size-y":
				Lerp( ref _backgroundsizey, from._backgroundsizey, to._backgroundsizey, Length.Undefined, delta );
				break;
			case "background-position-x":
				Lerp( ref _backgroundpositionx, from._backgroundpositionx, to._backgroundpositionx, Length.Percent( 0 ).Value, delta );
				break;
			case "background-position-y":
				Lerp( ref _backgroundpositiony, from._backgroundpositiony, to._backgroundpositiony, Length.Percent( 0 ).Value, delta );
				break;
			case "border-image-width-left":
				Lerp( ref _borderimagewidthleft, from._borderimagewidthleft, to._borderimagewidthleft, 1, delta );
				break;
			case "border-image-width-right":
				Lerp( ref _borderimagewidthright, from._borderimagewidthright, to._borderimagewidthright, 1, delta );
				break;
			case "border-image-width-top":
				Lerp( ref _borderimagewidthtop, from._borderimagewidthtop, to._borderimagewidthtop, 1, delta );
				break;
			case "border-image-width-bottom":
				Lerp( ref _borderimagewidthbottom, from._borderimagewidthbottom, to._borderimagewidthbottom, 1, delta );
				break;
			case "border-image-tint":
				Lerp( ref _borderimagetint, from._borderimagetint, to._borderimagetint, Color.White, delta );
				break;
			case "background-tint":
				Lerp( ref _backgroundtint, from._backgroundtint, to._backgroundtint, Color.White, delta );
				break;
			case "background-angle":
				Lerp( ref _backgroundangle, from._backgroundangle, to._backgroundangle, 0, delta );
				break;
			case "text-background-angle":
				Lerp( ref _textbackgroundangle, from._textbackgroundangle, to._textbackgroundangle, 0, delta );
				break;
			case "perspective-origin-x":
				Lerp( ref _perspectiveoriginx, from._perspectiveoriginx, to._perspectiveoriginx, Length.Percent( 50 ).Value, delta );
				break;
			case "perspective-origin-y":
				Lerp( ref _perspectiveoriginy, from._perspectiveoriginy, to._perspectiveoriginy, Length.Percent( 50 ).Value, delta );
				break;
			case "text-stroke-color":
				Lerp( ref _textstrokecolor, from._textstrokecolor, to._textstrokecolor, from._textstrokecolor ?? Color.White, delta );
				break;
			case "text-stroke-width":
				Lerp( ref _textstrokewidth, from._textstrokewidth, to._textstrokewidth, from._textstrokewidth ?? 0, delta );
				break;
			case "animation-iteration-count":
				Lerp( ref _animationiterationcount, from._animationiterationcount, to._animationiterationcount, 1, delta );
				break;
		}
	}
	
	/// <summary>
	/// Perform a deep copy of this stylesheet
	/// </summary>
	public object Clone()
	{
		var copy = this.MemberwiseClone() as BaseStyles;
		copy._content = _content;
		copy._width = _width;
		copy._minwidth = _minwidth;
		copy._maxwidth = _maxwidth;
		copy._height = _height;
		copy._minheight = _minheight;
		copy._maxheight = _maxheight;
		copy._left = _left;
		copy._top = _top;
		copy._right = _right;
		copy._bottom = _bottom;
		copy._opacity = _opacity;
		copy._backgroundcolor = _backgroundcolor;
		copy._paddingleft = _paddingleft;
		copy._paddingtop = _paddingtop;
		copy._paddingright = _paddingright;
		copy._paddingbottom = _paddingbottom;
		copy._marginleft = _marginleft;
		copy._margintop = _margintop;
		copy._marginright = _marginright;
		copy._marginbottom = _marginbottom;
		copy._bordertopleftradius = _bordertopleftradius;
		copy._bordertoprightradius = _bordertoprightradius;
		copy._borderbottomrightradius = _borderbottomrightradius;
		copy._borderbottomleftradius = _borderbottomleftradius;
		copy._borderleftwidth = _borderleftwidth;
		copy._bordertopwidth = _bordertopwidth;
		copy._borderrightwidth = _borderrightwidth;
		copy._borderbottomwidth = _borderbottomwidth;
		copy._borderleftcolor = _borderleftcolor;
		copy._bordertopcolor = _bordertopcolor;
		copy._borderrightcolor = _borderrightcolor;
		copy._borderbottomcolor = _borderbottomcolor;
		copy._fontsize = _fontsize;
		copy._fontcolor = _fontcolor;
		copy._fontweight = _fontweight;
		copy._fontfamily = _fontfamily;
		copy._caretcolor = _caretcolor;
		copy._cursor = _cursor;
		copy._pointerevents = _pointerevents;
		copy._mixblendmode = _mixblendmode;
		copy._position = _position;
		copy._overflowx = _overflowx;
		copy._overflowy = _overflowy;
		copy._flexdirection = _flexdirection;
		copy._justifycontent = _justifycontent;
		copy._display = _display;
		copy._flexwrap = _flexwrap;
		copy._aligncontent = _aligncontent;
		copy._alignself = _alignself;
		copy._alignitems = _alignitems;
		copy._flexbasis = _flexbasis;
		copy._flexgrow = _flexgrow;
		copy._flexshrink = _flexshrink;
		copy._rowgap = _rowgap;
		copy._columngap = _columngap;
		copy._aspectratio = _aspectratio;
		copy._textalign = _textalign;
		copy._textoverflow = _textoverflow;
		copy._textfilter = _textfilter;
		copy._wordbreak = _wordbreak;
		copy._textdecorationline = _textdecorationline;
		copy._textdecorationcolor = _textdecorationcolor;
		copy._textdecorationthickness = _textdecorationthickness;
		copy._textdecorationskipink = _textdecorationskipink;
		copy._textdecorationstyle = _textdecorationstyle;
		copy._textunderlineoffset = _textunderlineoffset;
		copy._textoverlineoffset = _textoverlineoffset;
		copy._textlinethroughoffset = _textlinethroughoffset;
		copy._fontstyle = _fontstyle;
		copy._transform = _transform;
		copy._texttransform = _texttransform;
		copy._transformoriginx = _transformoriginx;
		copy._transformoriginy = _transformoriginy;
		copy._letterspacing = _letterspacing;
		copy._lineheight = _lineheight;
		copy._wordspacing = _wordspacing;
		copy._whitespace = _whitespace;
		copy._zindex = _zindex;
		copy._order = _order;
		copy._soundin = _soundin;
		copy._soundout = _soundout;
		copy._backdropfilterblur = _backdropfilterblur;
		copy._backdropfilterbrightness = _backdropfilterbrightness;
		copy._backdropfiltercontrast = _backdropfiltercontrast;
		copy._backdropfiltersaturate = _backdropfiltersaturate;
		copy._backdropfiltersepia = _backdropfiltersepia;
		copy._backdropfilterinvert = _backdropfilterinvert;
		copy._backdropfilterhuerotate = _backdropfilterhuerotate;
		copy._filterblur = _filterblur;
		copy._filtersaturate = _filtersaturate;
		copy._filtersepia = _filtersepia;
		copy._filterbrightness = _filterbrightness;
		copy._filterhuerotate = _filterhuerotate;
		copy._filterinvert = _filterinvert;
		copy._filtercontrast = _filtercontrast;
		copy._filtertint = _filtertint;
		copy._filterborderwidth = _filterborderwidth;
		copy._filterbordercolor = _filterbordercolor;
		copy._maskmode = _maskmode;
		copy._maskrepeat = _maskrepeat;
		copy._masksizex = _masksizex;
		copy._masksizey = _masksizey;
		copy._maskpositionx = _maskpositionx;
		copy._maskpositiony = _maskpositiony;
		copy._maskangle = _maskangle;
		copy._maskscope = _maskscope;
		copy._backgroundsizex = _backgroundsizex;
		copy._backgroundsizey = _backgroundsizey;
		copy._backgroundpositionx = _backgroundpositionx;
		copy._backgroundpositiony = _backgroundpositiony;
		copy._backgroundrepeat = _backgroundrepeat;
		copy._borderimagewidthleft = _borderimagewidthleft;
		copy._borderimagewidthright = _borderimagewidthright;
		copy._borderimagewidthtop = _borderimagewidthtop;
		copy._borderimagewidthbottom = _borderimagewidthbottom;
		copy._borderimagefill = _borderimagefill;
		copy._borderimagerepeat = _borderimagerepeat;
		copy._borderimagetint = _borderimagetint;
		copy._backgroundblendmode = _backgroundblendmode;
		copy._backgroundtint = _backgroundtint;
		copy._backgroundangle = _backgroundangle;
		copy._textbackgroundangle = _textbackgroundangle;
		copy._perspectiveoriginx = _perspectiveoriginx;
		copy._perspectiveoriginy = _perspectiveoriginy;
		copy._textstrokecolor = _textstrokecolor;
		copy._textstrokewidth = _textstrokewidth;
		copy._imagerendering = _imagerendering;
		copy._animationdelay = _animationdelay;
		copy._animationdirection = _animationdirection;
		copy._animationduration = _animationduration;
		copy._animationfillmode = _animationfillmode;
		copy._animationiterationcount = _animationiterationcount;
		copy._animationname = _animationname;
		copy._animationplaystate = _animationplaystate;
		copy._animationtimingfunction = _animationtimingfunction;
		copy._fontsmooth = _fontsmooth;
		copy._objectfit = _objectfit;
		return copy;
	}

	public void ApplyCascading( BaseStyles parent )
	{
		if ( _fontsize == null ) _fontsize = parent._fontsize;
		if ( _fontcolor == null ) _fontcolor = parent._fontcolor;
		if ( _fontweight == null ) _fontweight = parent._fontweight;
		if ( _fontfamily == null ) _fontfamily = parent._fontfamily;
		if ( _cursor == null ) _cursor = parent._cursor;
		if ( _pointerevents == null ) _pointerevents = parent._pointerevents;
		if ( _mixblendmode == null ) _mixblendmode = parent._mixblendmode;
		if ( _textalign == null ) _textalign = parent._textalign;
		if ( _textoverflow == null ) _textoverflow = parent._textoverflow;
		if ( _textfilter == null ) _textfilter = parent._textfilter;
		if ( _wordbreak == null ) _wordbreak = parent._wordbreak;
		if ( _textdecorationline == null ) _textdecorationline = parent._textdecorationline;
		if ( _textdecorationcolor == null ) _textdecorationcolor = parent._textdecorationcolor;
		if ( _textdecorationthickness == null ) _textdecorationthickness = parent._textdecorationthickness;
		if ( _textdecorationskipink == null ) _textdecorationskipink = parent._textdecorationskipink;
		if ( _textdecorationstyle == null ) _textdecorationstyle = parent._textdecorationstyle;
		if ( _textunderlineoffset == null ) _textunderlineoffset = parent._textunderlineoffset;
		if ( _textoverlineoffset == null ) _textoverlineoffset = parent._textoverlineoffset;
		if ( _textlinethroughoffset == null ) _textlinethroughoffset = parent._textlinethroughoffset;
		if ( _fontstyle == null ) _fontstyle = parent._fontstyle;
		if ( _texttransform == null ) _texttransform = parent._texttransform;
		if ( _letterspacing == null ) _letterspacing = parent._letterspacing;
		if ( _lineheight == null ) _lineheight = parent._lineheight;
		if ( _wordspacing == null ) _wordspacing = parent._wordspacing;
		if ( _whitespace == null ) _whitespace = parent._whitespace;
		if ( _textstrokecolor == null ) _textstrokecolor = parent._textstrokecolor;
		if ( _textstrokewidth == null ) _textstrokewidth = parent._textstrokewidth;
		if ( _imagerendering == null ) _imagerendering = parent._imagerendering;
		if ( _fontsmooth == null ) _fontsmooth = parent._fontsmooth;
	}

	private void FillDefaultsGenerated()
	{
		if ( !_width.HasValue ) _width = Length.Undefined;
		if ( !_minwidth.HasValue ) _minwidth = 0;
		if ( !_maxwidth.HasValue ) _maxwidth = Length.Undefined;
		if ( !_height.HasValue ) _height = Length.Undefined;
		if ( !_minheight.HasValue ) _minheight = 0;
		if ( !_maxheight.HasValue ) _maxheight = Length.Undefined;
		if ( !_left.HasValue ) _left = Length.Undefined;
		if ( !_top.HasValue ) _top = Length.Undefined;
		if ( !_right.HasValue ) _right = Length.Undefined;
		if ( !_bottom.HasValue ) _bottom = Length.Undefined;
		if ( !_opacity.HasValue ) _opacity = 1;
		if ( !_backgroundcolor.HasValue ) _backgroundcolor = Color.Transparent;
		if ( !_paddingleft.HasValue ) _paddingleft = 0;
		if ( !_paddingtop.HasValue ) _paddingtop = 0;
		if ( !_paddingright.HasValue ) _paddingright = 0;
		if ( !_paddingbottom.HasValue ) _paddingbottom = 0;
		if ( !_marginleft.HasValue ) _marginleft = 0;
		if ( !_margintop.HasValue ) _margintop = 0;
		if ( !_marginright.HasValue ) _marginright = 0;
		if ( !_marginbottom.HasValue ) _marginbottom = 0;
		if ( !_bordertopleftradius.HasValue ) _bordertopleftradius = 0;
		if ( !_bordertoprightradius.HasValue ) _bordertoprightradius = 0;
		if ( !_borderbottomrightradius.HasValue ) _borderbottomrightradius = 0;
		if ( !_borderbottomleftradius.HasValue ) _borderbottomleftradius = 0;
		if ( !_borderleftwidth.HasValue ) _borderleftwidth = 0;
		if ( !_bordertopwidth.HasValue ) _bordertopwidth = 0;
		if ( !_borderrightwidth.HasValue ) _borderrightwidth = 0;
		if ( !_borderbottomwidth.HasValue ) _borderbottomwidth = 0;
		if ( !_borderleftcolor.HasValue ) _borderleftcolor = Color.White;
		if ( !_bordertopcolor.HasValue ) _bordertopcolor = Color.White;
		if ( !_borderrightcolor.HasValue ) _borderrightcolor = Color.White;
		if ( !_borderbottomcolor.HasValue ) _borderbottomcolor = Color.White;
		if ( !_fontsize.HasValue ) _fontsize = Length.Pixels( 13 ).Value;
		if ( !_fontcolor.HasValue ) _fontcolor = Color.Black;
		if ( !_fontweight.HasValue ) _fontweight = 400;
		if ( !_caretcolor.HasValue ) _caretcolor = null;
		if ( !_pointerevents.HasValue ) _pointerevents = UI.PointerEvents.None;
		if ( !_position.HasValue ) _position = UI.PositionMode.Static;
		if ( !_overflowx.HasValue ) _overflowx = OverflowMode.Visible;
		if ( !_overflowy.HasValue ) _overflowy = OverflowMode.Visible;
		if ( !_flexdirection.HasValue ) _flexdirection = UI.FlexDirection.Row;
		if ( !_justifycontent.HasValue ) _justifycontent = Justify.FlexStart;
		if ( !_display.HasValue ) _display = DisplayMode.Flex;
		if ( !_flexwrap.HasValue ) _flexwrap = Wrap.NoWrap;
		if ( !_aligncontent.HasValue ) _aligncontent = Align.Auto;
		if ( !_alignself.HasValue ) _alignself = Align.Auto;
		if ( !_alignitems.HasValue ) _alignitems = Align.Stretch;
		if ( !_flexbasis.HasValue ) _flexbasis = Length.Auto;
		if ( !_flexgrow.HasValue ) _flexgrow = 0;
		if ( !_flexshrink.HasValue ) _flexshrink = 1;
		if ( !_rowgap.HasValue ) _rowgap = Length.Auto;
		if ( !_columngap.HasValue ) _columngap = Length.Auto;
		if ( !_textalign.HasValue ) _textalign = UI.TextAlign.Left;
		if ( !_textoverflow.HasValue ) _textoverflow = UI.TextOverflow.None;
		if ( !_textfilter.HasValue ) _textfilter = Rendering.FilterMode.Bilinear;
		if ( !_wordbreak.HasValue ) _wordbreak = UI.WordBreak.Normal;
		if ( !_textdecorationline.HasValue ) _textdecorationline = TextDecoration.None;
		if ( !_textdecorationcolor.HasValue ) _textdecorationcolor = Color.White;
		if ( !_textdecorationthickness.HasValue ) _textdecorationthickness = 1;
		if ( !_textdecorationskipink.HasValue ) _textdecorationskipink = 0;
		if ( !_textdecorationstyle.HasValue ) _textdecorationstyle = UI.TextDecorationStyle.Solid;
		if ( !_textunderlineoffset.HasValue ) _textunderlineoffset = 0;
		if ( !_textoverlineoffset.HasValue ) _textoverlineoffset = 0;
		if ( !_textlinethroughoffset.HasValue ) _textlinethroughoffset = 0;
		if ( !_fontstyle.HasValue ) _fontstyle = UI.FontStyle.None;
		if ( !_transform.HasValue ) _transform = new UI.PanelTransform();
		if ( !_texttransform.HasValue ) _texttransform = UI.TextTransform.None;
		if ( !_transformoriginx.HasValue ) _transformoriginx = Length.Percent( 50 ).Value;
		if ( !_transformoriginy.HasValue ) _transformoriginy = Length.Percent( 50 ).Value;
		if ( !_letterspacing.HasValue ) _letterspacing = Length.Percent( 0 ).Value;
		if ( !_lineheight.HasValue ) _lineheight = Length.Percent( 100 ).Value;
		if ( !_wordspacing.HasValue ) _wordspacing = Length.Percent( 0 ).Value;
		if ( !_whitespace.HasValue ) _whitespace = UI.WhiteSpace.Normal;
		if ( !_zindex.HasValue ) _zindex = 0;
		if ( !_order.HasValue ) _order = 0;
		if ( !_backdropfilterblur.HasValue ) _backdropfilterblur = 0;
		if ( !_backdropfilterbrightness.HasValue ) _backdropfilterbrightness = 1;
		if ( !_backdropfiltercontrast.HasValue ) _backdropfiltercontrast = 1;
		if ( !_backdropfiltersaturate.HasValue ) _backdropfiltersaturate = 1;
		if ( !_backdropfiltersepia.HasValue ) _backdropfiltersepia = 0;
		if ( !_backdropfilterinvert.HasValue ) _backdropfilterinvert = 0;
		if ( !_backdropfilterhuerotate.HasValue ) _backdropfilterhuerotate = 0;
		if ( !_filterblur.HasValue ) _filterblur = 0;
		if ( !_filtersaturate.HasValue ) _filtersaturate = 1;
		if ( !_filtersepia.HasValue ) _filtersepia = 0;
		if ( !_filterbrightness.HasValue ) _filterbrightness = 1;
		if ( !_filterhuerotate.HasValue ) _filterhuerotate = 0;
		if ( !_filterinvert.HasValue ) _filterinvert = 0;
		if ( !_filtercontrast.HasValue ) _filtercontrast = 1;
		if ( !_filtertint.HasValue ) _filtertint = Color.White;
		if ( !_filterborderwidth.HasValue ) _filterborderwidth = 0;
		if ( !_filterbordercolor.HasValue ) _filterbordercolor = Color.White;
		if ( !_maskmode.HasValue ) _maskmode = UI.MaskMode.MatchSource;
		if ( !_maskrepeat.HasValue ) _maskrepeat = UI.BackgroundRepeat.Repeat;
		if ( !_masksizex.HasValue ) _masksizex = Length.Undefined;
		if ( !_masksizey.HasValue ) _masksizey = Length.Undefined;
		if ( !_maskpositionx.HasValue ) _maskpositionx = Length.Percent( 0 ).Value;
		if ( !_maskpositiony.HasValue ) _maskpositiony = Length.Percent( 0 ).Value;
		if ( !_maskangle.HasValue ) _maskangle = 0;
		if ( !_maskscope.HasValue ) _maskscope = UI.MaskScope.Default;
		if ( !_backgroundsizex.HasValue ) _backgroundsizex = Length.Undefined;
		if ( !_backgroundsizey.HasValue ) _backgroundsizey = Length.Undefined;
		if ( !_backgroundpositionx.HasValue ) _backgroundpositionx = Length.Percent( 0 ).Value;
		if ( !_backgroundpositiony.HasValue ) _backgroundpositiony = Length.Percent( 0 ).Value;
		if ( !_backgroundrepeat.HasValue ) _backgroundrepeat = UI.BackgroundRepeat.Repeat;
		if ( !_borderimagewidthleft.HasValue ) _borderimagewidthleft = 1;
		if ( !_borderimagewidthright.HasValue ) _borderimagewidthright = 1;
		if ( !_borderimagewidthtop.HasValue ) _borderimagewidthtop = 1;
		if ( !_borderimagewidthbottom.HasValue ) _borderimagewidthbottom = 1;
		if ( !_borderimagefill.HasValue ) _borderimagefill = UI.BorderImageFill.Unfilled;
		if ( !_borderimagerepeat.HasValue ) _borderimagerepeat = UI.BorderImageRepeat.Stretch;
		if ( !_borderimagetint.HasValue ) _borderimagetint = Color.White;
		if ( !_backgroundtint.HasValue ) _backgroundtint = Color.White;
		if ( !_backgroundangle.HasValue ) _backgroundangle = 0;
		if ( !_textbackgroundangle.HasValue ) _textbackgroundangle = 0;
		if ( !_perspectiveoriginx.HasValue ) _perspectiveoriginx = Length.Percent( 50 ).Value;
		if ( !_perspectiveoriginy.HasValue ) _perspectiveoriginy = Length.Percent( 50 ).Value;
		if ( !_textstrokecolor.HasValue ) _textstrokecolor = Color.White;
		if ( !_textstrokewidth.HasValue ) _textstrokewidth = 0;
		if ( !_imagerendering.HasValue ) _imagerendering = UI.ImageRendering.Anisotropic;
		if ( !_animationiterationcount.HasValue ) _animationiterationcount = 1;
		if ( !_fontsmooth.HasValue ) _fontsmooth = UI.FontSmooth.Auto;
		if ( !_objectfit.HasValue ) _objectfit = UI.ObjectFit.Cover;
	}

	internal bool IsDefault( string name )
	{
		switch ( name )
		{
			case "content": return (_content == "");
			case "width": return (_width == Length.Undefined);
			case "min-width": return (_minwidth == 0);
			case "max-width": return (_maxwidth == Length.Undefined);
			case "height": return (_height == Length.Undefined);
			case "min-height": return (_minheight == 0);
			case "max-height": return (_maxheight == Length.Undefined);
			case "left": return (_left == Length.Undefined);
			case "top": return (_top == Length.Undefined);
			case "right": return (_right == Length.Undefined);
			case "bottom": return (_bottom == Length.Undefined);
			case "opacity": return (_opacity == 1);
			case "background-color": return (_backgroundcolor == Color.Transparent);
			case "padding-left": return (_paddingleft == 0);
			case "padding-top": return (_paddingtop == 0);
			case "padding-right": return (_paddingright == 0);
			case "padding-bottom": return (_paddingbottom == 0);
			case "margin-left": return (_marginleft == 0);
			case "margin-top": return (_margintop == 0);
			case "margin-right": return (_marginright == 0);
			case "margin-bottom": return (_marginbottom == 0);
			case "border-top-left-radius": return (_bordertopleftradius == 0);
			case "border-top-right-radius": return (_bordertoprightradius == 0);
			case "border-bottom-right-radius": return (_borderbottomrightradius == 0);
			case "border-bottom-left-radius": return (_borderbottomleftradius == 0);
			case "border-left-width": return (_borderleftwidth == 0);
			case "border-top-width": return (_bordertopwidth == 0);
			case "border-right-width": return (_borderrightwidth == 0);
			case "border-bottom-width": return (_borderbottomwidth == 0);
			case "border-left-color": return (_borderleftcolor == Color.White);
			case "border-top-color": return (_bordertopcolor == Color.White);
			case "border-right-color": return (_borderrightcolor == Color.White);
			case "border-bottom-color": return (_borderbottomcolor == Color.White);
			case "font-size": return (_fontsize == Length.Pixels( 13 ).Value);
			case "font-color": return (_fontcolor == Color.Black);
			case "font-weight": return (_fontweight == 400);
			case "font-family": return (_fontfamily == "Arial");
			case "caret-color": return (_caretcolor == null);
			case "cursor": return (_cursor == "auto");
			case "pointer-events": return (_pointerevents == UI.PointerEvents.None);
			case "mix-blend-mode": return (_mixblendmode == "default");
			case "position": return (_position == UI.PositionMode.Static);
			case "overflow-x": return (_overflowx == OverflowMode.Visible);
			case "overflow-y": return (_overflowy == OverflowMode.Visible);
			case "flex-direction": return (_flexdirection == UI.FlexDirection.Row);
			case "justify-content": return (_justifycontent == Justify.FlexStart);
			case "display": return (_display == DisplayMode.Flex);
			case "flex-wrap": return (_flexwrap == Wrap.NoWrap);
			case "align-content": return (_aligncontent == Align.Auto);
			case "align-self": return (_alignself == Align.Auto);
			case "align-items": return (_alignitems == Align.Stretch);
			case "flex-basis": return (_flexbasis == Length.Auto);
			case "flex-grow": return (_flexgrow == 0);
			case "flex-shrink": return (_flexshrink == 1);
			case "row-gap": return (_rowgap == Length.Auto);
			case "column-gap": return (_columngap == Length.Auto);
			case "aspect-ratio": return (_aspectratio == float.NaN);
			case "text-align": return (_textalign == UI.TextAlign.Left);
			case "text-overflow": return (_textoverflow == UI.TextOverflow.None);
			case "text-filter": return (_textfilter == Rendering.FilterMode.Bilinear);
			case "word-break": return (_wordbreak == UI.WordBreak.Normal);
			case "text-decoration-line": return (_textdecorationline == TextDecoration.None);
			case "text-decoration-color": return (_textdecorationcolor == Color.White);
			case "text-decoration-thickness": return (_textdecorationthickness == 1);
			case "text-decoration-skip-ink": return (_textdecorationskipink == 0);
			case "text-decoration-style": return (_textdecorationstyle == UI.TextDecorationStyle.Solid);
			case "text-underline-offset": return (_textunderlineoffset == 0);
			case "text-overline-offset": return (_textoverlineoffset == 0);
			case "text-line-through-offset": return (_textlinethroughoffset == 0);
			case "font-style": return (_fontstyle == UI.FontStyle.None);
			case "transform": return (_transform == new UI.PanelTransform());
			case "text-transform": return (_texttransform == UI.TextTransform.None);
			case "transform-origin-x": return (_transformoriginx == Length.Percent( 50 ).Value);
			case "transform-origin-y": return (_transformoriginy == Length.Percent( 50 ).Value);
			case "letter-spacing": return (_letterspacing == Length.Percent( 0 ).Value);
			case "line-height": return (_lineheight == Length.Percent( 100 ).Value);
			case "word-spacing": return (_wordspacing == Length.Percent( 0 ).Value);
			case "white-space": return (_whitespace == UI.WhiteSpace.Normal);
			case "z-index": return (_zindex == 0);
			case "order": return (_order == 0);
			case "sound-in": return (_soundin == "");
			case "sound-out": return (_soundout == "");
			case "backdrop-filter-blur": return (_backdropfilterblur == 0);
			case "backdrop-filter-brightness": return (_backdropfilterbrightness == 1);
			case "backdrop-filter-contrast": return (_backdropfiltercontrast == 1);
			case "backdrop-filter-saturate": return (_backdropfiltersaturate == 1);
			case "backdrop-filter-sepia": return (_backdropfiltersepia == 0);
			case "backdrop-filter-invert": return (_backdropfilterinvert == 0);
			case "backdrop-filter-hue-rotate": return (_backdropfilterhuerotate == 0);
			case "filter-blur": return (_filterblur == 0);
			case "filter-saturate": return (_filtersaturate == 1);
			case "filter-sepia": return (_filtersepia == 0);
			case "filter-brightness": return (_filterbrightness == 1);
			case "filter-hue-rotate": return (_filterhuerotate == 0);
			case "filter-invert": return (_filterinvert == 0);
			case "filter-contrast": return (_filtercontrast == 1);
			case "filter-tint": return (_filtertint == Color.White);
			case "filter-border-width": return (_filterborderwidth == 0);
			case "filter-border-color": return (_filterbordercolor == Color.White);
			case "mask-mode": return (_maskmode == UI.MaskMode.MatchSource);
			case "mask-repeat": return (_maskrepeat == UI.BackgroundRepeat.Repeat);
			case "mask-size-x": return (_masksizex == Length.Undefined);
			case "mask-size-y": return (_masksizey == Length.Undefined);
			case "mask-position-x": return (_maskpositionx == Length.Percent( 0 ).Value);
			case "mask-position-y": return (_maskpositiony == Length.Percent( 0 ).Value);
			case "mask-angle": return (_maskangle == 0);
			case "mask-scope": return (_maskscope == UI.MaskScope.Default);
			case "background-size-x": return (_backgroundsizex == Length.Undefined);
			case "background-size-y": return (_backgroundsizey == Length.Undefined);
			case "background-position-x": return (_backgroundpositionx == Length.Percent( 0 ).Value);
			case "background-position-y": return (_backgroundpositiony == Length.Percent( 0 ).Value);
			case "background-repeat": return (_backgroundrepeat == UI.BackgroundRepeat.Repeat);
			case "border-image-width-left": return (_borderimagewidthleft == 1);
			case "border-image-width-right": return (_borderimagewidthright == 1);
			case "border-image-width-top": return (_borderimagewidthtop == 1);
			case "border-image-width-bottom": return (_borderimagewidthbottom == 1);
			case "border-image-fill": return (_borderimagefill == UI.BorderImageFill.Unfilled);
			case "border-image-repeat": return (_borderimagerepeat == UI.BorderImageRepeat.Stretch);
			case "border-image-tint": return (_borderimagetint == Color.White);
			case "background-blend-mode": return (_backgroundblendmode == "normal");
			case "background-tint": return (_backgroundtint == Color.White);
			case "background-angle": return (_backgroundangle == 0);
			case "text-background-angle": return (_textbackgroundangle == 0);
			case "perspective-origin-x": return (_perspectiveoriginx == Length.Percent( 50 ).Value);
			case "perspective-origin-y": return (_perspectiveoriginy == Length.Percent( 50 ).Value);
			case "text-stroke-color": return (_textstrokecolor == Color.White);
			case "text-stroke-width": return (_textstrokewidth == 0);
			case "image-rendering": return (_imagerendering == UI.ImageRendering.Anisotropic);
			case "animation-delay": return (_animationdelay == 0);
			case "animation-direction": return (_animationdirection == "normal");
			case "animation-duration": return (_animationduration == 0);
			case "animation-fill-mode": return (_animationfillmode == "none");
			case "animation-iteration-count": return (_animationiterationcount == 1);
			case "animation-name": return (_animationname == "none");
			case "animation-play-state": return (_animationplaystate == "running");
			case "animation-timing-function": return (_animationtimingfunction == "ease");
			case "font-smooth": return (_fontsmooth == UI.FontSmooth.Auto);
			case "object-fit": return (_objectfit == UI.ObjectFit.Cover);
		}
		
		throw new Exception( $"Invalid property name '{name}'" );
	}
}