/* Css documentation is copy/pasted from mozilla mdn web docs */ module Types = Css_AtomicTypes type rule type animationName module type MakeResult = { type styleEncoding type renderer let insertRule: (. string) => unit let renderRule: (. renderer, string) => unit let global: (. string, array) => unit let renderGlobal: (. renderer, string, array) => unit let style: (. array) => styleEncoding let merge: (. array) => styleEncoding let merge2: (. styleEncoding, styleEncoding) => styleEncoding let merge3: (. styleEncoding, styleEncoding, styleEncoding) => styleEncoding let merge4: (. styleEncoding, styleEncoding, styleEncoding, styleEncoding) => styleEncoding let keyframes: (. array<(int, array)>) => animationName let renderKeyframes: (. renderer, array<(int, array)>) => animationName } module Make: (C: Css_Core.CssImplementationIntf) => (MakeResult with type styleEncoding := C.styleEncoding and type renderer := C.renderer) let toJson: array => Js.Json.t let important: rule => rule let label: string => rule module Shadow: { type value<'a> type box type text type t<'a> = [#shadow(value<'a>) | #none] let box: ( ~x: Types.Length.t=?, ~y: Types.Length.t=?, ~blur: Types.Length.t=?, ~spread: Types.Length.t=?, ~inset: bool=?, [< Types.Color.t | Types.Var.t], ) => [> t] let text: ( ~x: Types.Length.t=?, ~y: Types.Length.t=?, ~blur: Types.Length.t=?, [< Types.Color.t | Types.Var.t], ) => [> t] let toString: t<'a> => string } module Calc: { let \"-": ( Types.PercentageLengthCalc.t, Types.PercentageLengthCalc.t, ) => [> Types.PercentageLengthCalc.t] let \"+": ( Types.PercentageLengthCalc.t, Types.PercentageLengthCalc.t, ) => [> Types.PercentageLengthCalc.t] let \"*": (Types.PercentageLengthCalc.t, float) => [> Types.PercentageLengthCalc.t] let \"/": (Types.PercentageLengthCalc.t, float) => [> Types.PercentageLengthCalc.t] } /* ******** Properties ********** */ /* If nothing works, use this (unsafe) escape hatch */ let unsafe: (string, string) => rule /** The CSS align-content property sets the distribution of space between and around content items along a flexbox's cross-axis or a grid's block axis. */ let alignContent: [< | Types.AlignContent.t | Types.NormalAlignment.t | Types.BaselineAlignment.t | Types.DistributedAlignment.t | Types.Var.t | Types.Cascading.t ] => rule /** The CSS align-items property sets the align-self value on all direct children as a group. In Flexbox, it controls the alignment of items on the Cross Axis. In Grid Layout, it controls the alignment of items on the Block Axis within their grid area. */ let alignItems: [< | Types.AlignItems.t | Types.PositionalAlignment.t | Types.BaselineAlignment.t | Types.Var.t | Types.Cascading.t ] => rule /** The align-self CSS property overrides a grid or flex item's align-items value. In Grid, it aligns the item inside the grid area. In Flexbox, it aligns the item on the cross axis. */ let alignSelf: [< | Types.AlignSelf.t | Types.PositionalAlignment.t | Types.BaselineAlignment.t | Types.Var.t | Types.Cascading.t ] => rule /** The backdrop-filter CSS property lets you apply graphical effects such as blurring or color shifting to the area behind an element. Because it applies to everything behind the element, to see the effect you must make the element or its background at least partially transparent. */ let backdropFilter: array => rule /* Warning: experimental */ let backfaceVisibility: [< Types.BackfaceVisibility.t | Types.Var.t | Types.Cascading.t] => rule /** The background-attachment CSS property sets whether a background image's position is fixed within the viewport, or scrolls with its containing block. */ let backgroundAttachment: [< Types.BackgroundAttachment.t | Types.Var.t | Types.Cascading.t] => rule /** The background-color CSS property sets the background color of an element. */ let backgroundColor: [< Types.Color.t | Types.Var.t] => rule /** The background-clip CSS property sets whether an element's background extends underneath its border box, padding box, or content box. */ let backgroundClip: [< Types.BackgroundClip.t | Types.Var.t | Types.Cascading.t] => rule /** The background-image CSS property sets one or more background images on an element. */ let backgroundImage: [< Types.BackgroundImage.t | Types.Url.t | Types.Gradient.t<'gradient>] => rule /** The mask-image CSS property sets the image that is used as mask layer for an element. By default this means the alpha channel of the mask image will be multiplied with the alpha channel of the element. This can be controlled with the mask-mode property. */ let maskImage: [< Types.MaskImage.t | Types.Url.t | Types.Gradient.t<'gradient>] => rule /** The background-origin CSS property sets the background's origin: from the border start, inside the border, or inside the padding. */ let backgroundOrigin: [< Types.BackgroundClip.t | Types.Var.t | Types.Cascading.t] => rule /** The background-position CSS property sets the initial position for each background image. The position is relative to the position layer set by background-origin. */ let backgroundPosition: [< | Types.BackgroundPosition.t | #hv( [Types.BackgroundPosition.X.t | Types.Length.t], [Types.BackgroundPosition.Y.t | Types.Length.t], ) | Types.Length.t | Types.Var.t | Types.Cascading.t ] => rule let backgroundPositions: array< [< | Types.BackgroundPosition.t | #hv( [Types.BackgroundPosition.X.t | Types.Length.t], [Types.BackgroundPosition.Y.t | Types.Length.t], ) | Types.Length.t | Types.Var.t | Types.Cascading.t ], > => rule let backgroundPosition4: ( ~x: Types.BackgroundPosition.X.t, ~offsetX: Types.Length.t, ~y: Types.BackgroundPosition.Y.t, ~offsetY: Types.Length.t, ) => rule /** The mask-position CSS property sets the initial position, relative to the mask position layer set by mask-origin, for each defined mask image. */ let maskPosition: [< | Types.MaskPosition.t | #hv([Types.MaskPosition.X.t | Types.Length.t], [Types.MaskPosition.Y.t | Types.Length.t]) | Types.Length.t | Types.Var.t | Types.Cascading.t ] => rule let maskPositions: array< [< | Types.MaskPosition.t | #hv([Types.MaskPosition.X.t | Types.Length.t], [Types.MaskPosition.Y.t | Types.Length.t]) | Types.Length.t | Types.Var.t | Types.Cascading.t ], > => rule /** The background-repeat CSS property sets how background images are repeated. A background image can be repeated along the horizontal and vertical axes, or not repeated at all. */ let backgroundRepeat: [< | Types.BackgroundRepeat.t | #hv(Types.BackgroundRepeat.horizontal, Types.BackgroundRepeat.vertical) | Types.Var.t | Types.Cascading.t ] => rule /** The border-bottom shorthand CSS property sets an element's bottom border. It sets the values of border-bottom-width, border-bottom-style and border-bottom-color. */ let borderBottom: ( Types.Length.t, [< Types.BorderStyle.t | Types.Var.t | Types.Cascading.t], [< Types.Color.t | Types.Var.t], ) => rule /** The border-bottom-color CSS property sets the color of an element's bottom border. It can also be set with the shorthand CSS properties border-color or border-bottom. */ let borderBottomColor: [< Types.Color.t | Types.Var.t] => rule /** The border-bottom-left-radius CSS property rounds the bottom-left corner of an element. */ let borderBottomLeftRadius: Types.Length.t => rule /** The border-bottom-right-radius CSS property rounds the bottom-right corner of an element. */ let borderBottomRightRadius: Types.Length.t => rule /** The border-bottom-style CSS property sets the line style of an element's bottom border. */ let borderBottomStyle: [< Types.BorderStyle.t | Types.Var.t | Types.Cascading.t] => rule /** The border-bottom-width CSS property sets the width of the bottom border of an element. */ let borderBottomWidth: Types.Length.t => rule /** The border-collapse CSS property sets whether cells inside a have shared or separate borders. */ let borderCollapse: [< Types.BorderCollapse.t | Types.Var.t | Types.Cascading.t] => rule /** The border-color shorthand CSS property sets the color of an element's border. */ let borderColor: [< Types.Color.t | Types.Var.t] => rule /** The border-left shorthand CSS property set an element's left border. */ let borderLeft: ( Types.Length.t, [< Types.BorderStyle.t | Types.Var.t | Types.Cascading.t], [< Types.Color.t | Types.Var.t], ) => rule let borderLeftColor: [< Types.Color.t | Types.Var.t] => rule let borderLeftStyle: [< Types.BorderStyle.t | Types.Var.t | Types.Cascading.t] => rule let borderLeftWidth: Types.Length.t => rule let borderRight: ( Types.Length.t, [< Types.BorderStyle.t | Types.Var.t | Types.Cascading.t], [< Types.Color.t | Types.Var.t], ) => rule let borderRightColor: [< Types.Color.t | Types.Var.t] => rule let borderRightStyle: [< Types.BorderStyle.t | Types.Var.t | Types.Cascading.t] => rule let borderRightWidth: Types.Length.t => rule let borderRadius: Types.Length.t => rule let borderRadius4: ( ~topLeft: Types.Length.t, ~topRight: Types.Length.t, ~bottomLeft: Types.Length.t, ~bottomRight: Types.Length.t, ) => rule let borderSpacing: Types.Length.t => rule /** The border-style shorthand CSS property sets the line style for all four sides of an element's border. */ let borderStyle: [< Types.BorderStyle.t | Types.Var.t | Types.Cascading.t] => rule let borderTopColor: [< Types.Color.t | Types.Var.t] => rule let borderTopLeftRadius: Types.Length.t => rule let borderTopRightRadius: Types.Length.t => rule let borderTopStyle: [< Types.BorderStyle.t | Types.Var.t | Types.Cascading.t] => rule let borderTopWidth: Types.Length.t => rule let borderWidth: Types.Length.t => rule let bottom: [< #auto | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t] => rule /** The box-sizing CSS property sets how the total width and height of an element is calculated. */ let boxSizing: [< Types.BoxSizing.t | Types.Var.t | Types.Cascading.t] => rule let boxShadow: [< Shadow.t | Types.Var.t | Types.Cascading.t] => rule let boxShadows: array<[Shadow.t]> => rule /** The clear CSS property sets whether an element must be moved below (cleared) floating elements that precede it. The clear property applies to floating and non-floating elements. */ let clear: [< Types.Clear.t | Types.Var.t | Types.Cascading.t] => rule /** The clip-path CSS property creates a clipping region that sets what part of an element should be shown. Parts that are inside the region are shown, while those outside are hidden. */ let clipPath: [< | Types.ClipPath.t | Types.Url.t | Types.GeometryBox.t | Types.Var.t | Types.Cascading.t ] => rule let color: [< Types.Color.t | Types.Var.t] => rule /** The column-count CSS property breaks an element's content into the specified number of columns. */ let columnCount: [< Types.ColumnCount.t | Types.Cascading.t] => rule let contentRule: [< | Types.Content.t | Types.Counter.t | Types.Counters.t | Types.Gradient.t<'gradient> | Types.Url.t | Types.Var.t | Types.Cascading.t ] => rule let contentRules: array< [< | Types.Content.t | Types.Counter.t | Types.Counters.t | Types.Gradient.t<'gradient> | Types.Url.t ], > => rule let counterIncrement: [< Types.CounterIncrement.t | Types.Var.t | Types.Cascading.t] => rule let countersIncrement: array<[< Types.CounterIncrement.t]> => rule let counterReset: [< Types.CounterReset.t | Types.Var.t | Types.Cascading.t] => rule let countersReset: array<[< Types.CounterReset.t]> => rule let counterSet: [< Types.CounterSet.t | Types.Var.t | Types.Cascading.t] => rule let countersSet: array<[< Types.CounterSet.t]> => rule let cursor: Types.Cursor.t => rule /** The direction CSS property sets the direction of text, table columns, and horizontal overflow. Use rtl for languages written from right to left (like Hebrew or Arabic), and ltr for those written from left to right (like English and most other languages). */ let direction: [< Types.Direction.t | Types.Var.t | Types.Cascading.t] => rule /** The display CSS property sets whether an element is treated as a block or inline element and the layout used for its children, such as grid or flex. */ let display: [< | Types.DisplayOutside.t | Types.DisplayInside.t | Types.DisplayListItem.t | Types.DisplayInternal.t | Types.DisplayBox.t | Types.DisplayLegacy.t | Types.Var.t | Types.Cascading.t ] => rule /** The flex CSS property sets how a flex item will grow or shrink to fit the space available in its flex container. It is a shorthand for flex-grow, flex-shrink, and flex-basis. */ let flex: [< Types.Flex.t | #num(float)] => rule /** The flex-basis CSS property sets the initial main size of a flex item. It sets the size of the content box unless otherwise set with box-sizing. */ let flexBasis: [< Types.FlexBasis.t | Types.PercentageLengthCalc.t] => rule /** The flex-direction CSS property sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed). */ let flexDirection: [< Types.FlexDirection.t | Types.Var.t | Types.Cascading.t] => rule let flexGrow: float => rule let flexShrink: float => rule /** The flex-wrap CSS property sets whether flex items are forced onto one line or can wrap onto multiple lines. If wrapping is allowed, it sets the direction that lines are stacked. */ let flexWrap: [< Types.FlexWrap.t | Types.Var.t | Types.Cascading.t] => rule /** The float CSS property places an element on the left or right side of its container, allowing text and inline elements to wrap around it. The element is removed from the normal flow of the page, though still remaining a part of the flow (in contrast to absolute positioning). */ let float: [< Types.Float.t | Types.Var.t | Types.Cascading.t] => rule /** The font-family CSS property specifies a prioritized list of one or more font family names and/or generic family names for the selected element. */ let fontFamily: [< Types.FontFamilyName.t | Types.Var.t | Types.Cascading.t] => rule let fontFamilies: array<[Types.FontFamilyName.t]> => rule /** The font-size CSS property sets the size of the font. This property is also used to compute the size of em, ex, and other relative units. */ let fontSize: [< Types.Length.t | Types.Var.t | Types.Cascading.t] => rule /** The font-style CSS property sets whether a font should be styled with a normal, italic, or oblique face from its font-family. */ let fontStyle: [< Types.FontStyle.t | Types.Var.t | Types.Cascading.t] => rule /** The font-variant CSS property is a shorthand for the longhand properties font-variant-caps, font-variant-numeric, font-variant-alternates, font-variant-ligatures, and font-variant-east-asian. You can also set the CSS Level 2 (Revision 1) values of font-variant, (that is, normal or small-caps), by using the font shorthand. */ let fontVariant: [< Types.FontVariant.t | Types.Var.t | Types.Cascading.t] => rule /** The font-weight CSS property sets the weight (or boldness) of the font. The weights available depend on the font-family you are using. */ let fontWeight: [< Types.FontWeight.t | Types.Var.t | Types.Cascading.t] => rule /** The grid-area CSS property is a shorthand property for grid-row-start, grid-column-start, grid-row-end and grid-column-end, specifying a grid item's size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the edges of its grid area. */ let gridArea: [< Types.GridArea.t | Types.Var.t | Types.Cascading.t] => rule let gridArea2: (Types.GridArea.t, Types.GridArea.t) => rule let gridArea3: (Types.GridArea.t, Types.GridArea.t, Types.GridArea.t) => rule let gridArea4: (Types.GridArea.t, Types.GridArea.t, Types.GridArea.t, Types.GridArea.t) => rule /** The grid-auto-flow CSS property controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid. */ let gridAutoFlow: [< Types.GridAutoFlow.t | Types.Var.t | Types.Cascading.t] => rule /** The grid-column CSS property is a shorthand property for grid-column-start and grid-column-end specifying a grid item's size and location within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start and inline-end edge of its grid area. */ let gridColumn: (int, int) => rule /** The grid-column-end CSS property specifies a grid item's end position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the block-end edge of its grid area. */ let gridColumnEnd: int => rule /** The column-gap CSS property sets the size of the gap (gutter) between an element's columns. */ let columnGap: [< | Types.ColumnGap.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** The scroll-behavior CSS property sets the behavior for a scrolling box when scrolling is triggered by the navigation or CSSOM scrolling APIs. */ let scrollBehavior: [< Types.ScrollBehavior.t | Types.Var.t | Types.Cascading.t] => rule /** The overscroll-behavior CSS property sets what a browser does when reaching the boundary of a scrolling area. */ let overscrollBehavior: [< Types.OverscrollBehavior.t | Types.Var.t | Types.Cascading.t] => rule /** The overflow-anchor CSS property provides a way to opt out of the browser's scroll anchoring behavior, which adjusts scroll position to minimize content shifts. Scroll anchoring behavior is enabled by default in any browser that supports it. Therefore, changing the value of this property is typically only required if you are experiencing problems with scroll anchoring in a document or part of a document and need to turn the behavior off. */ let overflowAnchor: [< Types.OverflowAnchor.t | Types.Var.t | Types.Cascading.t] => rule /** The column-width CSS property sets the ideal column width in a multi-column layout. The container will have as many columns as can fit without any of them having a width less than the column-width value. If the width of the container is narrower than the specified value, the single column's width will be smaller than the declared column width. */ let columnWidth: [< Types.ColumnWidth.t | Types.Length.t | Types.Var.t | Types.Cascading.t] => rule /** The caret-color CSS property sets the color of the insertion caret, the visible marker where the next character typed will be inserted. This is sometimes referred to as the text input cursor. The caret appears in elements such as or those with the contenteditable attribute. The caret is typically a thin vertical line that flashes to help make it more noticeable. By default, it is black, but its color can be altered with this property. */ let caretColor: [< Types.CaretColor.t | Types.Color.t | Types.Var.t | Types.Cascading.t] => rule /** This prefixed property is being replaced by column-gap. */ let gridColumnGap: [< | Types.ColumnGap.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** The grid-column-start CSS property specifies a grid item's start position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement. This start position defines the block-start edge of the grid area. */ let gridColumnStart: int => rule /** The gap CSS property sets the gaps (gutters) between rows and columns. It is a shorthand for row-gap and column-gap. */ let gap: [< | Types.Gap.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule let gap2: ( ~rowGap: [< | Types.Gap.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ], ~columnGap: [< | Types.Gap.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ], ) => rule /** deprecated, use gap */ let gridGap: [< | Types.Gap.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** The grid-row CSS property is a shorthand property for grid-row-start and grid-row-end specifying a grid item's size and location within the grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start and inline-end edge of its grid area. */ let gridRow: (int, int) => rule /** The grid-row-end CSS property specifies a grid item's end position within the grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-end edge of its grid area. */ let gridRowEnd: int => rule /** The row-gap CSS property sets the size of the gap (gutter) between an element's grid rows. */ let gridRowGap: [< Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t] => rule /** The row-gap CSS property sets the size of the gap (gutter) between an element's grid rows. */ let rowGap: [< | Types.RowGap.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** The grid-row-start CSS property specifies a grid item?s start position within the grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start edge of its grid area. */ let gridRowStart: int => rule /** The grid-template-areas CSS property specifies named grid areas. */ let gridTemplateAreas: [< Types.GridTemplateAreas.t | Types.Var.t | Types.Cascading.t] => rule /** The height CSS property specifies the height of an element. By default, the property defines the height of the content area. If box-sizing is set to border-box, however, it instead determines the height of the border area. */ let height: [< | Types.Height.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** The CSS justify-content property defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container. */ let justifyContent: [< | Types.PositionalAlignment.t | Types.NormalAlignment.t | Types.DistributedAlignment.t | Types.Var.t | Types.Cascading.t ] => rule /** The CSS justify-items property defines the default justify-self for all items of the box, giving them all a default way of justifying each box along the appropriate axis. */ let justifyItems: [< | Types.PositionalAlignment.t | Types.NormalAlignment.t | Types.BaselineAlignment.t | Types.OverflowAlignment.t | Types.LegacyAlignment.t | Types.Var.t | Types.Cascading.t ] => rule /** The CSS justify-self property sets the way a box is justified inside its alignment container along the appropriate axis. */ let justifySelf: [< | Types.JustifySelf.t | Types.PositionalAlignment.t | Types.BaselineAlignment.t | Types.Var.t | Types.Cascading.t ] => rule let left: [< #auto | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t] => rule /** The letter-spacing CSS property sets the spacing behavior between text characters */ let letterSpacing: [< | Types.LetterSpacing.t | Types.Length.t | Types.Var.t | Types.Cascading.t ] => rule /** The line-height CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element. On non-replaced inline elements, it specifies the height that is used to calculate line box height. */ let lineHeight: [< | Types.LineHeight.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** The list-style CSS property is a shorthand to set list style properties list-style-type, list-style-image, and list-style-position. */ let listStyle: ( Types.ListStyleType.t, Types.ListStylePosition.t, [< Types.ListStyleImage.t | Types.Url.t], ) => rule /** The list-style-image CSS property sets an image to be used as the list item marker. It is often more convenient to use the shorthand list-style. */ let listStyleImage: [< | Types.ListStyleImage.t | Types.Url.t | Types.Var.t | Types.Cascading.t ] => rule /** The list-style-type CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element. */ let listStyleType: [< Types.ListStyleType.t | Types.Var.t | Types.Cascading.t] => rule /** The list-style-position CSS property sets the position of the ::marker relative to a list item. */ let listStylePosition: [< Types.ListStylePosition.t | Types.Var.t | Types.Cascading.t] => rule let margin: [< Types.PercentageLengthCalc.t | Types.Margin.t] => rule let margin2: ( ~v: [< Types.PercentageLengthCalc.t | Types.Margin.t], ~h: [< Types.PercentageLengthCalc.t | Types.Margin.t], ) => rule let margin3: ( ~top: [< Types.PercentageLengthCalc.t | Types.Margin.t], ~h: [< Types.PercentageLengthCalc.t | Types.Margin.t], ~bottom: [< Types.PercentageLengthCalc.t | Types.Margin.t], ) => rule let margin4: ( ~top: [< Types.PercentageLengthCalc.t | Types.Margin.t], ~right: [< Types.PercentageLengthCalc.t | Types.Margin.t], ~bottom: [< Types.PercentageLengthCalc.t | Types.Margin.t], ~left: [< Types.PercentageLengthCalc.t | Types.Margin.t], ) => rule let marginLeft: [< | Types.PercentageLengthCalc.t | Types.Margin.t | Types.Var.t | Types.Cascading.t ] => rule let marginRight: [< | Types.PercentageLengthCalc.t | Types.Margin.t | Types.Var.t | Types.Cascading.t ] => rule let marginTop: [< | Types.PercentageLengthCalc.t | Types.Margin.t | Types.Var.t | Types.Cascading.t ] => rule let marginBottom: [< | Types.PercentageLengthCalc.t | Types.Margin.t | Types.Var.t | Types.Cascading.t ] => rule /** The max-height CSS property sets the maximum height of an element. It prevents the used value of the height property from becoming larger than the value specified for max-height. */ let maxHeight: [< | Types.Height.t | Types.MaxHeight.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** The max-width CSS property sets the maximum width of an element. It prevents the used value of the width property from becoming larger than the value specified by max-width. */ let maxWidth: [< | Types.Width.t | Types.MaxWidth.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** The min-height CSS property sets the minimum height of an element. It prevents the used value of the height property from becoming smaller than the value specified for min-height. */ let minHeight: [< | Types.Height.t | Types.MinHeight.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** The min-width CSS property sets the minimum width of an element. It prevents the used value of the width property from becoming smaller than the value specified for min-width. */ let minWidth: [< | Types.Width.t | Types.MinWidth.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** The object-fit CSS property sets how the content of a replaced element, such as an or
cells, rows, and columns. */ let tableLayout: [< Types.TableLayout.t | Types.Var.t | Types.Cascading.t] => rule /** The text-align CSS property sets the horizontal alignment of a block element or table-cell box. This means it works like vertical-align but in the horizontal direction. */ let textAlign: [< Types.TextAlign.t | Types.Var.t | Types.Cascading.t] => rule /** The text-decoration-color CSS property sets the color of decorations added to text by text-decoration-line. */ let textDecorationColor: [< Types.Color.t | Types.Var.t | Types.Cascading.t] => rule /** The text-decoration-line CSS property sets the kind of decoration that is used on text in an element, such as an underline or overline. */ let textDecorationLine: [< Types.TextDecorationLine.t | Types.Var.t | Types.Cascading.t] => rule /** The text-decoration-style CSS property sets the style of the lines specified by text-decoration-line. The style applies to all lines that are set with text-decoration-line. */ let textDecorationStyle: [< Types.TextDecorationStyle.t | Types.Var.t | Types.Cascading.t] => rule /** The text-indent CSS property sets the length of empty space (indentation) that is put before lines of text in a block. */ let textIndent: [< Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t] => rule /** The text-overflow CSS property sets how hidden overflow content is signaled to users. It can be clipped, display an ellipsis ('...'), or display a custom string. */ let textOverflow: [< Types.TextOverflow.t | Types.Var.t | Types.Cascading.t] => rule /** The text-shadow CSS property adds shadows to text. It accepts a comma-separated list of shadows to be applied to the text and any of its decorations. Each shadow is described by some combination of X and Y offsets from the element, blur radius, and color. */ let textShadow: [< Shadow.t | Types.Var.t | Types.Cascading.t] => rule let textShadows: array<[Shadow.t]> => rule /** The text-transform CSS property specifies how to capitalize an element's text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. */ let textTransform: [< Types.TextTransform.t | Types.Var.t | Types.Cascading.t] => rule let top: [< #auto | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t] => rule let transform: [< #none | Types.Transform.t] => rule let transforms: array => rule /** The transform-origin CSS property sets the origin for an element's transformations. */ let transformOrigin: (Types.Length.t, Types.Length.t) => rule let transformOrigin3d: (Types.Length.t, Types.Length.t, Types.Length.t) => rule let transitionDelay: Types.Time.t => rule let transitionDuration: Types.Time.t => rule let transitionProperty: string => rule let transformStyle: [< Types.TransformStyle.t | Types.Var.t | Types.Cascading.t] => rule let transitionTimingFunction: Types.TimingFunction.t => rule /** The user-select CSS property controls whether the user can select text. This doesn't have any effect on content loaded as chrome, except in textboxes. */ let userSelect: [< Types.UserSelect.t | Types.Var.t | Types.Cascading.t] => rule /** The vertical-align CSS property sets vertical alignment of an inline or table-cell box. */ let verticalAlign: [< | Types.VerticalAlign.t | Types.Length.t | Types.Var.t | Types.Cascading.t ] => rule /** The visibility CSS property shows or hides an element without changing the layout of a document. The property can also hide rows or columns in a
. */ let visibility: [< Types.Visibility.t | Types.Var.t | Types.Cascading.t] => rule /** The width CSS property sets an element's width. By default, it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area. */ let width: [< | Types.Width.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** The white-space CSS property sets how white space inside an element is handled. */ let whiteSpace: [< Types.WhiteSpace.t | Types.Var.t | Types.Cascading.t] => rule /** The word-break CSS property sets whether line breaks appear wherever the text would otherwise overflow its content box. */ let wordBreak: [< Types.WordBreak.t | Types.Var.t | Types.Cascading.t] => rule /** The word-spacing CSS property sets the length of space between words and between tags */ let wordSpacing: [< | Types.WordSpacing.t | Types.PercentageLengthCalc.t | Types.Var.t | Types.Cascading.t ] => rule /** see overflowWrap */ let wordWrap: [< Types.OverflowWrap.t | Types.Var.t | Types.Cascading.t] => rule /** The z-index CSS property sets the z-order of a positioned element and its descendants or flex items. Overlapping elements with a larger z-index cover those with a smaller one. */ let zIndex: int => rule /* ******* selectors ********* */ let selector: (. string, array) => rule let media: (. string, array) => rule /* Pseudo-classes selectors A CSS pseudo-class is a keyword added to a selector that specifies a special state of the selected element(s). */ /** The :active CSS pseudo-class represents an element (such as a button) that is being activated by the user. When using a mouse, "activation" typically starts when the user presses down the primary mouse button. */ let active: array => rule /** The :checked CSS pseudo-class selector represents any radio (), checkbox (), or option (