One-line: an inline message that stays until the condition changes — for transient confirmation use Toast.

```jsx
<Alert variant="warning">
  <TriangleAlertIcon aria-hidden="true" />
  <AlertTitle>Your calendar is disconnected</AlertTitle>
  <AlertDescription>New bookings will not check for conflicts.</AlertDescription>
  <AlertAction><Button size="sm" variant="outline">Reconnect</Button></AlertAction>
</Alert>
```

Status variants use a 4% tint and a 32% border of their hue — never a solid fill.

`AlertDescription` is `display: flex; flex-direction: column; gap: 10px`, so its children must be **block elements** — wrap prose in a `<p style={{margin:0}}>`. A bare inline run containing a `<code>` or `<a>` will silently split into one stacked flex item per fragment.
