New in CSS

Checked September 2026

Newer CSS worth asking an agent for by name. Support figures are the first stable version per engine, checked against release notes and Baseline in September 2026. Baseline features first, then the ones still behind a flag or in one engine.

Baseline

Container-aware card

Resize the wrapper, not the window.

Lets a component respond to the width of its own container instead of the viewport.

Chrome 105Edge 105Safari 16Firefox 110

Shipping

Style a parent by what it contains, no JS state class needed.

Chrome 105Edge 105Safari 15.4Firefox 121

Native nesting of rules inside rules, including `&` for the parent, media and container queries nested.

Chrome 120Edge 120Safari 17.2Firefox 117

Later layers win, whatever the specificity of the rule below.

Chrome 99Edge 99Safari 15.4Firefox 97

  • Starter

    Short blurb.

    Choose
  • Team plan

    Much longer description that pushes the button down, but only here.

    Choose
  • Enterprise

    Medium copy.

    Choose

A nested grid can adopt its parent's row or column tracks, so card titles, bodies and footers align.

Chrome 117Edge 117Safari 16Firefox 71

Mixes two colors in a chosen color space, so you can derive hover, tint and border colors from one brand.

Chrome 111Edge 111Safari 16.2Firefox 113

Perceptually uniform color spaces: equal steps in lightness look equal, and hue stays constant while you.

Chrome 111Edge 111Safari 15.4Firefox 113

Takes an existing color and rewrites its channels: `oklch(from var(--brand) calc(l + .2) c h)` makes a.

Chrome 119Edge 119Safari 16.4Firefox 128

Follows the OS theme.

Picks one of two colors depending on the element's `color-scheme`.

Chrome 123Edge 123Safari 17.5Firefox 120

Animated conic border

Gives a custom property a type, initial value and inheritance, which makes it animatable.

Chrome 85Edge 85Safari 16.4Firefox 128

A heading long enough to wrap awkwardly on narrow screens

Balances line lengths in short blocks of text (headings, captions) so you never get a single orphaned.

Chrome 114Edge 114Safari 17.5Firefox 121

Declarative popovers: any element with `popover` opens in the top layer via a button's `popovertarget`,.

Chrome 114Edge 114Safari 17Firefox 125

Saved. Click anywhere to dismiss.

Lets you transition from `display:none` and other discrete properties.

Chrome 117Edge 117Safari 17.5Firefox 129

Step 1 (done)

Step 2

Removes a subtree from focus, clicks and the accessibility tree in one attribute.

Chrome 102Edge 102Safari 15.5Firefox 112

Enter a valid email address.

Like `:valid`/`:invalid` but only after the user has interacted with the field, so a required field is.

Chrome 119Edge 119Safari 16.5Firefox 88

Recolors native checkboxes, radios, range sliders and progress bars to your brand color while keeping.

Chrome 93Edge 93Safari 15.4Firefox 92

Font size snaps to the 4px baseline grid as the viewport changes.

Math in CSS beyond calc(): snap a fluid value to a grid (`round(nearest, 1.2rem, 4px)`), wrap values.

Chrome 125Edge 125Safari 15.4Firefox 118

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Trig in CSS makes circular and radial layouts pure CSS: place N items on a ring with `cos()`/`sin()` and.

Chrome 111Edge 111Safari 15.4Firefox 108

Two animations on one property, added instead of replaced.

Chrome 112Edge 112Safari 16Firefox 115

Moves an element along a path (circle, inset, polygon, SVG path or `shape()`), auto-rotating it to face.

Chrome 116Edge 116Safari 16Firefox 122

Unprefixed `mask` lets you fade, cut and shape any element with gradients or images; combined masks.

Chrome 120Edge 120Safari 15.4Firefox 53

Frosted header

Applies blur/saturate/brightness to whatever is behind an element, the basis of frosted-glass headers,.

Chrome 76Edge 76Safari 18Firefox 103

Scroll me. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Standard scrollbar control: reserve the gutter so layout does not shift when a scrollbar appears, make.

Chrome 121Edge 121Safari 26.2Firefox 64

What is Baseline?

A signal that a feature works in all major browsers.

Is this free?

Yes, entirely.

Grouping `<details>` with the same `name` makes an exclusive accordion natively.

Chrome 131Edge 131Safari 18.4Firefox 144

Type-safe highlights work without changing the DOM. Highlights are cheap and fast.

Style arbitrary text ranges (search matches, spellcheck, code tokens) without wrapping them in spans,.

Chrome 105Edge 105Safari 17.2Firefox 140

Wrap a DOM change in `document.startViewTransition()` and the browser animates between the old and new.

Chrome 111Edge 111Safari 18Firefox 144

Details toggleBody text.

Matches `<details>`, `<dialog>`, `<select>` and date/color inputs while they are open, replacing.

Chrome 133Edge 133Safari 26.5Firefox 136

Query a container's custom property values: `@container style(--theme: dark)` styles children when the.

Chrome 111Edge 111Safari 18Firefox 151

Card title

Nested heading keeps its own style

