# Cascade layers (@layer)

Estado: Baseline 2022 (Chrome 99, Safari 15.4, Firefox 97); disponible de forma generalizada.  
Fuente: https://developer.mozilla.org/en-US/docs/Web/CSS/@layer  
Página: https://designforai.dev/es/css/cascade-layers

Declara capas ordenadas de modo que las capas posteriores siempre ganan a las anteriores, sea cual sea la especificidad. Acaba con las guerras de especificidad entre resets, CSS de terceros y componentes: una sobrescritura con una sola clase le gana a un selector `#id` en una capa inferior.

## HTML

```html
<button class="fx-004" id="cta">Layered button</button>
```

## CSS

```css
@layer reset, vendor, components, overrides;
@layer vendor {
   #cta {
    background: #c0392b;
    color: #fff;
    border: 0;
    padding: 10px 18px
  }
}
@layer components {
   .fx-004 {
    background: #2563eb;
    border-radius: 8px;
    font: 600 15px system-ui
  }
}
@layer overrides {
   .fx-004 {
    background: #111
  }
}
.fx-004 :is(a,button,input,select,textarea):focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
```

Fallback: En la práctica no hace falta ninguno; todos los navegadores evergreen soportan capas. Los estilos sin capa ganan a todas las capas, así que mantén todo dentro de capas.

## Prompt

Organiza el CSS en cascade layers declaradas una sola vez al principio: `@layer reset, base, components, utilities, overrides;`. Pon el CSS de terceros o generado en una capa baja (`@layer vendor`), los componentes por encima y las utilidades al final para que ganen sin `!important`. Nunca dejes reglas fuera de capa salvo la propia declaración de orden `@layer`.
