Shape
Corners tell people what a surface is: a soft rectangle holds content, and a circle stands for a person or a track. Larger surfaces take larger corners, and lines appear only where space cannot separate.
Radius scale
--radius-sm4 px--radius-md6 px--radius-lg8 px--radius-xl12 px--radius-2xl16 px--radius-3xl24 px--radius-full9999 px
Take corners from this scale. Small elements take the small steps and large surfaces the large ones, so a corner looks equally soft at any size.
Which corner goes where
Match the radius to the component, not to the screen it sits on. Controls that stand side by side at one height share a radius, so a field and its button line up.
- Checkbox, inline code
- 4 px
- --radius-sm
- Header navigation item, counter, controls under 36 px
- 6 px
- --radius-md
- Button, icon button, text field, select, menu row, tooltip
- 8 px
- --radius-lg
- Menu, popover, well
- 12 px
- --radius-xl
- Card, dialog, sheet
- 16 px
- --radius-2xl
- Navigation rail
- 24 px
- --radius-3xl
- Avatar, radio, switch, slider track, current row of a side navigation, quiet status
- full
- --radius-full
Corners inside corners
When a rounded shape sits inside another, subtract the padding from the outer radius to get the inner one. The two curves then run parallel and the gap between them stays even.
A menu with 12 px corners and 4 px of padding gives its rows 8 px corners. If the result drops below 4 px, a filled inner shape keeps 4 px. An image that runs to the edge of a card shares the card’s corners there and stays square where it meets the text.
Full radius
A full radius makes a circle or a capsule, and that shape means something: a person, a radio, the track of a switch or a slider.
A capsule holds text only as a quiet status or as the current row of a side navigation. A free-standing word in a capsule reads as a tag, and tags scattered around an interface add noise.
Square corners
Leave a corner square where a surface meets the edge of the window. A sheet on a phone rounds its top corners and runs square into the bottom edge, and a bar across the full width has no rounded corners at all.
Joined controls round only their outer corners. The segments of a segmented control and the halves of a split button meet with straight edges, so no gap opens between them. Cells of a table stay square.
Lines
A line separates only where space cannot. A box of content has no border: its fill sets it apart.
A line that only separates visually is hidden from screen readers. A menu separator is announced, since it groups items for everyone.
On paper and in forced colors, where fills disappear, cards and gray boxes gain a 1 px edge so they keep their shape.
- Table and list rule
- 1 px
- --border-rule
- Menu group separator
- 1 px, 4 px above and below
- --border-rule
- Edge between two panes
- 1 px
- --border-rule
- Focus ring
- 2 px, 2 px outside the element
- --focus-ring-width
- Glass ring in the dark theme
- 0.5 px
- --glass-ring-raised
Permitted and not permitted
Permitted
Radii from the scale, by component
Use the step listed for the component.
An inner radius equal to the outer radius minus the padding
Nested curves stay parallel.
A full radius on avatars, radios and switches
The shape stands for the thing.
Not permitted
A border around a card or a gray box
Its fill already separates it, and a line adds noise.
A free-standing word in a capsule
It reads as a tag.
A radius chosen by eye
Take the step named for the component. A shape inside another takes the outer radius less the padding.
Rounded corners against the window edge
A sliver of the page shows through at each corner.