my reply was to Antonio: the good old edit widget has several input modes (including "enhanced text" or "HTML"). These modes determine, how OpenACS processes the user input. These modes allow the user to input markup (e.g. <strong>.... </strong> or <master>) which is influencing the rendering of the posting. In this message, i did not type '<', 's', 't', 'r', 'o', 'n', 'g', '>', but '&', 'l', 't', ';', 's', 't', 'r', 'o', 'n', 'g', '&', 'g', 't', ';' to the the text literally into the posting. When the text is input without escaping, it is interpreted by the browser; in the case of Antonio's posting, the markup was not shown at all. ....
If one enters a text with a HTML like markup in e.g. a rich-text widget, the literal text is automatically translated into proper markup.
Concerning "your" problem - which is not clearly described: If you want to add attributes to the HTML body element, do what Antonio said. If you want to tailor the login/register page (i am guessing based on the ".login" class) define a .tcl/.adp pair and specify it via the package parameter LoginTemplate for acs-subsite. In the .adp file, you can use the property "head" to define, whatever you need (see e.g. [1]) and/or you can use the template::head API [2] from the .tcl part to load extra .css or whatever.
[1] https://openacs.org/api-doc/content-page-view?source_p=1&path=/packages/acs-api-browser/www/proc-view.adp
[2] https://openacs.org/api-doc/procs-file-view?path=packages/acs-templating/tcl/head-procs.tcl