<%# Pagination footer: rows-per-page (GET form) + page numbers. Query-param driven, zero-JS. Mirrors html-css-foundation markup; page items are , inert ones (current/ellipsis/disabled) aren't. Config (all optional; never throws): label? nav aria-label (default "Pagination") summary? { from, to, total } → "from–to of total" rows? { name, value?, options, label?, submitLabel?, action?, hidden? } rows-per-page form options: (number | { value, label })[]; hidden: { name, value }[] carries list state prev?, next? { href? } page step; omit href ⇒ disabled pages? { label, href?, current?, ellipsis? }[] %><% const label = locals.label || "Pagination"; const summary = locals.summary; const rows = locals.rows; const prev = locals.prev; const next = locals.next; const pages = locals.pages || []; const eq = (a, b) => String(a ?? "") === String(b); -%>