# Styling on the page: flow, padding, margin, gap ## Decision **Keep the typed token object on the node; tag its fields with `x-style`; let on-page editors key off the tag.** Not a free-form `style` object on every node, and not per-node CSS: the k6n design system (`data/k6n/design.md`) already says *blocks own no outer margin, spacing comes from the parent layout, spacing values are tokens (`none xs sm md lg xl`) and never raw lengths*. The `layout` node is that primitive: `flow`, `columns`, `gap`, `padding(Top|Bottom)`, `margin(Top|Bottom)`, `align`, `justify`, `tone`, `border`, `reveal`, and `responsive.{mobile,tablet,desktop}`. The template turns those into `.k6n-gap-md` / `.k6n-p-lg` helper classes. So: | Option | Verdict | |---|---| | Generic `style: {…}` on every node | **No.** Every template would have to consume it, it re-opens raw CSS in class attributes, and it contradicts "blocks own no margin". | | `style-class` nodes (named CSS class, linked by edge) | **Keep, but not for on-page tweaks.** Shared by design (blast radius = every layout that links it) and emitted into `