snake_case → kebab-case attribute mapping

Targeted by e2e/attributes.spec.ts.

every snake_case attr below must appear kebab-cased on the rendered element
booleans render as explicit "true"/"false" strings, never bare