What is Baseline now, and what is still coming
CSS is evolving faster than ever in 2026. Container Queries, Cascade Layers, @property, native nesting and :has() are Baseline and production ready. New features such as CSS Masonry, Anchor Positioning and Scroll-driven Animations are catching up toward production readiness. This article gives a structured overview.
Table of Contents
- 1. Interop 2025: What the Project Means for Developers
- 2. The Baseline Concept and How to Use It
- 3. Container Queries: Baseline and Practice
- 4. Cascade Layers (@layer) for CSS Architecture
- 5. @property: Typed Custom Properties
- 6. New Selectors: :has(), :is(), :where(), Nesting
- 7. Scroll-driven Animations and View Transitions
- 8. Feature Status 2026 at a Glance
- 9. CSS Architecture 2026: How It All Fits Together
- 10. Summary
- 11. FAQ
1. Interop 2025: What the Project Means for Developers
The Interop project was launched in 2021 as a response to decades of cross-browser inconsistencies. The browser makers Apple, Google, Microsoft and Mozilla agreed to prioritize a shared list of web features and implement them in a coordinated way. The result: the speed at which new CSS features go from idea to "stable in all browsers" has increased dramatically. For modern CSS features 2026 this means concretely: what was in the Interop 2024 program is Baseline today. What is in the Interop 2025 program will be Baseline in 2026.
The Interop priority list for 2025 includes, among other things: CSS Nesting improvements, anchor-based positioning, CSS Masonry, Scroll-driven Animations and improved Container Query support. Each of these features therefore has an official commitment from all major browser makers. That makes decisions about adopting new modern CSS features far more predictable: once a feature has Interop status, its support horizon is measurably short, and it is worth starting with progressive enhancement today.
For teams, Interop means in practice that it is no longer necessary to wait years until a CSS feature is "safe". With @supports-based fallbacks, you can use new modern CSS features 2026 right away in projects without affecting existing users. The investment in learning new features pays off faster, because the path to broad browser support is shorter.
2. The Baseline Concept and How to Use It
The "Baseline" concept was introduced by web.dev and the browser makers to clearly answer the question "Can I use this feature today?". A feature is considered "Baseline Newly Available" once it is available in the latest version of all four major browser engines (Blink/Chrome, Gecko/Firefox, WebKit/Safari, EdgeHTML/Chromium). "Baseline Widely Available" means the feature has been stable in all four engines for at least 30 months, which covers the majority of active browser versions.
For modern CSS features 2026 the following properties and selectors are Baseline Widely Available: Container Queries, Cascade Layers (@layer), :has(), :is(), :where(), CSS Nesting, @property, color-mix(), Logical Properties, aspect-ratio, gap in Flexbox, subgrid, @container style() (style queries) and text-wrap: balance. These features can be used without a fallback because no relevant browser share fails to support them.
3. Container Queries: Baseline and Practice
Container Queries are the single most important new layout feature of recent years and have been Baseline Widely Available since 2026. The concept: instead of reacting to the viewport width (media queries), Container Queries react to the width or height of the direct container element. A component's style changes based on the space the container has, not based on the overall page layout.
This fundamentally changes the architecture around modern CSS features. A card component can now be single column in a narrow sidebar layout and multi column in a wide content area, without knowing about media queries or the layout context at all. The component reacts to its own available space. That makes components truly reusable across arbitrary layout contexts, without the context needing to override the CSS.
Style queries, @container style(), are a powerful extension that has been Baseline since 2025. Instead of reacting to sizes, a style query reacts to the value of a custom property on the container. @container style(--variant: featured) { .card { background: #4a1d96; } }: the container gets --variant: featured set, and all children adapt automatically. This is component state management without JavaScript.
/* Modern CSS features 2026: Container Queries */
/* Define a containment context */
.card-container {
container-type: inline-size;
container-name: card;
}
/* Component responds to its own container width */
.card {
display: grid;
grid-template-columns: 1fr; /* stacked by default */
gap: 1rem;
padding: 1rem;
}
@container card (width >= 480px) {
.card {
grid-template-columns: auto 1fr; /* side-by-side when space allows */
}
}
/* Style Queries: react to custom property values */
.product-list {
container-type: style;
--layout: grid;
}
@container style(--layout: list) {
.product-card {
display: flex;
flex-direction: row;
gap: 1rem;
}
}
@container style(--layout: grid) {
.product-card {
display: grid;
grid-template-rows: auto 1fr auto;
}
}
4. Cascade Layers (@layer) for CSS Architecture
Cascade Layers (@layer) have been Baseline since 2022 and by 2026 have become the standard for professional CSS architecture. The concept: CSS rules are grouped into named layers. Layers have a defined hierarchy, and rules in a higher layer override rules in a lower layer, regardless of specificity. This solves the biggest problem when combining reset styles, framework styles and component styles: specificity conflicts.
The recommended layer architecture for modern CSS features 2026 projects: @layer reset, base, tokens, components, utilities, overrides. Reset styles have the lowest priority, utility classes the highest. A utility class always wins against a component rule, no matter how specific the component rule is. That makes the system predictable and maintainable, because priority is determined by the layer hierarchy, not by specificity.
5. @property: Typed Custom Properties
The CSS at-rule @property has been Baseline since 2024 and lets you declare custom properties with a type, an initial value and an inheritance strategy. Without @property, custom properties are always strings that the browser does not interpret: --color: blue is a string to the browser, not a color. With @property you can declare that --brand-color is a <color>, and the browser can use that information for animations and calculations.
The most important effect is animatability. Regular custom properties cannot be animated, because the browser does not know how to interpolate between two string values. With @property-typed properties the browser knows it is dealing with a color, a length or a number, and can interpolate between two values. That opens up new possibilities for CSS animations, such as animated gradients, animated custom-property-based color themes, or counting animations.
An important detail is the inherits field in @property. With inherits: false the property does not inherit to child elements, which is useful when you want to guarantee that every component has its own scope. With inherits: true the behavior matches normal custom properties. Combining @property with CSS animations and Cascade Layers is one of the most powerful patterns among modern CSS features 2026.
/* Modern CSS features 2026: @property and Cascade Layers */
/* Define cascade layer order */
@layer reset, base, tokens, components, utilities;
/* Typed Custom Properties with @property */
@property --brand-hue {
syntax: "<number>";
inherits: true;
initial-value: 262;
}
@property --brand-color {
syntax: "<color>";
inherits: true;
initial-value: hsl(262 83% 58%);
}
@property --progress {
syntax: "<percentage>";
inherits: false;
initial-value: 0%;
}
/* Animatable gradient using typed property */
@layer components {
.progress-ring {
--progress: 0%;
background: conic-gradient(
#7c3aed var(--progress),
#e2e8f0 var(--progress)
);
border-radius: 50%;
transition: --progress 0.4s ease;
}
/* JS sets: element.style.setProperty('--progress', '75%') */
}
@layer utilities {
/* Utilities always win, regardless of component specificity */
.text-purple { color: #7c3aed; }
.bg-violet { background: #ede9fe; }
}
6. New Selectors: :has(), :is(), :where(), Nesting
The modern CSS features 2026 catalog of selectors is now fully established as Baseline. :has(), the "parent selector" that was previously only possible with JavaScript, has been Baseline since 2023 and has fundamentally changed the way CSS selectors are written. figure:has(figcaption) selects figures that contain a figcaption. form:has(input:invalid) selects forms with invalid fields. These are structural conditions that used to always require JavaScript intervention.
Native CSS Nesting has been Baseline since 2024 and makes preprocessors like Sass obsolete for the nesting aspect. The syntax is nearly identical to Sass nesting, with the small difference that element selectors without & are not always interpreted correctly: .parent .child must be written as .parent { .child {} }, or with an explicit &: .parent { & .child {} }. The & variant is the safe choice for maximum browser compatibility.
/* Modern CSS features 2026: new selectors and nesting */
/* :has(), parent selector, Baseline since 2023 */
/* Style figure only when it contains a caption */
figure:has(figcaption) img {
border-radius: 0.5rem 0.5rem 0 0;
}
/* Style form when any field is invalid */
form:has(input:invalid) .submit-btn {
opacity: 0.5;
pointer-events: none;
}
/* Style nav when it contains an active link */
nav:has(a[aria-current="page"]) {
border-bottom: 2px solid #7c3aed;
}
/* Native CSS Nesting, Baseline 2024 */
.card {
padding: 1.5rem;
border-radius: 1rem;
background: white;
& .card-title {
font-size: 1.25rem;
font-weight: 700;
color: #1e1b4b;
}
&:hover {
box-shadow: 0 4px 24px rgba(124, 58, 237, 0.15);
}
&:has(.card-badge) {
padding-top: 2.5rem; /* extra space for absolute-positioned badge */
}
@media (width >= 768px) {
padding: 2rem;
}
}
7. Scroll-driven Animations and View Transitions
Scroll-driven Animations have been Baseline Newly Available in Chrome and Edge since 2024 and are closing in on Firefox support. The concept: CSS animations are driven not by time, but by the scroll position of a page or an element. animation-timeline: scroll() links an animation to the scroll position of the nearest scrollable ancestor. animation-timeline: view() reacts to how far an element is visible within the viewport. Both were previously only possible with a JavaScript IntersectionObserver and requestAnimationFrame.
The View Transitions API, document.startViewTransition() for JavaScript or @view-transition { navigation: auto; } for CSS, has been available in Chrome and Edge since 2024 and is also approaching Firefox Baseline. View Transitions enable smooth, animated transitions between page states that previously required frameworks such as GSAP, Framer Motion or React Transition Group. With a single CSS attribute, an entire SPA navigation can be animated with fade or slide transitions.
8. Feature Status 2026 at a Glance
The table below shows the status of important modern CSS features 2026 according to the Baseline framework. "Widely" means 30+ months in all major browsers, "Newly" means currently in all major browsers, "Experimental" means behind flags or only in certain browsers.
| Feature | Baseline Status (May 2026) | Production Use | Fallback Needed? |
|---|---|---|---|
| Container Queries | Widely Available | Yes, no fallback | No |
| Cascade Layers (@layer) | Widely Available | Yes, no fallback | No |
| :has() selector | Widely Available | Yes, no fallback | No |
| @property | Widely Available | Yes, no fallback | No |
| CSS Masonry | Experimental | Only with @supports fallback | Yes |
The Baseline framework makes decisions about adopting modern CSS features much simpler than before. Instead of manually reading "Can I Use" tables, there is a clear gradient: Widely Available means adopt immediately, Newly Available means adopt with confidence, Experimental means only with an @supports fallback. This significantly simplifies the CSS strategy in every project.
9. CSS Architecture 2026: How It All Fits Together
The modern CSS features 2026 combine into a coherent architecture system. Cascade Layers define the priority hierarchy. @property gives custom properties types and animatability. Container Queries make components context independent. :has(), :is() and :where() enable precise selectors without specificity issues. CSS Nesting keeps component rules organized. CSS Logical Properties make layouts writing-direction independent. CSS Intrinsic Sizing makes grid definitions content adaptive.
A modern CSS project in 2026 has a clear layer structure: @layer reset with :where() for all overridable base rules, @layer tokens for @property-declared design tokens, @layer components for nested component rules with Container Queries, and @layer utilities for atomic-CSS-style utilities. This structure clearly separates responsibilities and keeps the system maintainable for large teams.
The relationship between CSS and JavaScript has shifted through the modern CSS features 2026. Features such as Container Queries, :has() and Scroll-driven Animations replace use cases that previously required JavaScript. That reduces JavaScript dependencies, improves performance (CSS runs on the compositor thread, JavaScript blocks the main thread) and makes layouts more robust, because they work correctly without JavaScript execution.
/* Modern CSS features 2026: complete architecture example */
/* Layer order declaration */
@layer reset, base, tokens, components, utilities;
/* Typed design tokens */
@property --color-brand {
syntax: "<color>";
inherits: true;
initial-value: hsl(262 83% 58%);
}
@property --space-base {
syntax: "<length>";
inherits: true;
initial-value: 1rem;
}
/* Base layer with :where(), always overridable */
@layer base {
:where(*, *::before, *::after) { box-sizing: border-box; }
:where(body) { margin: 0; font-family: system-ui, sans-serif; }
:where(h1, h2, h3, h4) { line-height: 1.25; }
}
/* Component with Container Query and Nesting */
@layer components {
.article-card {
container-type: inline-size;
container-name: article-card;
& .card-inner {
display: grid;
grid-template-rows: auto 1fr auto;
padding: var(--space-base);
gap: calc(var(--space-base) * 0.75);
}
@container article-card (width >= 520px) {
& .card-inner {
grid-template-columns: 200px 1fr;
grid-template-rows: 1fr auto;
}
}
}
}
Mironsoft
Modern CSS architecture, Hyva themes and performant frontend systems
Is your CSS project up to 2026 standards?
We implement Container Queries, Cascade Layers, @property and :has() in existing projects and build new CSS architectures that use modern features from day one.
CSS Modernization
Integrating Cascade Layers, Container Queries and @property into existing projects
Architecture Design
Layer hierarchy, design tokens and component architecture for scalable projects
Hyva and Tailwind
Combining Tailwind v4 and modern CSS features optimally in Magento Hyva themes
10. Summary
Modern CSS features 2026 are no longer an outlook, but the present. Container Queries, Cascade Layers, @property, :has(), native nesting, Logical Properties and Intrinsic Sizing are Baseline Widely Available: production ready without a fallback, stable in all modern browsers. The Interop 2025 program ensures that CSS Masonry, Anchor Positioning and Scroll-driven Animations will reach Baseline status in the foreseeable future.
The practical consequence: CSS projects that today still rely exclusively on media queries, specificity management without layers, and JavaScript for structural queries will become increasingly costly to maintain. The modern CSS features 2026 solve these problems elegantly and with broad browser support. Getting started should proceed step by step, beginning with @layer, @property for design tokens, and Container Queries for the most important components.
Modern CSS Features 2026: The Essentials at a Glance
Baseline Widely Available
Container Queries, @layer, :has(), :is(), :where(), @property, CSS Nesting, Logical Properties, subgrid, text-wrap: balance, all usable without a fallback.
Interop 2025
CSS Masonry, Anchor Positioning, Scroll-driven Animations on the standardization path, @supports fallback today, Baseline status coming soon.
CSS Architecture 2026
@layer for priority hierarchy, @property for typed tokens, Container Queries for context-independent components, :has() for structural selectors.
CSS vs. JavaScript
Container Queries, :has() and Scroll-driven Animations replace JavaScript for many layout queries. CSS on the compositor thread means better performance.