Card.
A container that groups one subject and, usually, one way into it. Built mobile first for the field apps, and on web it can also carry a selected state. The card sits on the surface layer, so everything about its fill, border and shadow comes from Shadow & elevation rather than from anything card specific.
Anatomy and spacing
Every part below the media is optional except the title. The gaps are fixed, so a card with no subtitle closes up rather than leaving a hole.
Hover or focus a row to see that part highlighted on the card above.
270px Media4:3, object-fit cover. Flush to the card edge, with the gradient foot over it.24px Overflow24 × 24, white. Optional. Top right of the media, on the gradient. Holds the actions that are not the main one.28px Title/Medium SemiBold, 20/28TitleThe only part that is never optional.24px Body/Large Regular, 16/24SubtitleMetadata rather than a second title.22px 12/16 SemiBold, pill radiusBadgesStatus. The badge and the action should agree with each other.24px Body/Large Regular, 16/24BodyClamped. If it needs more than three lines the card is the wrong container.38px One primary button, 38px tallActionOne only. A second button means the card is doing two jobs.Spacing
Three rules, two values. The padding is one value on all four edges, gaps tighten between related lines and open between groups. That is the whole spacing of the card.
Card padding is 16px all round the content. Small cards drop to 8px.
Media and the gradient foot
Media is always 4:3 and cropped to cover. A gradient sits over it so the overflow control and anything on the image stay legible whatever the photograph does.
.card-media {
aspect-ratio: 4 / 3;
object-fit: cover;
}
.gradient-overlay {
position: absolute;
inset: auto 0 0 0;
width: 100%;
height: 100%;
background: linear-gradient(
to bottom,
rgba(0, 0, 0, 0) 60%,
rgba(0, 0, 0, 1) 100%
);
pointer-events: none;
}pointer-events: none matters: without it the overlay swallows the tap that should reach the card. And the ramp only starts at the 60% mark, where white text is 3.95:1. Keep text and controls below it, and keep them large. Small text high on a photograph has no contrast guarantee at all.
Padding is 16px all round the content. Small cards drop to 8px, because at 175px wide 16 on each side leaves too little for a title.
Size
Three widths. The media stays 4:3 at every one, so the card scales without the image recomposing.
Slots and order
There are no card styles. There are slots, each one optional except the title, in an order that never changes. That answers the only question a card ever raises: not which style to pick, but where a thing goes.
The order is fixed. Badges go below the subtitle and above the body, always. There is no card where badges sit above the title.
Only the title is required. Everything else is on or off, and the gaps close rather than leaving a hole.
The control positions are not interchangeable. Overflow sits on the media, top right. An icon button can sit on the media, top left, or on the title row, right. Each position means something different.
One of each. One action, one overflow, one icon button. A second button in a card is a sign the card is doing two jobs.
Media is a slot, not a type. A card with no media is just media off, which is what used to be called the Text style.
The container
Nothing here is a card decision. It is the surface layer, applied.
layers/surfacelayers/outline variant Shadow/Surfaceborder-radius-largeMedia
Three kinds of media, and the option of none. Files and folders take an icon on a flat fill rather than a photograph, so a list of documents does not pretend to have imagery.
States
Mobile has two: resting and pressed. Web adds hover, focus and selected. None of them change the shadow, because elevation means height, not interaction.
Do & Don't
Four decisions that come up every time someone builds one.
