Full bleed
A page-level rule runs edge to edge. line
Structure in Inline is drawn, not cast. One hairline weight carries every in-flow boundary, three quiet neutrals color the lines, and 2px belongs only to the yellow selection language.
Three steps cover every line in the product. Hairline is the default boundary; emphasis never outlines a surface for importance.
border.width.none · 0px
Spacing or a surface change carries the boundary
border.width.hairline · 1px
Default for cards, inputs, dividers, tables, menus
border.width.emphasis · 2px
Selection language only, always a yellow step
The hovered question card border moves from line to ink-300, the active one to ink-400, and both stay 1px. Nothing in the product thickens on hover or selection.
--inline-border-w-none: 0px;
--inline-border-w-hairline: 1px;
--inline-border-w-emphasis: 2px;
Three neutrals cover every hairline: two decorative grays hint at structure, and border-strong serves boundaries a student must find. The draft name card from the compose flow carries all three.
line · #DFE0E2line-soft · #ECEDEAborder-strong · #707B8D| Token | Hex | Use | Contrast on paper |
|---|---|---|---|
line | #DFE0E2 | Card and component boundaries on paper | Decorative, below 3:1 |
line-soft | #ECEDEA | Internal rules, table rows, dividers inside a bordered surface | Decorative, below 3:1 |
border-strong | #707B8D | Input boundary when 3:1 is required | 3.95:1, UI pass |
A rule's reach tells the reader what it separates. Page regions get full-bleed rules, card rows get inset rules, and tables mix both.
A page-level rule runs edge to edge. line
Card rows divide at the content padding. line-soft
| Draft | Questions |
|---|---|
| Draft 3 | 4 |
| Draft 2 | 6 |
Header rule line; body rows line-soft; none after the last row.
Spacing rule 8 asks whitespace to carry the boundary first. A rule appears only when space is not enough, and two hairlines never stack.
A 2px stroke is a Butter Yellow step that answers where the student is and what is selected, with one neutral exception: the progress rail's current-step ring, which marks position. Each stroke has one fixed recipe, shown here at product scale.
The debate turned on civic memory.
Active passage brand-200 · inset 0 −2px brand-700The callout accent is a 2px brand-600 left border, the only 2px line that marks content rather than selection.
Dashed has exactly one job: the empty region that invites a draft. Dotted never ships.
border-strong.Which sentence carries your main claim?
The line vocabulary stays small so every border keeps a readable job.
line; shadow and fill never substitute for a border.line boundary that contains them.