# CSS Cascading and Inheritance Level 3 Implementation Report

Last updated 2020-08-25

The following new features were added in Level 3:

Feature | Gecko | Blink | WebKit | EdgeHTML
--- | --- | --- | --- | ---
`all` shorthand | 27+ | 37+ | 525+ | ×
`initial` keyword | 19+ | 28+ | 532+ | 12+
`unset` keyword | 27+ | 41+ | 601.5+ | 13+

Version data sourced from caniuse.com and Wikipedia

The following module integrations were defined in Level 3:

Feature | Gecko | Blink | WebKit | EdgeHTML
--- | --- | --- | --- | ---
Media Queries + @import | ○ | ○ | ○ | ○
Animations + Cascade | ○ | ○ | × | ?
Transitions + Cascade | ○ | ○ | ○ | ○

## Detailed Testing

Tables below include Gecko, Blink, and WebKit results for Level 3 features.

Test | Interop? | Results | Live
--- | --- | --- | ---
`all` Shorthand
`all` does not set `direction` or `unicode-bidi` | ○ | 3/3 Pass | Test
`all` does set `display` | ○ | 3/3 Pass | Test
`all: inherit` is overridden by subsequent declarations | ○ | 3/3 Pass | Test
`all: initial` is overridden by subsequent declarations | ○ | 3/3 Pass | Test
`all: unset` is overridden by subsequent declarations | ○ | 3/3 Pass | Test
`initial` Keyword
`initial` sets inherited and uninherited properties to their initial value | ○ | 3/3 Pass | Test
`unset` Keyword
`unset` sets inherited properties to inherit, and uninherited properties to their initial value | ○ | 3/3 Pass | Test
`unset` sets uninherited properties to their initial value despite UA style sheet declarations to the contrary | ○ | 3/3 Pass | Test
Media Queries + @import Integration
`@import` rules with simple media queries are supported | ○ | 3/3 Pass | Test
Animations + Cascade Integration
Author non-`!important` is overridden by animation | ○ | 3/3 Pass | Test
Author `!important` overrides animation | △ | 2/3 Pass | Test
`!important` is invalid in `@keyframes` | ○ | 3/3 Pass | Test
Transitions + Cascade Integration
Transitions work across importance levels | ○ | 3/3 Pass | Test

## Untested

The following test could be written in theory, but would require special configuration of the user agent:

- Transitions work across `!important` levels of user and user-agent origins.

The following tests could be written in theory, but correct behavior is implied by passing the CSS2 user-stylesheet tests together with the Level 3 tests:

- User and user-agent non-`!important` are overridden by animations
- User and user-agent `!important` overrides animations