Layout
Geometry: the box model, normal flow, flexbox, grid, positioning, intrinsic sizing, overflow — and the read-write-read pattern that forces the browser to compute it all again.
Every element is four nested edges — content, padding, border, margin — plus a sizing mode that decides which of them `width` is actually describing.
What the browser already does before you choose a layout mode: block and inline formatting, margins that merge, and the moment a box becomes a scroll container.
A distribution algorithm, not a property list: base sizes, free space, grow and shrink along the main axis, alignment along the cross axis.
The container declares tracks and lines; items are placed into the cells between them. Rows can finally align to columns, because the layout — not the content — owns the sizes.
Taking a box out of flow: which ancestor it is positioned against, and why `z-index: 9999` still loses to a header with `z-index: 1`.
What a box wants to be when nobody tells it: min-content, max-content, fit-content — and the `min-width: auto` rule that makes flex and grid items overflow.
Read a layout property, write a style, read again: each read forces the browser to recompute the geometry you just invalidated, synchronously, inside your loop.