Scopes rules to a subtree with an optional lower boundary ("donut scope"): `@scope (.card) to.

Chrome 118Edge 118Safari 17.4Firefox 146

Makes inputs, textareas and selects size themselves to their content, so a textarea grows as the user.

Chrome 123Edge 123Safari 26.2Firefox 152

YellowNavyOrange

Returns black or white, whichever contrasts more with the given color.

Chrome 147Edge 147Safari 26Firefox 146

Speech bubble with a shape() tail

A path syntax written in CSS units and math instead of SVG's unitless numbers, so clip shapes can be.

Chrome 135Edge 135Safari 18.4Firefox 148

  • One
  • Two
  • Three
  • Four
  • Five

Numeric functions that return an element's 1-based position among its siblings and the total count.

Chrome 138Edge 138Safari 26.2Firefox 154

Trims the extra space above cap height and below the baseline inside a line box, so text is optically.

Chrome 133Edge 133Safari 18.2Firefox 154

Anchored below, flips above near the bottom edge.

Tooltips and menus attach to their trigger and flip at the edge.

Chrome 125Edge 125Safari 26Firefox 147

`@container name { }` with no condition matches whenever a named container exists, which is a clean way.

Chrome 148Edge 148Safari 26.4Firefox 149

Icon sized to exactly one line.

`lh` is the element's line-height, `rlh` the root's, so spacing can be expressed in lines: icons that.

Chrome 109Edge 109Safari 16.4Firefox 120

Behind a flag or one engine

Confirm

Click outside or press Escape to dismiss.

Native modal dialogs have the right focus trapping, inertness of the page and Escape handling.

Chrome 134Edge 134Safari noFirefox 137

Scroll to reveal these.

One
Two
Three

Drives a keyframe animation by scroll position instead of time: reading progress bars, reveal-on-scroll,.

Chrome 115Edge 115Safari 26Firefox flag (158 nightly)

Opt a multi-page site into animated navigations with one at-rule in both pages; shared.

Chrome 126Edge 126Safari 18.2Firefox no

Pretty wrapping evaluates line breaks across the paragraph to avoid a single stranded word on the final line and to keep the right edge from looking ragged, which is what typographers do by hand.

Better paragraph wrapping: avoids orphan words, improves hyphenation and evens out rag on the whole.

Chrome 117Edge 117Safari 26Firefox no

Saves the draft (Ctrl+S)

A tooltip-class popover that does not close open `auto` popovers and closes when another hint opens.

Chrome 133Edge 133Safari noFirefox 149

Click outside to close.

Declares how a `<dialog>` may close: `any` (Escape, click outside, or programmatic), `closerequest`.

Chrome 134Edge 134Safari noFirefox 137

Scheme-aware gradient

`color-mix()` now takes any number of colors with weights, and `light-dark()` accepts images/gradients,.

Chrome 150Edge 150Safari noFirefox 150

Title

Paragraph with its own margins.

Removes the margins of the first and last children at the container's edges, so a card's padding stays.

Chrome 155 (upcoming)Edge 155 (upcoming)Safari 16.4Firefox no

This description is clamped to three lines. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.

Truncates a block to N lines with an ellipsis.

Chrome flagEdge flagSafari legacyFirefox flag

Typed OM box

A typed JavaScript API for CSS values: read `el.computedStyleMap().get('width')` as a `CSSUnitValue`.

Chrome 66Edge 66Safari 16.4Firefox flag

Plain variant keeps the base colour via revert-rule.

A cascade keyword that acts as if the current rule did not set the property, letting the next matching.

Chrome 148Edge 148Safari 27 betaFirefox 150

Animated open/close
Body that animates to its natural height in Chromium.

Opt in with `interpolate-size: allow-keywords` and you can transition `height: 0` to `height: auto` (or.

Chrome 129Edge 129Safari noFirefox no

squirclescoopnotchbevel

Changes what `border-radius` draws: `squircle` (iOS-style continuous curves), `scoop` (inward), `notch`.

Chrome 139Edge 139Safari noFirefox no

Inline conditions in a value: `if(style(--variant: primary): #2563eb; else: #e5e7eb)`.

Chrome 137Edge 137Safari TPFirefox no

Fluid heading via @function

Author-defined functions with typed parameters and a `result` descriptor, usable anywhere a value goes.

Chrome 139Edge 139Safari TPFirefox no

  • Slide 1
  • Slide 2
  • Slide 3

Pure-CSS carousels: a scroll-snap container grows previous/next buttons and a dot/tab navigation as.

Chrome 135Edge 135Safari noFirefox no

Sticky header

Scroll inside this box.

Style an element based on scroll state: a sticky header that gets a shadow when stuck, a snapped slide.

Chrome 133Edge 133Safari noFirefox no

Fits the width

Scales a heading's font size so the line exactly fills its container, the CSS answer to "fit text" JS plugins.

Chrome 150Edge 150Safari noFirefox no

Gradient border, rounded

Clips a background to the border box minus the padding box, so a gradient border is one declaration,.

Chrome 150Edge 150Safari noFirefox no

Draws rules inside grid/flex gaps with `column-rule` and `row-rule` (plus `*-rule-inset` and `-outset`),.

Chrome 149Edge 149Safari noFirefox no

`random(min, max, step)` yields a stable random value per page load (or per element with.

Chrome noEdge noSafari 26.2 / 26.0Firefox flag

A masonry-style layout where items flow into the shortest column lane, expressed with `display:.

Chrome flagEdge flagSafari 26.4Firefox flag

Opts a native `<select>` into fully stylable rendering: style the button, the dropdown.

Chrome 135Edge 135Safari 27 betaFirefox no

123456

`attr()` now works in any property and can parse the attribute as a type (`type(<length>)`,.

Chrome 133Edge 133Safari TPFirefox flag